JavaScript Calls
You can execute a JavaScript call in a custom flow test. The JavaScript
code must be enclosed in single quotation marks ('). For example, the
following command retrieves the text content of the HTML element with the
ID first-name:
Execute JavaScript: `document.querySelector(#first-name).textContent`
The result of the command is stored in the
{js-result} variable, which can be used in other steps. For
example:
type {js-result} as "first name"
You can also use JavaScript for an assertion, for example:
evaluate js: document.querySelector({selector}).textContent
Examples
-
Log any value to the browser console
evaluate js: console.log({var1}) -
Convert a string to lowercase
evaluate js: {str1}.toLowerCase() -
Capitalize the first letter of a string
evaluate js: {str1}[0].toUpperCase() + {str1}.slice(1) -
Iterate through an array
evaluate js: {array1}.forEach(item => doSomethingWithItem(item)) -
Access object properties or map key-value pairs
evaluate js: {record1}.prop1 + {record1}.prop2 + {record1}['kebab-prop']You can also perform this follows:
{record1.prop1} + {record1.prop2} + {record1['kebab-prop']} -
Iterate through an object or map
evaluate js: Object.entries({record1}).forEach(([key, value]) => doSomethingWithKeyAndValue(key, value))
The following sample script demonstrates the following steps:
- Navigates to the page
https://example.org, - Retrieves and validates the text content of a specific element
- Fetches a UUID (Universally Unique Identifier) from an external service.
- Sets the text content of an element to this UUID.
- Validates that the text content was correctly updated.
Go to https://example.org
set variable selector = "h1"
evaluate js: document.getElementsByTagName({selector})[0].textContent
assert that {js-result} is "Example Domain"
get "https://httpbin.org/uuid"
set variable rand = {response.body.uuid}
evaluate js: document.querySelector({selector}).textContent = {rand}
evaluate js: document.querySelector({selector}).textContent
assert that {js-result} is {rand}