JMeter for Appian

Overview

Using this plug-in JMeter provides an easy way record and replay Appian processes.

JMeter for Appian accomplishes this by hooking into JMeter's Test Script Recorder mechanism. It alters the behavior of most HTTP requests so that additional logic runs when the test is recorded. This logic extracts the standard dynamic values that are passed back and forth when a user interacts with Appian.

Key Features & Functionality

This JMeter plug-in will add post processing to Appian requests/responses to:

  • Automatically handle headers for authentication
  • Automatically handle parameterization of context, _cIds and saveIntos in SAIL requests/responses
  • Automatically handle parameterization of taskIds for chained tasks
  • Automatically handle parameterization of docIds for uploads
  • Automatically handle parameterization of cacheKeys/parameters

The plug-in does not attempt to parameterize end user entered data. This could however be added to the generated test script.

Anonymous
  • Hi!

    I have a problem with Jmeter for Appian.

    First, I can solve a problem with login by using X-APPIAN-CSRF-TOKEN and JSESSIONID as cookies in HTTP COOKIE MANAGER.

    Then I’d like to make a search (search a project) in our Appian cloud, but Jmeter returns me an error “Response code 401” when I do a POST resquest.

    I have 2 variables in my body data request, “saveInto” and “context value”. Context value is ok but the problem is in saveInto.

    Before the request I have a Json extractor, automatically created by “AppianJsonParser-20.3.0-SNAPSHOT”

    Json extractor gets the variable with “\ /” and response data hasn´t this character. How can I do for solve it?

     

    My request body:

    "<<jA0EAwMCd7VWJIKW7uMB0qEB4gr03ece1fNv\/y4Pg0ICDVpb2JTjXqQKFFbbTFyDBsBUX1Ig641O\r\nEIvj9abXOz0cMHc+45Ts9GjWWy+Fmc07WVsuxzoD+u1DSGLN26EM0sa1Ke4++9ugE7lZNuB4hVh2\r\nr3lwggg7P84gys5KDCLkcY6LZ1I05\/zcSpkTmqAPwUb8m1NjVswMcRYF6KbPmoGN+QHdTDW+8Q26\r\nb7MTqs0TEA==\r\n>>"

     

    Response body data:

    "<<jA0EAwMCd7VWJIKW7uMB0qEB4gr03ece1fNv/y4Pg0ICDVpb2JTjXqQKFFbbTFyDBsBUX1Ig641O\r\nEIvj9abXOz0cMHc+45Ts9GjWWy+Fmc07WVsuxzoD+u1DSGLN26EM0sa1Ke4++9ugE7lZNuB4hVh2\r\nr3lwggg7P84gys5KDCLkcY6LZ1I05/zcSpkTmqAPwUb8m1NjVswMcRYF6KbPmoGN+QHdTDW+8Q26\r\nb7MTqs0TEA==\r\n>>"

     

    Thanks

  • It may be an issue with your jmeter.properties. Try setting

    CookieManager.allow_variable_cookies=true
    CookieManager.save.cookies=true

    You can use a regex extractor like __appianCsrfToken:\s+(.+) on the headers, but I believe that value updates between the initial get and the login, which is why I like to use the cookie variable instead.

  • Does this plug-in work in Appian 21 version?

    Hi, we have tried this plug-in in Appian 21 version and we can´t login to our Appian cloud.

    We have followed step by step the Jmeter for Appian documentation and we have made a simple navigation in our cloud. Using Jmeter version 5.4.1 or 5.3, we get the same errors. When we stop recording, we can see our tree results all in green. But if we run the test again, we find problems in our login item, specifically in X-APPIAN-CSRF-TOKEN.

    We have tried to pass ${COOKIE___appianCsrfToken} but we don’t know exactly the way to use that. If we will need a regular expresion extractor to pass this, could you help us with the steps to use that please?

    Thanks

  • Release Notes
    • An updated version of the main parser jar has been added, AppianJsonParser-20.3.0-SNAPSHOT. This should be used for version of Appian after 20.3.
  • No, it doesn't work with 5.3 as well, already tried it! It's probably due to how 20.4 version of appian works in conjuction with browser.

  • The ApacheJMeter_http.jar that was altered to hook in the Appian logic was built against Jmeter 5.3, I would recommend using that version. Not sure that is the root cause of you issue, but it could be.

  • Thanks for the feedback. I will have to give it another try with JMeter, I must have set something up incorrectly.

  • I am facing issues with Jmeter 5.4, the dynamic variables it creates based on the payloads do not necessarily resolve to a value at run time.

  • It does record 20.4 version, but I am facing issues with the dynamic variables it generates.

  • Does this work in 20.4 or 21,1?

    Doesn't seem to record anything