Script
Last updated
Last updated
This is a node that runs JavaScript scripts. It is going to help you solve the following tasks:
create complex tests to check the results of one or several nodes;
generate test data;
change other nodes' variables;
perform operations to bring the tested system to a specific state (set_up, tear_down);
debug and access all nodes' states.
The script node editing window is divided into two parts: the code editor and the console output window. To close the console window click the button.
You can use the toolbar above the output window to manage the console behavior:
/- choose what to do with the console output. - clear the window every time you run a script, - display all previous outputs.
- auto scroll to the last line of the output
- clear the console window
Click the RUN
button to execute the script. The execution continues to the last line of the code and finishes when all asynchronous tasks are done (e.g.setTimeout
). The execution is successful if:
there are no syntax errors in the code;
the exceptions raised had been handled;
the execution took no more than 30 seconds (otherwise the execution will be terminated).
Since the call to the script is wrapped in a function, you need to use the return;
command to avoid errors while terminating the script.
To get an error after script termination raise an exception withthrow new Error('Something went wrong');
The script is executed in the Node.js virtual environment. Some Node.js modules and all standard JavaScript features supported by V8 are available.
The ECMAScript 6 standard is supported as well.
fs - a module for interacting with the file system
lodash - a library that provides lots of utility functions
moment.js - a library for managing dates
CryptoJS - a collection of cryptographic algorithms
random-js - a mathematically correct random number generator library
faker.js - a library that lets you generate random data for different entities properties
chai.js - a library that provides a convenient API for making assertions
request - a library that provides a simplified HTTP client
Objects and functions of the script's global scope are listed below.
Every module stated above is automatically added to the execution context and is available in the global scope.
There are different console output methods, such as log, info, warn, error, debug, exception.
Their signatures are equal to the signatures of their standard versions. In the console every method type is highlighted in different color. Each colored line contains the particular row and column where the output method is called. Events of the exception type are displayed along with the stack trace.
There is an object used to access the project and the current Script node. It is called tm
and it is available in the global scope.
currentNode: nodeAPI
- the current Script node API
project: nodeAPI
- the project node API
env: envAPI
- the API for accessing the environment variables
cookies: cookie[]
- a list of cookies used in the project
parent: nodeAPI
- returns a parent node API and null for the project node
name: string
- the given node name
type: string
- the given node type
path: string
- the path to the given node starting with the project root
children: nodeAPI[]
- a list of child nodes APIs
findChild(name: string): nodeAPI
- searches for the child node using its name and returns null if the node doesn't exist
next: nodeAPI
- the API of the next node in the group. If the given node is the last one, null is returned
prev: nodeAPI
- the API of the previous node in the group. If the given node is the first one, null is returned
nextNodes: nodeAPI[]
- a list of all next nodes in the group. If the given node is the last one, an empty list is returned
prevNodes: nodeAPI[]
- a list of all previous nodes in the group. If the given node is the first one, an empty list is returned
vars: object
- the object that stores all static variables of the given node
dynamicVars: object
- the object that stores all dynamic variables of the given node
setDynamicVar(name: string, value: any): void
- sets the name dynamic variable with a certain value for the given node
The interface of a RequestStep
node is more advanced.
request: object
- the object that stores the node's request configuration
response: object
- the object that stores the results of the last request
active: string
- the active environment title
vars: object
- the object that stores the current environment variables