Step Library: Every TestOwl Step Type
You'll find the library in the Step Palette of the Step Editor. Drag a step into your test, or click it to add it at the end, then configure it in the Properties Panel. Use the palette's search box to find a step by name.
The Recorder creates many of these steps for you automatically as you use your application.
Settings every step has
Almost every step includes these general settings in the Properties Panel:
| Setting | What it does |
|---|---|
| Name | The step's label in the Step Tree and in reports. |
| Description | An optional note explaining the step. |
| On Failure | What happens if the step fails: Fail Immediately (the default) stops the test; Continue But Fail Test keeps running the remaining steps but marks the test as failed; Warn But Continue Execution logs a warning and carries on as if nothing happened. |
| Use Smart Timeout | On by default. TestOwl automatically adjusts how long it waits for the step. |
| Timeout Value | Shown when Smart Timeout is off. How long to wait, in milliseconds (default 60000). |
Step-specific fields (the target element, the text to type, the value to expect, and so on) appear below these.
Steps by category
Navigation
Move around the browser, tabs, and windows.
| Step | What it does |
|---|---|
| Visit Page | Open a page URL. |
| Navigate Back | Go back in the browser history. |
| Navigate Forward | Go forward in the browser history. |
| Refresh Page | Reload the current page. |
| Open New Tab | Open a new browser tab. |
| Switch Tab | Switch to another open tab. |
| Close Tab | Close a browser tab. |
| Switch Window | Switch to another browser window. |
| Close Window | Close a browser window. |
| Handle Dialog | Accept or dismiss a native alert/confirm/prompt dialog. Add this BEFORE the step that opens it. |
Mouse
Click, hover, scroll, and select with the mouse.
| Step | What it does |
|---|---|
| Left Click | Click an element with the primary mouse button. |
| Double Click | Double-click an element. |
| Right Click | Open the context menu on an element. |
| Mouse Over | Move the mouse over an element. |
| Scroll | Scroll the page or an element to a position. |
| Text Selection | Select a range of text on the page. |
| Mouse Down | Press and hold a mouse button over an element. |
| Mouse Up | Release a mouse button over an element. |
| Move Mouse To Element | Move the pointer over an element. |
Keyboard
Press keys and move focus.
| Step | What it does |
|---|---|
| Key Down | Press a keyboard key. |
| Focus Change | Move keyboard focus to an element via Tab. |
| Press Key Combination | Press a key combination (e.g. Control+S). |
Input
Fill in and change form controls.
| Step | What it does |
|---|---|
| Type Text (palette search: "Type") | Type text into an element. |
| Select Option (palette search: "Select") | Select option values from a dropdown. |
| Checkbox | Set checkbox values. |
| Rich Text Input (palette search: "Rich Text") | Type text into a contenteditable element. |
| Range Change (palette search: "Range") | Move a range slider to a value. |
| Radio | Select a radio button. |
| Clear | Clear the value of an input element. |
| Blur Element | Remove focus from an element. |
| Set Date | Set the value of a date input. |
| Set Time | Set the value of a time input. |
| Set Date Time | Set the value of a datetime input. |
Form
Submit forms.
| Step | What it does |
|---|---|
| Form Submit | Submit a form. |
Clipboard
Copy, cut, and paste.
| Step | What it does |
|---|---|
| Copy | Copy from a target element. |
| Cut | Cut from a target element. |
| Paste | Paste into a target element. |
Drag
Drag and drop elements.
| Step | What it does |
|---|---|
| Drag and Drop (palette search: "Drag Drop") | Drag an element and drop it onto a target. |
| Drag By Offset | Drag an element by a pixel offset. |
Gesture
Touch gestures for mobile and tablet tests.
| Step | What it does |
|---|---|
| Gesture | Perform a touch gesture. |
| Double Tap | Double-tap an element (touch devices). |
| Zoom | Pinch-zoom in or out (touch devices). |
| Change Orientation | Change the device orientation. |
File
Upload and download files.
| Step | What it does |
|---|---|
| File Input | Upload one or more files via a file input. |
| File Remove | Remove an attached file from a file input. |
| Download File | Download a file triggered by a click or URL. |
Media
Control audio and video playback.
| Step | What it does |
|---|---|
| Media | Control audio or video playback. |
Viewport
Resize the window, go fullscreen, and take screenshots.
| Step | What it does |
|---|---|
| Resize Viewport | Resize the browser viewport to specific dimensions. |
| Fullscreen | Enter or exit fullscreen mode. |
| Take Screenshot | Capture a screenshot of the page or an element. |
Wait
Pause until something is ready, or for a fixed time.
| Step | What it does |
|---|---|
| Wait/Delay | Wait for a fixed duration. |
| Wait for Visible | Wait until an element is visible. |
| Wait for Hidden | Wait until an element is hidden. |
| Wait for Enabled | Wait until an element is enabled. |
| Wait for Animation | Wait until a CSS animation settles. |
| Wait for Count | Wait until a number of matching elements exists. |
| Wait for URL | Wait until the page URL matches a pattern. |
| Wait for Function | Wait until a JavaScript expression returns truthy. |
| Wait For Element | Wait for an element to appear. |
| Wait For Element Attached | Wait for an element to be attached to the DOM. |
| Wait For Element Detached | Wait for an element to be detached from the DOM. |
| Wait For Element Disabled | Wait for an element to become disabled. |
| Wait For Page Load | Wait for the page load event. |
| Wait For DOM Ready | Wait for the DOM to be ready. |
| Wait For Title Change | Wait for the page title to change. |
| Wait For Condition | Wait until a JavaScript condition holds. |
| Wait For Variable Value | Wait until a variable has the expected value. |
| Wait For API Completion | Wait for a pending API call to complete. |
| Wait For Request | Wait for a matching network request. |
| Wait For Response | Wait for a matching network response. |
| Wait For Download | Wait for a download to complete. |
| Wait For Upload | Wait for an upload to complete. |
Assertion
Check that your application behaves as expected.
| Step | What it does |
|---|---|
| Assert Text | Assert element text content. |
| Assert Visible | Assert element visibility. |
| Assert Enabled | Assert element enabled state. |
| Assert Checked | Assert element checked state. |
| Assert Select | Assert select element value. |
| Assert Order | Assert the order of items in a list. |
| Assert Column | Assert a Kanban/grid item belongs to a column. |
| Assert Network | Assert a network request URL, method, and payload. |
| Assert Visual Diff | Compare a screenshot against a stored baseline. |
| Assert Attribute | Assert an HTML attribute value. |
| Assert Value | Assert an input or form control current value. |
| Assert CSS | Assert a computed CSS property value. |
| Assert Count | Assert the number of matching elements. |
| Assert URL | Assert the current page URL. |
| Assert Title | Assert the page title. |
| Assert Local Storage | Assert local storage values. |
| Assert Session Storage | Assert session storage values. |
| Assert Cookie | Assert a browser cookie value. |
| Element Exists | Assert that an element exists in the DOM. |
| Element Not Exists | Assert that an element does not exist in the DOM. |
| Element Editable | Assert that an element is editable. |
| Element Focused | Assert that an element has focus. |
| Attribute Not Exists | Assert that an element attribute is absent. |
| Count Between | Assert that the element count falls within a range. |
| Page Contains Text | Assert that the page contains the given text. |
| Page Not Contains Text | Assert that the page does not contain the given text. |
| Expression | Assert that a JS expression evaluated in the page returns the expected boolean. |
| Status Code Equals | Assert the captured API response status code. |
| Response Time Less Than | Assert the captured API response time. |
| Response Header Equals | Assert a captured API response header. |
| Response Body Contains | Assert the captured API response body content. |
| JSON Path Equals | Assert a JSONPath value in the captured API response. |
| JSON Schema Valid | Validate the captured API response against a JSON schema. |
| Response Body Size | Assert the byte size of the captured API response body. |
| Record Exists | Assert that a database record exists. |
| Record Not Exists | Assert that a database record does not exist. |
| Record Count Equals | Assert a database record count. |
| File Exists | Assert that a downloaded file exists. |
| File Contains Text | Assert that a downloaded file contains text. |
| Email Received | Assert that an email was received in the test inbox. |
| Email Subject Equals | Assert a received email’s subject. |
| Email Body Contains | Assert a received email’s body content. |
| No Accessibility Violations | Run an axe-core scan and assert no violations at or above the impact level. |
| ARIA Attribute Exists | Assert that an ARIA attribute exists on an element. |
| Valid Contrast Ratio | Assert an element’s text contrast ratio meets the threshold. |
| Pixel Comparison | Compare a screenshot against a stored baseline pixel-by-pixel. |
| Region Comparison | Compare a page region against a stored baseline, with exclusions. |
Control Flow
Add conditions, loops, and retries.
| Step | What it does |
|---|---|
| If / End | Create an if block with an end branch. |
| If / Else | Create true and else branches. |
| For Loop | Create a loop branch. |
| Switch | Run the case matching the subject value. |
| For Each | Loop over the items of a list or JSON array. |
| While Loop | Loop while the condition holds. |
| Repeat Until | Loop until the condition holds (runs at least once). |
| Break | Exit the innermost loop. |
| Continue | Skip to the next loop iteration. |
| Return | Stop executing the current flow or test body. |
| Stop Test | Stop the test with the given result. |
| Retry Step | Retry a single wrapped step until it passes. |
| Retry Block | Retry a block of steps until it passes. |
Extraction
Read values from the page into variables.
| Step | What it does |
|---|---|
| Get Text | Extract an element’s text content into a variable. |
| Get Inner Text | Extract an element’s rendered innerText into a variable. |
| Get Inner HTML | Extract an element’s innerHTML into a variable. |
| Get Attribute | Extract an element attribute into a variable. |
| Get CSS Property | Extract a computed CSS property into a variable. |
| Get Value | Extract an input’s value into a variable. |
| Get Element Count | Count matching elements into a variable. |
| Get Table Data | Extract a table’s rows into a variable. |
| Get List Data | Extract a list’s items into a variable. |
| Get Current URL | Extract the browser’s current URL into a variable. |
Data & Variables
Create, change, and generate values while the test runs.
| Step | What it does |
|---|---|
| Create Variable | Create a runtime variable. |
| Update Variable | Update a runtime variable. |
| Delete Variable | Delete a runtime variable. |
| Generate Random String | Generate a random string into a variable. |
| Generate Random Number | Generate a random number into a variable. |
| Generate Random Email | Generate a random email address into a variable. |
| Generate UUID | Generate a UUID into a variable. |
| Current Date | Store the current date/time into a variable. |
| Add Days | Add days to a date variable. |
| Subtract Days | Subtract days from a date variable. |
| Format Date | Format a date value into a variable. |
| Parse JSON | Parse a JSON string into a variable. |
| String Replace | Replace text within a string variable. |
| String Split | Split a string into an array variable. |
| String Join | Join array items into a string variable. |
| String Trim | Trim whitespace from a string variable. |
| Array Push | Append an item to an array variable. |
| Array Remove | Remove an item from an array variable. |
| Array Length | Store an array’s length into a variable. |
| Object Get | Read a property from an object variable. |
| Object Set | Set a property on an object variable. |
| Add | Add two numbers into a variable. |
| Subtract | Subtract one number from another into a variable. |
| Multiply | Multiply two numbers into a variable. |
| Divide | Divide one number by another into a variable. |
| Modulo | Store the remainder of dividing one number by another into a variable. |
| Calculate Expression | Evaluate an arithmetic expression into a variable. |
Browser Storage
Work with cookies, local storage, and session storage.
| Step | What it does |
|---|---|
| Set Cookie | Set a browser cookie. |
| Get Cookie | Read a cookie value into a variable. |
| Delete Cookie | Delete a cookie by name. |
| Clear Cookies | Clear all cookies for the current context. |
| Set Local Storage | Set a localStorage entry. |
| Get Local Storage | Read a localStorage entry into a variable. |
| Remove Local Storage | Remove a localStorage entry. |
| Clear Local Storage | Clear all localStorage entries. |
| Set Session Storage | Set a sessionStorage entry. |
| Get Session Storage | Read a sessionStorage entry into a variable. |
| Clear Session Storage | Clear all sessionStorage entries. |
API
Send HTTP requests and check the response.
| Step | What it does |
|---|---|
| Send API Request | Send an HTTP request and capture the response. |
Network
Intercept, change, mock, or block network traffic.
| Step | What it does |
|---|---|
| Intercept Request | Intercept matching network requests. |
| Mock Response | Mock the response for matching requests. |
| Modify Request | Modify matching requests before they are sent. |
| Modify Response | Modify matching responses before the page sees them. |
| Block Request | Block matching network requests. |
Database
Run queries against a configured database.
| Step | What it does |
|---|---|
| Execute Query | Execute a SQL query against a configured database. |
| Execute Stored Procedure | Execute a stored procedure against a configured database. |
Util
Notes and custom code.
| Step | What it does |
|---|---|
| Comment | Add a note. Never executed. |
| Code Execution | Run custom JavaScript in the page. |
Reusing steps as Flows
A Flow is a saved group of steps you can drop into any test as a single block. Flows appear in their own Flows list in the Step Palette. See Flows.
The library keeps growing