FitNesse for Appian

Overview

FitNesse for Appian is a client-side tool that makes it easy to create automated tests on the Appian platform. Create test scripts that will run Appian as if a user was clicking through the application and filling out data. FitNesse for Appian includes easy instructions to get you started.

Note: Java 11 required for plugin version 23.4

Key Features & Functionality

With FitNesse for Appian, you can:

  • Write easy-to-read wiki language tests for Appian applications
  • Speed up testing times
  • Set up reusable regression tests

Reusable scripts can be written to:

  • Create new packages
  • Move them to different stages in the workflow
  • Check that forms are being populated correctly
Anonymous
  • Hi Team, There seems to a glitch with the login in the new version. 

    java.lang.IllegalArgumentException: Keys to send should be a not null CharSequence


    Could you please check & confirm?

    execution Log below

    Picked up _JAVA_OPTIONS: -Djavax.net.ssl.trustStoreType=Windows-ROOT
    11:38:48.634 [main] ERROR com.appiancorp.ps.automatedtest.exception.ExceptionBuilder - Login page - appianFitnesse
    java.lang.IllegalArgumentException: Keys to send should be a not null CharSequence
    	at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:98) ~[selenium-remote-driver-4.8.2.jar:?]
    	at com.appiancorp.ps.automatedtest.tempo.TempoLogin.login(TempoLogin.java:136) [appian-selenium-api-23.1.1.jar:?]
    	at com.appiancorp.ps.automatedtest.fixture.BaseFixture.loginIntoWithUsernameAndPassword(BaseFixture.java:438) [appian-selenium-api-23.1.1.jar:?]
    	at com.appiancorp.ps.automatedtest.fixture.BaseFixture.loginIntoWithUsername(BaseFixture.java:467) [appian-selenium-api-23.1.1.jar:?]
    	at com.appiancorp.ps.automatedtest.fixture.BaseFixture.loginWithUsername(BaseFixture.java:478) [appian-selenium-api-23.1.1.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_261]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_261]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_261]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_261]
  • Issue resolved in this latest version release v23.1.1

  • v23.1.1 Release Notes

  • Here is the stack trace ...

    EXCEPTION__:org.openqa.selenium.remote.http.ConnectionFailedException: Unable to establish websocket connection to http://localhost:2284/devtools/browser/6cecc91d-4fbc-47db-a266-a38e956198a7

    Build info: version: '4.1.2', revision: '9a5a329c5a'

    System info: host: 'VN000280', ip: '192.168.126.148', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_332'

    Driver info: driver.version: ChromeDriver

    at org.openqa.selenium.remote.http.netty.NettyWebSocket

  • Hello, we have the same issue here with Chrome 111. 

  • I also got the same error as above and when I placed the chrome driver and got the error __EXCEPTION__:org.openqa.selenium.remote.http.ConnectionFailedException: Unable to establish websocket connection to localhost:57655/.../6ad34c1f-9893-4f8d-b49d-288d377044fe Build info: version: '4.7.2', revision: '4d4020c3b7' System info: os.name: 'Windows 11', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_361' Driver info: driver.version: ChromeDriver at org.openqa.selenium.remote.http.netty.NettyWebSocket.<init>(NettyWebSocket.java:102) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.http.netty.NettyWebSocket.lambda$create$3(NettyWebSocket.java:128) [selenium-remote-driver-4.7.2.jar]

  • I tried that, and encountered further errors. 

  • You can download the corresponding chrome driver and place it in driver path. Also you can change custom.properties files if you have chrome driver in different path 

  • Hello! I am getting an error message trying to run a test after updating to the latest version yesterday (March 6, 2023). We are using Appian 22.4, Chrome version 111. The test crashes on trying to open a Chrome window in which to run the automation.

    The issue seems to be with the chromedriver.exe. Can you please update the driver to the latest version?

    The error message reads as follows:

    setup with browser__EXCEPTION__:org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: This version of ChromeDriver only supports Chrome version 107 Current browser version is 111.0.5563.65 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe Host info: host: 'GS-5CD7525XJ9', ip: '192.168.1.251' Build info: version: '4.7.2', revision: '4d4020c3b7' System info: os.name: 'Windows 10', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_211' Driver info: org.openqa.selenium.chrome.ChromeDriver Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--disable-extensions], extensions: [], prefs: {download.default_directory: C:\FitNesseForAppian\Downloads, profile.default_content_settings.popups: 0, safebrowsing.enabled: true}, useAutomationExtension: false}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [--disable-extensions], extensions: [], prefs: {download.default_directory: C:\FitNesseForAppian\Downloads, profile.default_content_settings.popups: 0, safebrowsing.enabled: true}, useAutomationExtension: false}}}] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:148) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:106) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:156) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:535) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:228) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:156) [selenium-remote-driver-4.7.2.jar] at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:101) [selenium-chromium-driver-4.7.2.jar] at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:82) [selenium-chrome-driver-4.7.2.jar] at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:71) [selenium-chrome-driver-4.7.2.jar] at com.appiancorp.ps.automatedtest.fixture.BaseFixture.setupWithBrowser(BaseFixture.java:176) [appian-selenium-api-23.1.jar] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_211] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.8.0_211] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.8.0_211] at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.8.0_211] at fitnesse.slim.fixtureInteraction.SimpleInteraction.methodInvoke(SimpleInteraction.java:322) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.fixtureInteraction.SimpleInteraction.callMethod(SimpleInteraction.java:307) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.fixtureInteraction.SimpleInteraction.invokeMethod(SimpleInteraction.java:290) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.fixtureInteraction.SimpleInteraction.findAndInvoke(SimpleInteraction.java:217) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.MethodExecutor.findAndInvoke(MethodExecutor.java:18) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.FixtureMethodExecutor.execute(FixtureMethodExecutor.java:18) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.StatementExecutor.getMethodExecutionResult(StatementExecutor.java:139) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.StatementExecutor.call(StatementExecutor.java:112) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.instructions.CallAndOptionalAssignInstruction.executeInternal(CallAndOptionalAssignInstruction.java:30) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.instructions.Instruction.execute(Instruction.java:29) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.ListExecutor$Executive.executeStatement(ListExecutor.java:49) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.ListExecutor$Executive.executeStatements(ListExecutor.java:43) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.ListExecutor.execute(ListExecutor.java:85) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimServer.executeInstructions(SlimServer.java:84) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimServer.processOneSetOfInstructions(SlimServer.java:77) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimServer.tryProcessInstructions(SlimServer.java:64) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimServer.serve(SlimServer.java:49) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimService.handle(SlimService.java:169) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimService.acceptOne(SlimService.java:177) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimService.accept(SlimService.java:139) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimService.startWithFactory(SlimService.java:92) [fitnesse-20221219-standalone.jar:20221219] at fitnesse.slim.SlimService.main(SlimService.java:57) [fitnesse-20221219-standalone.jar:20221219]