Automated Testing With FitNesse for Appian

FitNesse for Appian is a client side tool, built on top of FitNesse, that makes it easy to create automated tests on the Appian platform. This tool allows you to create test scripts in a easy to read wiki language that will be run by the system to interact with an Appian application as a human user.

FitNesse for Appian provides an Appian-specific wiki language within FitNesse that maps directly to actions that can be performed in Appian, such as:

  • Navigating the interface (News, Tasks, Records, Reports, Actions, Sites)
  • Starting actions and completing tasks
  • Validating content on record views or in news events
  • And much more... the complete list is available directly within the tool!

For more information about testing and development best practices when using FitNesse for Appian, visit the FitNesse for Appian Best Practices guide.

Requirements

  • Appian 22.2 and above
  • Java Runtime Environment 11
  • Chrome or Firefox browsers
    If using Chrome, we recommend using Chrome For Testing for a more consistent testing experience.

Setup

The zip file for the tool can be downloaded from the App Market Public Listings

  1. Unzip the contents into your root directory or preferred location (e.g. C:\)
  2. In a terminal window navigate to the folder extracted from the zip file (e.g. C:\fitnesse-for-appian). We will refer to this directory as TESTING_HOME throughout this documentation
    1. For PC, main commands will be:
      1. dir: used to show contents of current directory (folder)
      2. cd: used to change directory (open a folder), e.g. cd Documents would open the Documents folder. cd .. would go to the parent folder of current folder.
    2. For Mac/Linux,
      1. ls: used to show contents of a directory (folder)
      2. cd: used to change directory (open a folder), e.g. cd Documents would open the Documents folder. cd .. would go to the parent folder of current folder.
  3. Open the "custom.properties" file located in TESTING_HOME/configs and change:
    1. automated.testing.home to be TESTING_HOME (e.g. C:\FitNesseForAppian)
    2. download.directory to be a folder of your choosing
    3. chrome.driver.home to be TESTING_HOME/lib/drivers/chromedriver(.exe if using windows, -mac if using a mac, -linux if using UNIX)
    4. firefox.driver.home to be TESTING_HOME/lib/drivers/geckodriver(.exe if using windows, -mac if using a mac, -linux64 if using UNIX)
  4. Run start.bat if using windows, start-mac.sh for Mac, and start-unix.sh for UNIX to install and run FitNesse for Appian. Installation should take around 30 seconds and is complete when you see the message "Starting FitNesse on port: 8980". To stop FitNesse for Appian, invoke Ctrl+C in the terminal.

Running your first FitNesse test

  1. Start FitNesse if it isn't already running by running start.bat/start-mac.sh/start-unix.sh depending on your system
  2. Navigate to http://localhost:8980/FitNesseForAppian.Examples.TestExample
  3. Follow the configuration instructions marked by "Please follow the directions below to execute the test"
  4. Click Test at the top of the page

Developing custom tests

To try out the tool further, use the Appian application included in the combined files download (Automated Testing - 1x.x.zip) and import it into your corresponding version of Appian environment.

Navigate to the FitNesseForAppian Cheatsheet and make use of the supported methods to write your own test suite to run against the sample application! Be sure you are using methods for the environment you are testing. For example, if testing sites, use navigation methods that come from the "Sites Methods" scenario. Using methods from a different environment has the potential to break in future releases.

An example test suite run could look like this: 

By default, the tool collects usage metrics for analytics purposes. Set collect.metrics=false in the "metrics.properties" file to opt-out of metrics collection.

Features

Multiple browser support

  • Chrome (v64-66)
  • Firefox (v53-62)

Benefits

  • Test your Appian application within minutes of downloading the tool
  • Methods created specifically to operate within Appian applications and Tempo
  • Test scripts do not need to be updated for upgrades to supported Appian versions
  • Test scripts are written in a wiki language that is very easy to read and synthesize
  • Appian design knowledge is not required to create test scripts
  • Common case scenarios can be created for reusability throughout test suites
  • Isolate test steps into scenarios to perform Spec by Example tests
  • Test scripts are easily updated for new UI changes to a form or interface

Release Notes

August 2024 - Release 24.3

  • Enhancements
    • Added built-in retry to click operation in case of element not interactable exception.
    • Updated the milestone locator.

June 2024 - Release 24.2

  • Enhancements
    • Updated 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 don't 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're not expecting any impact on existing test cases.

March 2024 - Release 24.1

  • Enhancements
    • Support for Appian version 24.1
    • Adds support for collapsing/opening sidebars
    • ClickOnCard updated to support clicking on cards with complex content. For example, the method can now click on cards that have a component nested in multiple layouts within the card

November 2023 - Release 23.4

  • NOTE: Project has been updated to require Java 11 JRE
  • Enhancements
    • Support for Appian version 23.4
    • Add support for the side navigation menu in sites
    • Add support for downloading charts
    • Add support for buttons configured with custom colors
  • Bug Fixes
    • Honor the download directory given in custom.properties for Remote Drivers
    • Update dropdowns for versions greater than 23.3 to ignore the aria-checked value
    • Fixed Populate Record Type Data Range User Filter method

August 2023 - Release 23.3

  • Enhancements
    • Supports Appian version 23.3
    • Added functionality to interact with new site group headers
    • Updated to Selenium 4.11.0
    • Add support for Date Range user filters in Record Types
    • Update checkboxes to support CARD style for 23.3 and later Appian versions

June 2023 - Release 23.2.1

  • NOTE: Updates to site navigation in the 23.2 product breaks the use of the "click on menu" method in site environments. "click on menu", and other navigation methods from Tempo, are guaranteed to work only in Tempo environments. Use the "click on site page" method instead
  • Bug Fixes
    • Update pickers to recognize selections with links (e.g. Record Pickers)

June 2023 - Release 23.2

  • Enhancements
    • Supports Appian version 23.2
    • NOTE: Updates to site navigation in the 23.2 product breaks the use of the "click on menu" method in site environments. "click on menu", and other navigation methods from Tempo, are guaranteed to work only in Tempo environments. Use the "click on site page" method instead

May 2023 - Release 23.1.2

  • Bug Fixes
    • Fixes an issue where Dropdowns with Search were not working
    • Fixes an Issue where verifyText did not work on multi-node components

February 2023 - Release 23.1

  • Enhancements
    • Supports Appian version 23.1
    • Updated locator for Dropdown class
  • Bug Fixes
    • Update CVEs
    • Update scripts (start.bat, start-mac.sh, start-unix.sh, runFitNesseTest.sh) toreference the new fitnesse-20221219-standalone.jar

August 2022 - Release 22.3

  • FitNesse for Appian is released and supported
  • Removed support for 20.3

November 2021 - Release 21.4

  • Enhancements
    • Support new card choice components
  • Bug Fixes
    • Update CVEs

August 2021 - Release 21.3

  • Bug Fixes
    • Fix bug for radio button card
    • Fix bug for date picker

June 2021 - Release 21.2

  • Enhancements
    • Support new SectionLayout
    • Upgrade Selenium Server to 3.141.59
  • Bug Fixes
    • Fix bug for radio button card
    • Fix bug for icon link alt text

February 2021 - Release 21.1

  • Enhancements
    • Supports Appian version 21.1

November 2020 - Release 20.4

  • Enhancements
    • Support Chrome capabilities
    • Update FitNesse version to 20200501
    • NEW METHOD: Support Stamp Field
    • NEW METHOD: Support Tag field
    • NEW METHOD: Support signature field
    • NEW METHOD: Support record action field
  • Bug Fixes
    • Fix grid row count bug when there is no paging
    • Fix getGridColumnRowValue when the grid cell is a button
    • Fix clear picker bug when there are multiple selections
    • Fix capturing an empty rich text field

September 2020 - Release 20.3

  • Enhancements
    • NEW METHOD: Populates the search box in a dropdown with some text
  • Bug Fixes
    • Fixed a bug for custom login submit button

August 2020 - Release 20.2.1

  • Bug fixes
    • Fixed a bug regarding clicking on card layouts

July 2020 - Release 20.2

  • Bug fixes
    • Fix bug with milestone click
    • Fix toggle box visibility on related action pop up

Apr 2020 - Release 20.1

  • Enhancements
    • NEW METHOD: click on bar chart
    • NEW METHOD: click on menu widget
    • NEW METHOD: click on button with tooltip
    • NEW METHOD: verify confirmation dialog header
    • NEW METHOD: verify confirmation dialog message
    • NEW METHOD: Verify a field is not blank
    • NEW METHOD: click on document image link
    • NEW METHOD: clear search field in record
  • Bug fixes
    • Remove pie chart hover for fragility and also make it the page scroll before hovering for firefox
    • Clicking on standalone icons by making the xpath less specific
    • Fixed closing social task bug

January 2020 - Release 19.4.1

  • Enhancements
    • NEW METHOD: star and unstar action with action name
    • NEW METHOD: click on icon link with alt text
  • Bug fixes
    • Fixed issues for dropdowns with many options

November 2019 - Release 19.4

  • Enhancements
    • NEW METHOD: verify button with label is enabled
    • NEW METHOD: verify button with label is disabled
    • NEW METHOD: verify link containing text is not present
    • NEW METHOD: verify a box with given label is present
    • NEW METHOD: verify a box with given label is not present
    • NEW METHOD: verify a section with given label is present
    • NEW METHOD: verify a section with given label is not present
    • NEW METHOD: verify a card with given accessibility text is present
    • NEW METHOD: verify a card with given accessibility text is not present
    • NEW METHOD: verify if text is not present anywhere in the user interface
  • Bug fixes
    •  Fixed populate first column in a grid when rowheader is set to 1

September 2019 - Release 19.3.1

  •  Enhancements
    • Added additional logging for site page navigation
  •  Bug fixes
    • Fixed verify text present for text with apostrophe

Sep 2019 - Release 19.3

  • Enhancements
    • Support gauge field
    • Support locating field using placeholder, instructions or tooltip
    • NEW METHOD: get gauge field GAUGE_FIELD or GAUGE_FIELD[INDEX] percentage
    • NEW METHOD: verify gauge field GAUGE_FIELD or GAUGE_FIELD[INDEX] percentage is PERCENTAGE
    • NEW METHOD: populate field with placeholder PLACEHOLDER with VALUE(S)
    • NEW METHOD: populate field with instructions INSTRUCTIONS with VALUE(S)
    • NEW METHOD: populate field with tooltip TOOLTIP with VALUE(S)
    • NEW METHOD: get field with placeholder PLACEHOLDER value
    • NEW METHOD: get field with instructions INSTRUCTIONS value
    • NEW METHOD: get field with tooltip TOOLTIP value
    • NEW METHOD: verify field with placeholder PLACEHOLDER contains VALUE(S)
    • NEW METHOD: verify field with instructions INSTRUCTIONS contains VALUE(S)
    • NEW METHOD: verify field with tooltip TOOLTIP contains VALUE(S)

June 2019 - Release 19.2

  •  Bug fixes
    • Support sending news post without participants

May 2019 - Release 19.1.3

  •  Bug fixes
    •  Fixed the bug that users can not click on menu tabs on Appian 19.1
    • Fixed the bug on Read Only field "contains"
    • Fixed the bug on sending news post on Appian 19.1

April 2019 - Release 19.1.2

  • Enhancements
    • Support Wait For Progress
    • Support Click on X and Y coordinates on monitor
  •  Bug fixes
    •  Fixed the bug that box layout toggle only acts on the first box

March 2019 - Release 19.1.1

  • Bug fixes 
    • Fixed error popup caused by loading Automation Extension

February 2019 - Release 19.1

  • Enhancements
    • Support Masked Barcode
    • Support Vertical Milestone
  • Bug fixes 
    • Fixed login with terms for 17.2

January 2019 - Release 18.4.4

  • Enhancements
    • NEW METHOD: populate field with partially matching picker field suggestion
    • NEW METHOD: login into URL with username
    • NEW METHOD: login into URL with role
    • NEW METHOD: wait for seconds
    • NEW METHOD: wait for minutes
    • NEW METHOD: wait for working

January 2019 - Release 18.4.3

  • Enhancements
    • Add capability to run tests on remote web drivers
  • Bug fixes
    • Fixed milestone step verification
    • Fixed section containing validation message verification

December 2018 - Release 18.4.2

  • Enhancements
    • NEW METHOD: populate grid column row with partially matching picker field suggestion
    • Other minor enhancements

November 2018 - Release 18.4.1

  • Enhancements
    • Documentation overhaul
    • Improved out of the box examples
    • Updated information about supported Appian versions

October 2018 - Release 18.4

  • Enhancements
    • NEW METHOD: open settings menu
    • NEW METHOD: open user profile
    • NEW METHOD: use discoverability to navigate to
    • NEW METHOD: close social task
    • NEW METHOD: verify task feed containing text is not present
    • Added usage metrics and corresponding metrics.properties file
  • Bug Fixes
    • Fixed login with terms

August 2018 - Release 18.3.1

  • Enhancements
    • Added new methods for hovering and clicking on profile links and circles in news posts
  • Bug fixes
    • Fixed NoClassDefFoundError for TempoEncryptedTextField introduced in 18.3

August 2018 - Release 18.3

  • Enhancements
    • NEW METHOD: create a news post
    • NEW METHOD: send kudos
    • NEW METHOD: send messages
    • NEW METHOD: send tasks
    • NEW METHOD: sort tasks
    • NEW METHOD: star a news feed item
    • NEW METHOD: filter news feed
    • NEW METHOD: navigate to link in news post
    • NEW METHOD: generic assertion that text is present
  • Bug Fixes
    • Fixed bug with MilestoneField pre-18.2
    • Added WebContentField to 18.1

May 2018 - Release 18.2.1

  • Enhancements
    • Auto login to previously set URL
    • Milestones in side by side layout
    • Card click identified by link name index
    • NEW METHOD: verify video (not) present
    • NEW METHOD: verify web content (not) present
    • Updated test app for 18.2
  • Bug fixes
    • User pickers not selecting correct field value
    • Card click not working in Firefox

May 2018 - Release 18.2

  • Enhancements
    • Added support for 18.2
    • NEW METHOD: click on card
    • Updated select grid method to account for the row highlight selection style
    • Added test app for 18.2
  • Bug fixes
    • Fixed fragility of file upload

March 2018 - Release 18.1.4

  • Enhancements
    • Added Support for finding grid indices
    • Added the ability to delete documents downloaded by Fitnesse

February 2018 - Release 18.1.3

  • Bug fixes
    • Updated mac and linux scripts shebang to /bin/sh

February 2018 - Release 18.1.2

  • Bug fixes
    • Fixed Windows start script to run FitNesse successfully
    • Fixed the example page and default fixture to use TempoFixture instead of SitesFixture

January 2018 - Release 18.1.1

  • Enhancements
    • Updated 16.3 Test Zip
  • Bug fixes
    • Fixed issue with navigating to /logout URL
    • Fixed Multiselect dropdown on 16.3
    • Fixed Record filter clearing on 16.3

January 2018 - Release 18.1

  • Enhancements
    • Added support for 18.1
    • Added test app for 17.3 and 18.1

January 2018 - Release 17.4.1

  • Enhancements
    • Add ability to accept Tasks
    • Add ability to populate Record Type user filter
    • Add ability to download files
    • Make LinkField capturable
    • Added advanced functionality to adjust dates, including setting dates in the past
    • If url contains "/suite", remove anything after it to prevent navigation failure.
  • Bug fixes
    • Updated chromedriver to version 2.33
    • Updated startup scripts to pass FitNesseRoot properly
    • Always logout before login in case a previous test failed and didn't logout
    • Made Firefox webdrivers executable
    • Fix BarcodeField not working in 17.1+

November 2017 - Release 17.4

  • Enhancement
    • Change FitNesse usernames
    • Allow FitNesse tests to hit an arbitrary endpoint through an environment variable
  • Bug fixes
    • Mac Firefox date and dateTime field tests no longer throw an null character
    • Dropdown tests does not read duplicate values

October 2017 - Release 17.3.2

  • Enhancements
    • Updated test application to run initialize on import
  • Bug fixes
    • Checkboxes that are too short are not checked

October 2017 - Release 17.3.1

  • Enhancements
    • Updated Test App to create users
    • Documentation tweaks/ Readme tweaks
  • Bug fixes
    • Allowed login for internationalized pages
    • Fixed an issue preventing searching in record list view
    • Changed the way the start-unix script was sourced

September 2017 - Release 17.3

  • Enhancements
    • Supports Appian version 17.3
    • Ability to configure custom login page
    • Updated the following components to be compatible with the latest Appian Hotfix Package for 17.1 (G), and 17.2 (D):
      • Paging Grid
      • Editable Grid
    • Scripts now recognize new loading bar and wait for it to be done before continuing
    • Added shell scripts and drivers for F4A on Mac and Linux
  • Bug fixes
    • Browser is maximized by default which ensures the "Sign Out" button is always visibleNote: Previously tests could hang waiting to logout if the browser window was within a specific size range where the "Sign Out" button got hidden