Step reference
Every step type AutoTestX supports, with all of its parameters. The editor builds its
forms from the same registry (packages/dsl/src/registry.ts), so the names here
match the editor.
How to read the tables
- Type is the name stored in the test file (
"type": "click"). Label is what the editor shows. - Target: whether the step acts on an element and needs a target.
- Engines:
webonly, orall(web, Android, iOS). - Parameter kind: template means literal text in which
{{…}}is substituted; expression means the whole field is one expression; fixed means the text is used exactly as written. - Every step also accepts the common settings below.
Common settings (all steps)
Section titled “Common settings (all steps)”| Setting | DSL field | Meaning |
|---|---|---|
| Step name | label |
Name shown in the editor and reports |
| Timeout | timeoutMs |
Time limit for this step. Default: the test’s default (30 s). |
| Retries | retry |
Extra attempts after a failure. Default: the test’s default (0). |
| On error | onError |
abort, continue or ignore. See Error handling. |
| Soft assertion | soft |
Validation steps: record the failure, continue, fail the run at the end |
| Skip this step | disabled |
Keep the step but do not run it |
After every Browser and Interaction step, the runner waits for the page to settle (navigation, pending requests) before the next step, so steps see the page a person would see.
Browser
Section titled “Browser”Open — browser.open
Section titled “Open — browser.open”Navigate to a URL. Target: no. Engines: web.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
url |
template | yes | Address to open, e.g. {{baseUrl}}/orders |
|
waitUntil |
fixed | load |
When navigation counts as done: load, domcontentloaded, networkidle |
Back — browser.back · Forward — browser.forward · Refresh — browser.refresh
Section titled “Back — browser.back · Forward — browser.forward · Refresh — browser.refresh”Browser history back, forward, and reload. No parameters. Target: no. Engines: web.
Interaction
Section titled “Interaction”Click — click
Section titled “Click — click”Click an element. Target: yes. Engines: all. Healable.
| Param | Default | Meaning |
|---|---|---|
button |
left |
left, right, middle |
force |
false | Click even if the element looks covered or not ready. Use sparingly. |
Double click — doubleClick
Section titled “Double click — doubleClick”Double-click an element. No parameters. Target: yes. Engines: all.
Type — input
Section titled “Type — input”Type a value into a field. Target: yes. Engines: all.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
value |
template | yes | Text to type, e.g. {{secret.APP_PASSWORD}} or PO for {{vendor}} |
|
clearFirst |
true | true: replace the field’s content in one go. false: type key by key after the existing content (for fields that react to each keystroke). | ||
sensitive |
false | Treat the typed value as a secret: masked in reports and logs |
Clear — clear
Section titled “Clear — clear”Empty a field. No parameters. Target: yes. Engines: all.
Select — select
Section titled “Select — select”Choose an option in a dropdown (<select>). Target: yes. Engines: web.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
value |
template | yes | The option to choose | |
by |
value |
Match the option’s value attribute, its visible label, or its index (0-based) |
Check — check
Section titled “Check — check”Set a checkbox or radio button. Target: yes. Engines: all.
| Param | Default | Meaning |
|---|---|---|
checked |
true | true to tick, false to untick |
Upload file — upload
Section titled “Upload file — upload”Attach files to a file input. Target: yes. Engines: web.
| Param | Kind | Required | Meaning |
|---|---|---|---|
files |
template | yes | One path per line. Absolute paths are used as-is. Relative paths are resolved against the server’s files folder, <ATX_DATA_DIR>/files (CLI: the --files folder, default the test file’s folder). |
There is no screen for adding files to the files folder yet. An administrator copies them
there (e.g. /var/lib/autotestx/files/invoice.pdf, then files = invoice.pdf). The
folder is shared by all projects on the server.
The target may be the <input type="file"> itself or a styled Browse button. For a
button, the file chooser it opens is intercepted, because operating-system dialogs
cannot be driven.
Hover — hover
Section titled “Hover — hover”Move the mouse over an element, e.g. to open a menu. No parameters. Target: yes. Engines: web.
Press key — keyboard
Section titled “Press key — keyboard”Press a key or chord on the page. Target: no. Engines: all.
| Param | Required | Meaning |
|---|---|---|
key |
yes | Playwright key name: Enter, Tab, Escape, ArrowDown, Control+A, Shift+Tab |
Lookup — lookup
Section titled “Lookup — lookup”Choose values in a lookup dialog, searching its pages for each one. Target: yes (the opener, the button or icon that shows the lookup). Engines: web. Block: its children are optional setup steps replayed inside the lookup before searching (e.g. type in the search box, click Search).
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
values |
template list | yes* | The values to choose, found by identity (text), never by row position. Up to 100. *Not needed for cancel. |
|
completion |
yes | select: clicking a value chooses it and closes the lookup (one value only). ok: select every value, then click OK. cancel: dismiss the lookup. |
||
match |
equals |
equals or contains |
||
column |
Header of the result column the values appear in, when there are several | |||
selection |
persistent: selections survive paging. pageLocal: paging drops selections, so all values must be on one page. |
|||
selectBy |
click |
click the value, or tick its row’s checkbox |
||
maxPages |
25 | Most result pages to search (max 500) | ||
window |
false | The lookup opens in its own browser window | ||
verifyUnchanged |
false | cancel only: fail if the parent field’s value changed. Needs the field control. |
||
controls |
Targets for the lookup’s own parts: dialog, result, next, previous, ok, cancel, searchField, searchButton, field |
|||
history |
What the tester did while recording, kept for review and never replayed |
Rules: ok needs the ok control; cancel needs the cancel control; select takes
one value. A retry dismisses the lookup and starts again from scratch. Usually created by
the recorder.
Validation
Section titled “Validation”All validation steps can be soft (see Error handling). A failed assertion reports expected and actual.
Exists — assert.exists
Section titled “Exists — assert.exists”Assert an element exists in the page. Target: yes. Engines: all.
| Param | Default | Meaning |
|---|---|---|
negate |
false | true: assert it does not exist |
Visible — assert.visible
Section titled “Visible — assert.visible”Assert an element is visible. Target: yes. Engines: all.
| Param | Default | Meaning |
|---|---|---|
negate |
false | true: assert it is not visible |
Text — assert.text
Section titled “Text — assert.text”Assert an element’s text (trimmed). Target: yes. Engines: all.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
expected |
template | yes | Expected text | |
match |
equals |
equals, contains, regex |
||
negate |
false | true: assert it does not match |
Value — assert.value
Section titled “Value — assert.value”Assert the value of a form field (exact match). Target: yes. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
expected |
template | yes | Expected value |
negate |
true: assert it is not this value |
Attribute — assert.attribute
Section titled “Attribute — assert.attribute”Assert an attribute of an element (exact match). Target: yes. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
name |
fixed | yes | Attribute name, e.g. aria-disabled, href, class |
expected |
template | yes | Expected value. A missing attribute counts as "". |
negate |
true: assert it is not this value |
URL — assert.url
Section titled “URL — assert.url”Assert the current page address. Target: no. Engines: web.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
expected |
template | yes | Expected URL | |
match |
equals |
equals, contains, regex |
Expression — assert.expression
Section titled “Expression — assert.expression”Assert that an expression is true. Target: no. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
expression |
expression | yes | Must evaluate to true/false, e.g. STARTS_WITH(poNumber, 'PO-') AND LENGTH(poNumber) > 3 |
Control
Section titled “Control”Wait — wait
Section titled “Wait — wait”Wait a fixed time. Target: no. Engines: all. Prefer Wait for element or Poll API; fixed waits make tests slow and flaky.
| Param | Required | Meaning |
|---|---|---|
ms |
yes | Milliseconds, 1 to 300000 |
Wait for element — wait.element
Section titled “Wait for element — wait.element”Wait for an element to reach a state. Target: yes. Engines: all.
| Param | Default | Meaning |
|---|---|---|
state |
visible |
visible, hidden, attached (in the page, maybe hidden), detached (removed). For hidden/detached, an element that cannot be found counts as success. |
Wait for network — wait.networkIdle
Section titled “Wait for network — wait.networkIdle”Wait until network activity settles. Target: no. Engines: web.
| Param | Meaning |
|---|---|
idleMs |
Accepted but currently ignored: the step waits for the browser’s standard network idle state, limited by the step timeout |
Screenshot — screenshot
Section titled “Screenshot — screenshot”Capture a screenshot into the run report. Always captured, whatever the screenshot setting of the run. Target: no. Engines: all.
| Param | Default | Meaning |
|---|---|---|
name |
Name for the image | |
fullPage |
false | Capture the whole scrollable page, not just the window |
If / Else — control.if
Section titled “If / Else — control.if”Run the child steps when a condition is true, otherwise the otherwise (orElse)
steps. Target: no. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
condition |
expression | yes | e.g. {{status}} == 'Approved' or COUNT(lines) > 0 |
For each — control.forEach
Section titled “For each — control.forEach”Repeat the child steps for each item of a list. Target: no. Engines: all.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
items |
expression | yes | A list, e.g. lines (a test variable) or orders.body.items |
|
as |
fixed | yes | Name of the loop variable, e.g. line. Inside: {{line.item}}. |
|
maxIterations |
list length | Upper bound (max 10000) |
items must be a list, or the step fails.
Repeat — control.repeat
Section titled “Repeat — control.repeat”Repeat the child steps a fixed number of times. Target: no. Engines: all.
| Param | Required | Meaning |
|---|---|---|
times |
yes | 1 to 10000 |
as |
Optional counter variable, starting at 0 |
While — control.while
Section titled “While — control.while”Repeat the child steps while a condition holds. Target: no. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
condition |
expression | yes | Checked before each iteration |
maxIterations |
yes | Ceiling (max 10000). Reaching it fails the step. | |
maxDurationMs |
Time ceiling (max 1800000). Exceeding it fails the step. |
Every loop has a ceiling, so a misbehaving application ends the test with a clear failure instead of hanging.
Extract — extract
Section titled “Extract — extract”Read a value from an element into a runtime variable. Target: yes. Engines: all.
| Param | Required | Default | Meaning |
|---|---|---|---|
saveAs |
yes | Variable name, e.g. poNumber. Later steps use {{poNumber}}. |
|
from |
text |
text (visible text, whitespace normalised), value (form field value), attribute |
|
attribute |
Attribute name when from is attribute |
Extracted values are always text. Use NUMBER(x) to compare them as numbers.
Set variable — setVariable
Section titled “Set variable — setVariable”Set a runtime variable from an expression. Target: no. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
name |
fixed | yes | Variable name |
value |
expression | yes | e.g. CONCAT('Vendor ', NOW()), COUNT(lines), qty * 2 |
value is an expression, so text needs quotes: 'Approved', not Approved.
Custom code — script.run
Section titled “Custom code — script.run”Run a sandboxed JavaScript or TypeScript snippet. Target: no. Engines: web. Needs the Write custom code permission to create or change. See Custom code.
| Param | Required | Default | Meaning |
|---|---|---|---|
source |
yes | Function body, up to 20000 characters. return a value or throw to fail. Not a template. |
|
language |
javascript |
javascript or typescript |
|
assignTo |
Variable for the returned value. Empty: the step is a check. | ||
secrets |
none | Secret names the code may read (max 20) | |
timeLimitMs |
1000 | CPU time (max 10000; the step timeout also applies) |
Integration
Section titled “Integration”Call component — component.call
Section titled “Call component — component.call”Run a pinned version of a component. Target: no. Engines: all.
| Param | Kind | Required | Meaning |
|---|---|---|---|
componentId |
yes | The component | |
version |
yes | The pinned version number. Never “latest”. | |
arguments |
template map | Parameter name → value, evaluated in the caller’s scope |
HTTP request — http.request
Section titled “HTTP request — http.request”Send an HTTP request and remember the response. Target: no. Engines: web. Shares the browser session’s cookies. See API testing.
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
url |
template | yes | Absolute URL | |
method |
GET |
GET, POST, PUT, PATCH, DELETE, HEAD |
||
headers |
template map | Header name → value | ||
body |
template | Request body as text; JSON is detected | ||
expectStatus |
any 2xx | 201, 2xx, 200,204, any |
||
saveAs |
Variable receiving { status, ok, headers, body, durationMs } |
|||
sensitive |
false | Mask the response body in reports and variables |
Poll API — http.poll
Section titled “Poll API — http.poll”Repeat an HTTP request until the response meets a condition. Target: no. Engines: web.
All http.request parameters, plus:
| Param | Kind | Required | Default | Meaning |
|---|---|---|---|---|
until |
expression | yes | Checked after each response, available as response |
|
intervalMs |
1000 | Pause between requests (max 60000) | ||
maxAttempts |
until timeout | Most requests (max 1000). The step timeout always limits the poll. |
Engine support summary
Section titled “Engine support summary”| Web only | All engines |
|---|---|
| Open, Back, Forward, Refresh, Select, Upload file, Hover, Lookup, URL, Wait for network, Custom code, HTTP request, Poll API | Click, Double click, Type, Clear, Check, Press key, Exists, Visible, Text, Value, Attribute, Expression, Wait, Wait for element, Screenshot, If / Else, For each, Repeat, While, Extract, Set variable, Call component |
Changing a test’s engine re-validates every step against this table. Only the web engine is implemented today.