Cucumber For Appian

Overview

Test your Appian application within minutes with methods created specifically to operate within Appian applications and Tempo!

Common test case scenarios can be created for reusability throughout test suites. A CheatSheet.feature file that lists out all the supported methods and how to invoke them using the @Given, @When, @Then, @But, @And, and other Cucumber-supported annotation.

Key Features & Functionality

With Cucumber for Appian:

  • Test scripts don't need to be updated for upgrades to supported Appian versions
  • Appian design knowledge is not required to create test scripts
  • Test scripts are easily updated for new UI changes to a form or interface
  • All of the same methods that FitNesse For Appian currently supports are supported
  • Multiple browsers are supported (Chrome v. 64-66 and Firefox v. 53-62)
Anonymous
  • I am unable to access the underlying WebDriver instance from Appian fixtures (TempoFixture/SitesFixture) to perform custom JavaScript operations, which limits the ability to handle complex UI interactions that aren't covered by the standard Appian Selenium API methods.

    Framework Limitations: Cannot leverage Selenium's full JavaScript execution capabilities while maintaining Appian session consistency

    Environment:

    Appian Selenium API Version: 25.1
    Selenium Version: 4.1.2
    Test Framework: Cucumber with JUnit
    Browser: Chrome (latest)
    What I was Trying to Achieve:

    // Goal: Execute custom JavaScript while maintaining Appian session
    WebDriver driver = extractFromAppianFixture();
    JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
    jsExecutor.executeScript("arguments[0].click();", submitButton);

    // This fails - WebDriver extraction returns null
    SitesFixture sitesFixture = fixtureManager.getSitesFixture();
    WebDriver driver = extractWebDriverFromObject(sitesFixture); // Returns null

     Error Message:

     RuntimeException: Could not extract WebDriver from either fixture

      

    What I have Tried
    Reflection-based extraction from TempoFixture and SitesFixture - unsuccessful
    Public method access (getWebDriver()) - method doesn't exist
    Field-level access using various field names (driver, webDriver, seleniumDriver) - no accessible fields found

     

    Specific Use Cases Where This is Needed
    Custom Button Interactions: Buttons with complex CSS classes that standard clickOnButton() cannot locate
    Rich Text Editor Manipulation: TinyMCE editors requiring direct JavaScript interaction
    Dynamic Content Handling: Elements that appear/disappear based on JavaScript events
    Custom Validation: JavaScript-based form validation that needs to be triggered programmatically

    Will appreciate if any guidance or roadmap information regarding WebDriver accessibility in the Appian Selenium API framework. Or if there is any existing library that can help to achieve this without any customization

  • v25.2.0 Release Notes
    • IMPORTANT UPDATE: Cucumber for Appian is now available as an open-source repository! The repository can be found on Gitlab under "appian-oss/appian-selenium-api": gitlab.com/.../
    • Users of the libraries will find a few key benefits from this change:
    • Ability to contribute to the libraries
    • Immediate access to bug fixes and new functionality
    • Improved communication between other users and library maintainers by leveraging Gitlab issues.
    • Updates to the framework will be immediately available in the open source package registry. Users are encouraged to leverage this instead of the App Market as we do not plan to update the App Market listing for every patch.
  • Can we add our custom page classes and our own step definitions along with this framework, if so please guide on how to add the same. Thanks

  • too bad! I was using this one D:

  • v24.3.0 Release Notes
    •  Enhancements
    • Added built-in retry to click operation in case of element not interactable exception
    • Updated the milestone locator
  • Hello, There is no method mentioned in the cheatsheet which supports clicking on text within an interface. Only Verify text on interface is mentioned in the cheatsheet. Could you please add the method which supports clicking on text within an interface? Thank you.

  • v24.2.0 Release Notes
    • Enhancements
    • Update locator for site menu links
    • Created method which supports clicking on text within an interface.
    • This is particularly useful for nested cards such as tab layouts, but can also be used as a fallback when existing methods do not work.
    • This method is available for all Appian versions.
    • Click operation on Card layout will be performed on the left side of the element instead of the right. We are not expecting any impact on existing test cases.
  • v24.1.1 Release Notes
    • Bug Fixes
    • Reverted change to cards that changed indexes to certain elements

  • v24.1.1 Release Notes
    • Bug Fixes
    • Reverted change to cards that changed indexes to certain elements