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
Parents
  • 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

Comment
  • 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

Children
No Data