testRigor English-language support documentation
The goal of testRigor is to allow you to write your tests in your way of saying it in plain English.
Table of Basic Commands
We support a vast variety of commands. The list below contains many examples of how to express them.
Action | Options | Example |
---|---|---|
click | double, right, middle, long, times, in a context of, using the mouse, using javascript, without scroll |
or:
or:
or:
or:
or:
or:
Note: You can use middle click to open links in a new tab
or:
For web testing you can specify the way we click on an element as follows:
or:
Note: In headless mode this option will be ignored as the only method available now is javascript
or:
Note: You can use without scroll to prevent testRigor’s default behavior (scroll to the element before the click).
or:
Note: this sample uses an image stored with the name “Logo” in “Test Data”. The image is used to identify the location of the click. This type of click is useful when e.g. you need to click on an image map. Default discrepancy is 20 %
|
generate | Simple Template, unique email, unique name, RegEx |
Generate a unique email in testrigor-mail.com domain:
Generate a unique name:
Generate a unique phone number:
Generate a unique string of letters/numbers:
Generate unique the date and time with unique parameters:
Generate an email address in a custom domain:
Generate multi-line:
Generate and type:
Generate and save only:
|
enter | enter, tab, escape, backspace, arrow right, arrow left, arrow up, arrow down, go, search, send, next, previous, done |
Note: enter supports selects/dropdowns/checkboxes/etc.
For checkboxes, you can do the following:
For enter, tab, backspace, arrows or Android-specific go, search, send, next, previous, done:
For multi-line inputs:
For selects or dropdowns:
|
type |
For typing free text into input fields
|
You may type text without referencing an input field if the previous step has already placed the cursor within the input field you wish to use:
For multi-line inputs:
|
copy and paste | text |
Copy text from string:
example
example |
check | page |
Check page content by string:
or
Check that page did not change after some action:
Note: this action compares page images pixel to pixel
Check that page doesn’t have a fourth button:
|
check | element |
and
You can also validate whether an input/checkbox/button/etc. is disabled, clickable, or enabled
Check stored value itself:
Check that an element looks the same as during last successful run:
Check that SMS is received:
Check that file is downloaded and check its content:
Check that a container contains a nth element:
|
long press |
|
|
hover |
|
|
open new tab |
|
|
switch tab |
or
Note: In order to easily keep track of tab numbers, testRigor’s default setting is to begin each test case in a new browser window. Therefore, tab “1” is always the tab the test case starts in, and tab “2”, “3” and so on are the new tabs in the order that they are opened throughout the test case run. For pop-ups, instead of a tab number, you will need to use the popup window name or title.
|
|
close tab |
|
|
go back |
|
|
go forward |
|
|
reload |
|
|
reset to home |
|
|
restart app |
Restarts application without clearing data.
Note: This action is for mobile devices only.
|
|
drag | element, file |
Or file:
Or draw on a canvas:
If you need to drag a folder with files, you need to zip it and upload in Test Data section and use it like so:
Note: This action does NOT work in headless mode. It also does NOT work with Internet Explorer
|
scroll | down, up, left, right |
Or:
Partial scroll:
You can also scroll directly to a specific part of the page:
Or:
|
swipe | down, up, left, right |
|
wait | time |
Note: 2 min max
|
call api | URL |
Or with more parameters:
|
grab value | element |
or, to grab a value from
UserName:[email protected]
or:
|
extract value by regex | element |
for example, to extract a value of username from variable
var1 containing UserName:[email protected] you could use:
|
save value |
|
|
store clipboard |
Clipboard current value can be saved into a variable for later usage:
|
|
open url | URL |
Note: The domain must be whitelisted!
|
grab url |
You can grab the browser’s current URL and save it into a variable:
|
|
send email |
Here is how to send a simple email:
To send an email with an attachment, you can upload the file into testrigor store in “Test Data” section, then use it by name as stored value. Alternatively you can use your own URL. If you choose to attach a file from your own URL, the link should be downloable.
|
|
check email |
Or
By default testRigor renders emails in a desktop browser. If you want to render it in the mobile device, you need to add the following suffix:
and show in mobile E.g.:
You can use both – sender and recepient
By default we assume that the user expects one email message. Multiple emails will trigger an error message. It is possible to customise this behavior by specifying exactly how many emails are expected or just say “one or more”.
Also it is possible to filter messages by subject
Note: this command will render the email as if it is a web page. The
to address here is not the same as “To” address in the email. check that email to will validate that email is delivered to one of the email recepients (To, Cc, Bcc). If there are more than one recepient, several commands may check for every recepient’s address. |
|
reply to email |
Or
Note: this command will render the received email (not the response) as if it is a web page
|
|
call | phone number |
Or, simply:
|
sms | phone number |
Or
|
set geo location (GPS Coordinates) |
|
|
start browser / start device | name |
Starts a new browser with its own new session.
Start and switch:
For device:
|
switch to browser / switch to device | name |
For device:
Get back to the first browser:
|
switch context to native / switch context to browser |
Switch the context of the following actions to the entire mobile device (as for application testing) or start the mobile browser and use only its content (as for web testing).
|
|
compare | type of element |
Compares current elements on the current screen with the ones appearing the previous time the screen was shown.
The following sentence compares that element looks like during last successful run pixelwise:
The sentence must contain an image definition, such as
image of text "pressed" , image of 3rd "peter" , etc. Optionally it may contain an allowance value in percent. If missing, then it is assumed to be zero. If element size changed, centered intersection of the element is compared. Pixels are compared using mean squared error.Silimarly you can make a screenshot of an image, save it, and then use as a reference like so:
|
login |
Complex action. Identifies and performs the necessary steps to login.
|
Reusable Rules (Subroutines)
If you have a sequence that will be used often, you can save them as a Reusable Rule and refer to it with the name of your choosing.
login
click "Men Clothing"
scroll down
click "Men's cargo shorts"
click "brown"
click "Size 34"
click "Add to cart"
check that page contains "Your order is nearly complete!"
go to checkout page
check page contains "Add to cart"
Referencing Locations and Elements
-
-
-
References.
check that "peter" color is "ffaabb"
will search:-
Nested text –Â example
- Placeholder –Â example
- Value –Â example
- data-tid/data-testid/data-test-id/Id/resource-id/data-id – example
- Name – example
- aria-label – example
- CSS Class – example
- Label from ML classification – example
- Hint/Title/Tooltip – example
- Alt/Src – example
- For inputs/edits/dropdowns/selects/etc. will also search corresponding label – example
-
-
Generic indexes. For example,
check that second "peter" color is "ffaabb"
-
Types. For example,
check that input "peter" color is "ffaabb"
will fail id “peter” is not an input/edit. Supported types:- text – example
- label –Â example
- button – example
- link – example
- input (or “edit” or “field”) – example
- dropdown (or “select”) – example
- checkbox (or “switch”) – example
- radiobutton – example
- file input (or “input file” or “edit file” or “input type file”): specifically an input of type file – example
-
Typed indexes. For example,
check that second input "peter" color is "ffaabb"
will find the second input/edit related to “peter”. -
Stored value for controls. For example,
check that stored value "peter" color is "ffaabb"
will resolve stored value “peter” and use that resolved value to find the control. -
Multiple references. For example,
check that "peter" or "john" color is "ffaabb"
will find the first control related to either “peter” or “john”. -
Image class. For example,
click on "cart"
. testRigor classifies images on the screen and if there is a button which looks like a shopping cart it will click on it. Complete list of all button image categories is here. -
Stored value for data. For example,
check that "peter" contains stored value "actionNote"
will find the second input/edit related to “peter”.
-
-
Multiple references support.
click "checkout" or "submit"
click "checkout" or "submit" if exists
Selecting elements in reference to other elements
click on button "Delete" below "Actions"
click on button "Delete" below "Section Name" to the right of "label"
completely
– default overlap with the target area is at least 30% – examplewith at least "10" percent overlap
– similar to above but overlap can be specified – exampleroughly
– element is anywhere below the cut line for “below”, to the right of for “to the right of” – example
enter "Peter" into roughly below "Section"
enter "Peter" into element with at least "1" percent overlap on the right of "Description"
enter "Peter" into below "Section" on the right of "Description"
enter "Peter" into roughly below "Section" completely on the right of "Description"
Selecting elements in the context of other elements
click on "Delete" within the context of table "actions" at row containing "id1" and column "Actions"
click on "Delete" within the context of "sectionTwo" below "Actions" and to the right of "rowName"
Selecting elements using reference to other elements and in the context of other elements
- Context is processed first, narrowing what to consider to what is inside that element
- References to other elements is processed next, only considering what was delimited by the context
click on "Button" below "Title" in the context of "sectionOne"
click on "Button" below "Title" and to the right of "leftHeader" in the context of "sectionTwo"
click on "Button" below "Subtitle" and to the right of "leftHeader" in the context of "sectionOne" below "Title" and above "Second Title"
Specifying the type of an element
click on strictly button "Delete"
Case sensitivity and exact matches
click on exactly "Delete"
click on strictly button exactly "Delete"
Fine-tuning access
click deepest element "Delete"
Specifying position on screen
click on "Delete" with offset "20,10"
click in the middle of the screen
in the middle of the screen
– examplein the top quarter of the screen
– examplein the second top quarter of the screen
– examplein the bottom quarter of the screen
– examplein the second bottom quarter of the screen
– examplein the top third of the screen
– examplein the bottom third of the screen
– examplein the left quarter of the screen
– examplein the second left quarter of the screen
– examplein the right quarter of the screen
– examplein the second right quarter of the screen
– examplein the left third of the screen
– examplein the right third of the screen
– examplein the left side of the screen
– examplein the right side of the screen
– examplein the top of the screen
– examplein the bottom of the screen
– exampleon the left edge of the screen
– exampleon the right edge of the screen
– exampleon the top edge of the screen
– exampleon the bottom edge of the screen
– examplein the left top corner of the screen
– examplein the right top corner of the screen
– examplein the left bottom corner of the screen
– examplein the right bottom corner of the screen
– example
Saved values (variables) support
generate from regex "[a-z]{10,18}", then enter into "Notes" and save as "actionNotes" //example
validate that stored value "actionNotes" color is "ffaabb" //example
check that "peter" contains stored value "actionNote" //example
click on stored value "actionNotes" //example
check that page contains stored value from "actionNotes" //example
"username"
and "password"
which come from Application-specific credentials settings for your test suite. With it you can do:enter stored value "username" into "username_field" //example
enter stored value "password" into "password_field" //example
login
command. Also, you can use stored variables as parameters in most commands:enter from the string with parameters "${homePrefix}/my/path" into "urlPath"
check that expression "${a} + ${b}" itself is equal as a number to "42"
check that page contains expression "new Date().setDate(today.getDate()-30).getFullYear()"
- username – example
- password – example
- homeDomain – example
- homeFile – example
- homePrefix – example
- todayYear – example
- todayYearShort – example
- todayMonthNumber – example
- todayMonthNumberTwoDigits – example
- todayMonth – example
- todayMonthShort – example
- todayDayOfMonth – example
- todayDayOfMonthTwoDigits – example
- todayDayOfWeek – example
- todayDayOfWeekShort – example
- nowHour –Â example
- nowHourTwoDigits – example
- nowMinute – example
- nowMinuteTwoDigits – example
- nowSecond – example
- nowSecondTwoDigits – example
- nowNanosecond – example
- nowDateIso – example
- nowTimeIso – example
- nowDateTimeIso – example
- nowMillisecondsFrom1970 – example
- nowDateTimeRFC1123UTC – example
- nowUnixTime – example
- testSuiteParentFolder – example
- testSuitePath – example
- testSuiteName – example
- testCaseName – example
- testCaseExecutionLink – example
- currentUrl – example
grab value from "some-element" and save it as "my-email"
grab value from input "some-edit" and save it as "my-email"
generate from regex "[a-z]{10,18}" and save as "actionNotes" //example
save value "Peter" as "name" //example
click on the 6th element by image from stored
value "logo" with less than "10" % discrepancy
Executing actions until condition (loops) support
click "Next" until page contains stored value "previously generated id"
click "Next" up to 12 times until page contains strictly button "Place order"
Validations
- contains/doesn’t contain (text) – example/example
- is blank/is not blank – example/example
- matches regex/doesn’t match regex – example/example
- has value/doesn’t have value (for inputs/text areas) – example/example
- is checked/is not checked – example/example
- is disabled/is enabled – example/example
- is visible/is invisible – example/example
- color is – example
- is clickable/is not clickable – example/example
- cursor is – example
- has CSS class – example
- background color is – example
- has property – example
- has options selected (for selects) – example
check that "element" color is "ffaabb"
check that input "input" has value "value"
check that checkbox "Keep me signed in" is checked
check that checkbox "Keep me signed in" is not checked
check that input "input" has value ""
check that property "background-color" of "my-div" is equal to "black"
check that property "width" of "my-div" is equal as a number to "310px"
check that property "height" of "my-div" is greater or equal than "170"
- matches regex/doesn’t match regex – example/example
- contains/doesn’t contain – example/example
- is equal to/is not equal to – example/example
- is null/is not null – example/example
- is blank/is not blank – example/example
itself
to perform validation on a stored value:call api "https://testrigor.com" and save it as "variableName"
check that stored value "variableName" itself contains "James"
example
The key to the testing API results is to save it to stored value and then perform validation on stored value itself (with keyword itself
) as shown above.
- is equal as a number to/is not equal as a number to – example/example
- is greater than – example
- is greater or equal than – example
- is less than – example
- is less or equal than – example
- page contains/page doesn’t contain – example/example
- page has regex/page doesn’t have regex – example/example
- page’s return code is
- title is – example
- title contains – example
- url is/url is not – example/example
- url contains/url doesn’t contain – example/example
- url starts with/url doesn’t start with – example/example
- url ends with/url doesn’t end with – example/example
- url matches regex/url doesn’t match regex – example/example
check that url matches regex from the string with parameters "${homePrefix}/product/${type}/[0-9A-Za-z\-]+"
Visual Testing
You can verify visual changes in the screens thanks to Applitools integration or default testRigor screen comparison algorithm. To use Applitools integration you need to configure and enable it first. There is a documentation guide with the steps to do it. If you want to use testRigor proprietary comparison algorithm, then you do not need to do anything.
compare screens using Applitools
compare screenshots using Applitools
compare screens "Screen Name" using Applitools
compare screens using Applitools treating error as "minor"
compare screens "Screen Name" using Applitools treating error as "major"
If you want to use testRigor proprietary algorithm, you can just omit "using Applitools"
part – e.g.,
compare screens
compare screenshots
compare screens treating error as "minor"
The screen name and the severity of the error when the screens mismatched are optional.
You can use the screen name to identify the screenshot in the Applitools application. If you didn’t put the name it will be called as “Image n”, where n is the index of the screen in the test case. For instance, you can use this command 3 times in one test case, this way names would be “Image 1″, Image 2” and “Image 3”.
Regarding to severity parameter, the allowed values are “minor”, “major”, “critical” or “blocker”. The default value is “critical”, which marks the test case as failed.
If Applitools identify a mismatch in the screen comparison, the test case will be marked according to severity and a link to the Applitools report will be provided.
Applitools always compare the current screenshot with itself baseline. You can set the baseline of each screenshot in the Applitools application. If you don’t do it, the first version of each screen would be considered it’s baseline.
Working with Tables
click on table "actions" at row "103" and column "Action"
example
For the table
# | Id | Name | Actions | Additional Data |
---|---|---|---|---|
Filter by | ||||
101 | york1 | Yorktown | Arrive Cancel | |
102 | spk2 | Spock | Listen to Ignore | |
103 | nyo3 | Nyota | Open channel Promote |
will result in a click on “Open channel”.
click on table "actions" at row containing "spk2" and column "Actions"
click on "Ignore" within the context of table "actions" at row containing "spk2" and column "Actions"
enter "york1" into first table at the second header row and column "Id"
check that table "actions" at row "102" and column "Name" contains "Spock" //example
check that table "actions" at row "101" and column "Additional Data" has value "Looks like a trap" //example
enter "This is a trap!" into table "actions" at row "101" and column "Additional Data" //example
click "Open channel" within the context of second table at row "103" and column "Action" //example
check that the second table at row containing "Nyota" and column "Action" contains link "Open channel"
click the first button within the context of second table at row containing "Nyota" and column "Action"
Conditional execution
if exists
clause. For example,click "element" if exists //example
enter "bla" into "element" if exists //example
the above commands will not fail if element is not found and will be skipped silently.
fail //example
fail with "error" //example
API Testing
call api <TYPE> "<API_URL>" with headers "a:a" and "b:b" and body "body" and get "JsonPath" and save it as "variableName"
call api post "http://dummy.restapiexample.com/api/v1/create" with headers "Content-Type:application/json" and "Accept:application/json" and body "{\"name\":\"James\",\"salary\":\"123\",\"age\":\"32\"}" and get "$.data.name" and save it as "createdName" and then check that http code is 200
"JsonPath"
and "variableName"
are both optional. However, if "JsonPath"
is present, "variableName"
will be mandatory. Here is one more example,call api "api" and save it as "variableName"
JsonPath is the way to refer to parts of JSON and described with examples here. If “JsonPath” is not defined in the action, the complete result of the request will be stored in “variableName”.
- get – example
- post – example
- put – example
- patch – example
- head – example
- delete – example
- options – example
- trace – example
testRigor supports multiple headers separated by “and” like so: with headers "a:a" and "b:b"
You can pass JSON into the body of POST message, with double quotes characters escaped like so: “\””. You could use tools like this to escape it for you. For example, and body "{\"name\":\"James\",\"salary\":\"123\",\"age\":\"32\"}"
call api post from the string with parameters "${homePrefix}/api/v1/create" with headers "Content-Type:application/json" and "Accept:application/json" and body text starting from next line and ending with [END]
{
"param": "value",
"param2": "value2"
}
[END] and get "$.data.name" and save it as "createdName"
call api post from the string with parameters "${homePrefix}/api/v1/create" with headers "Content-Type:application/json" and "Accept:application/json" and body from the string with parameters text starting from next line and ending with [END]
{
"param": "value",
"param2": "${dynamicValue}"
}
[END] and get "$.data.name" and save it as "createdName"
check that stored value "createdName" itself contains "James"
Uploading files
enter stored value "keyName" into input file "fileField" //example
enter "<FILE_URL>" into file input "fileField" //example
Where “fileField” is a file input element, i.e.: <input type="file" ...
You can upload the file into testRigor store in “Test Data” section, then use it by name as stored value. Alternatively you can use your own URL. If you choose to upload from your own URL, the link should be downloable. In any case the file is uploaded from within testRigor environment.
upload file from saved value "sampleFile" upload file "https://some-page.com/path-to-file" to mobile device
The file will be uploaded intoDownloads
folder on the device
Multiple files
enter from the string with parameters text starting from next line and ending with [END]
${file_var_one}
<FILE_URL>
[END] into file input "myFileInput"
Working with folders
If the input element has a webkitdirectory
attribute, e.g. – <input type="file" webkitdirectory ...
this element is expecting a folder. If you try uploading a file, we will put it into a temporary folder and enter that value. However, if you want to upload an actual folder, you can zip the folder and use it as an input. In such case, we will unzip the file, preserving directory structure and enter the root path. This is similar to the drag folder action. Note: This does NOT work in headless mode. It also does NOT work with Internet Explorer
Template files
The file should be in CSV or TXT format and contain the values and variables in the form:
some value, ${variable1}, another value
${variable2}, fixed value, ${variable3}
enter template stored value "keyName" into input file "fileField"
enter template "<FILE_URL>" into file input "fileField"
Phone calls
testRigor supports making a call through Twilio . There is a section in the application configuration under Integrations for setting Twilio parameters; it is required for making calls.
call "+15344297154" and validate it was picked up //example
make call to "+15344297154" and check it was answered //example
call to +15344297154 //example
call "+15344297154" and check it was completed //example
call "+15344297154" from "+15551234567" and verify it is ringing //example
check that phone call from "+15344297154" is ringing //example
check that phone call from "+15344297154" was answered //example
call from stored value "allocatedNumber" to stored value "answerPhoneNumber"
SMS messages (Phone Text)
You can send messages thanks to Twilio integration. There is a section in the application configuration under Integrations for setting Twilio parameters; it is required for sending messages.
sms "+15344297154" with body "this is content" and validate it was sent //example
send sms to "+15344297154" with content "this is content"
send message to "+15344297154" with text "this is content" and check it was delivered //example
send message from +15551234567 to "+15344297154" with text "this is content" and check it was failed
message from +15551234567 to "+15344297154" with body "this is content" and check it was not delivered
Number from which to send message is optional and may need to be allocated prior to using.
check that sms from "+12345678901" to "+12345678902" contains "Code" and matches regex "Code\:\d\d\d\d" and save it as "sms"
extract value
command to get just the code:check that sms to "+12345678902" matches regex "Code\:\d\d\d\d" and save it as "sms"
extract value by regex "(?<=Code\:)[0-9]{4}" from "sms" and save it as "confirmationCode"
send sms from stored value "allocatedNumber" to stored value "answerPhoneNumber" with content from string with parameters starting from next line and ending with <END>
${answerCode} b
<END>
example
You can request a temporary phone number from Twilio . There is a section in the application configuration under Integrations for setting Twilio parameters; it is required for making calls.
allocate a temporary number and save it as "newNumber"
This custom step will request a new phone number (Twilio charges will apply) and save it in a variable “newNumber”, which you can use to check for incoming calls or messages. When the test run finished, this number will be released automatically.
click "Sign in"
enter "jacob" into "Username"
enter "jacobs-secure-password" into "Password"
click "Verify me"
check that sms to "+12345678902" is delivered and matches regex "Code\:\d\d\d\d" and save it as "sms"
extract value by regex "(?<=Code\:)[0-9]{4}" from "sms" and save it as "confirmationCode"
enter saved value "confirmationCode" into "code"
click "Continue to Login"
check that page contains text "Welcome, Jacob!"
Login support
login
example
This action identifies and performs the necessary steps required to login to the application automatically. After running successfully the first time, it creates a rule named Autogenerated Login for the application containing the identified steps, that you can override by creating a reusable rule with the same name.
enter stored value "username" into "email"
enter stored value "password" into "password"
click "Log In"
Note that login command relies on having login credentials configured for your application on testRigor.
Email testing
send email to "[email protected]" with subject "Test message" and body "Hi, this is a test, this is just a test message."
check that email from "[email protected]" is delivered
send email from "[email protected]" to "[email protected]" with subject "Test message", and body "Hi, this is a test, this is just a test message.", and attachment from saved value "Sample File"
send email from "[email protected]" to "[email protected]" with subject "Test message", and body "Hi, this is a test, this is just a test message.", and attachment "http://online.com/file/name.pdf"
- “to” and “from” can be used at the same time. If not specified, “from” address will default to “[email protected]”.
- A stored file defined in “Test Data” can be used as an optional attachment. An attachment can also be a link to a file available online without username/password.
- Both “from” and “to” addresses can be filled from stored values (e.g., “to saved value “newEmail”” and/or “from saved value “newEmail””)
check that email to "[email protected]" from "[email protected]" is delivered //example
check that two emails to "[email protected]" and "Confirm" in subject were delivered //example
check that one or more emails to "[email protected]" and "Confirm" in subject were delivered //example
check that email to saved value "newEmail" was received //example
check that email to saved value "newEmail" from "[email protected]" and "Confirm" in subject was received //example
check that email to saved value "newEmail" and "<regular expression>" in subject was received
check that email to "[email protected]" and "Confirm" in subject was received and show in mobile
check that email to "[email protected]" from "[email protected]" was not delivered
- If the email count is not specified, we assume that only one message is expected. Multiple emails are treated as an error; so in order to avoid receiving the error message, specify the number of emails that should be expected or simply inform the system that more than one can be sent ad done below:
check that one or more emails to saved value "[email protected]" were received
- The user should send a message to the following address:
<random-user>@testrigor-mail.com
, where<random-user>
can be any string. In order to avoid overlap it is recommended that the user handle will contain customer name and some random part, e.g. [email protected] - The user is expected to add some wait time before checking email. This check action will validate delivery, but not wait for the message to arrive. For example,
wait 2 minutes
- Once the action has been executed successfully, the message is deleted from the mailbox and rendered in a new tab. Multiple emails will be marked as error, but each one will be rendered in a separate tab. You can switch between tabs using
switch to tab "1"
,switch to tab "2"
, etc. Note that old content will stay in the tab before the first rendered email message. In most cases it is tab “1”, unless you opened more tabs. - Each email tab is rendered as an html page, so you can use any actions that you would use on an html page. There are a few useful element ids that will help getting specific parts of an email:
- “message-froms” a list of “From” addresses (usually one address)
- “message-subject” subject line
- “message-date” message sent date and time in Pacific Time zone.
- “message-tos” a list of “To” addresses
- “message-ccs” a list of “CC” addresses
- “message-bccs” a list of “BCC” addresses
- “message-reply-to” “Reply To” address
- “message-text” the message text
- “message-attachments” a list of attachments (file names only)
- If you want to check again, you need to re-send the mail. Your custom actions cannot contain multiple “check” actions for the same message.
-
Multiple recipients can be separated with “and”:
send email to saved value "newEmail" and saved value "newEmail2" with subject "Test" and body "Hi"
- All messages will be deleted after 24 hours, whether checked or not.
Browser cookies, localStorage, sessionStorage, userAgent
set cookie "cookie value" as "cookie-name" //example
set cookie from saved value "variableName" as "cookie-name" //example
get cookie "cookie-name" and save it as "variableName" //example
clear cookies //example
set item "item-data" in sessionstorage as "item-name" //example
get item "item-name" from session storage and save it as "varName" //example
clear sessionstorage //example
set item "item-data" in localstorage as "item-name" //example
get item "item-name" from local storage and save it as "varName" //example
clear localstorage //example
set user agent to "My User Agent" //example
unset user agent //example
Audio testing
You can test audio by recording it and then comparing it with another recording in the same test or an external file.
Recording
record audio through 10 seconds after clicking "audio-trigger" and save as "my-recording"
record audio from "my-audio-tag" through 20 seconds after clicking "audio-trigger" and save as "my-specific-recording"
Comparing
check that audio from "my-recording" is "70%" similar to "my-specific-recording"
check that audio from "my-recording" is "85%" similar to "https://some-page.com/path-to-file"
The supported file extension for external files is .wav
check that audio from "my-recording" is "99%" similar to "my-specific-recording"
check that audio from "my-recording" is "1%" different to "my-specific-recording"
Playing
If you need to reproduce audio as it was someone speaking through a microphone you could load the .wav that is going to be reproduced from a remote file.
For tests running in linux, virtual devices are used (microphone/speakers) otherwise we attach to existing < audio > tags
play audio "https://some-page.com/path-to-file"
play audio "test-data-ref"
play audio "sound-to-play-ref" after clicking "start-recording" then click "stop-recording"
SQL Testing
You can use SQL in the steps for getting or inserting rows.
Select
run sql query "select top 1 UserID, LastName, FirstName from Users;"
enter stored value "FirstName" into "First name"
check that stored value "LastName" itself contains "Doe"
Insert
run sql query "insert into Users(UserID, FirstName, LastName) values (3, 'Jon', 'Doe');"
Comments support
//
like so:example