Top-level schema
| Path | Type | Required | Notes |
|---|---|---|---|
$ | object | Yes | Scenario root |
$.meta | object | Yes | Scenario metadata |
$.config | object | Yes | Runtime defaults |
$.steps | array | Yes | Must be a non-empty list |
$.assertions | array | No | Defaults to empty list when omitted or null |
$.output | object | No | Output preferences |
metaconfigstepsassertionsoutput
meta
Allowed fields:
| Path | Type | Required | Notes |
|---|---|---|---|
$.meta.name | string | Yes | Scenario name |
$.meta.version | string | Yes | Scenario version |
$.meta.platform | string | Yes | Must be ios or android |
$.meta.tags | array | No | Free-form tags |
config
Allowed fields:
| Path | Type | Required | Notes |
|---|---|---|---|
$.config.timeoutMs | number | No | Per-step timeout threshold |
$.config.seed | number | No | Missing seed triggers a warning |
$.config.artifactsDir | string | No | Default report output directory |
steps[]
Each step must be an object with these fields:
| Path | Type | Required | Notes |
|---|---|---|---|
$.steps[i].id | string | Yes | Step identifier |
$.steps[i].command | string | Yes | One of the supported commands |
$.steps[i].args | object | Yes | Command-specific arguments |
tapnavigateactscrollscreenshotwaitsource
Step argument rules
tap
Valid forms:
- cannot mix
targetwithxory - if using coordinates, both
xandyare required - if present,
normalizedmust be boolean
navigate
Required field inside args:
to
act
Validation only checks that args is present.
Runtime support is narrower than schema support. The runtime currently accepts:
name=typewithtargetandvaluename=back
scroll
Required field inside args:
directionwith valueupordown
args:
percent
directionis requireddirectionmust beupordown- if present,
percentmust be a number between1and100
screenshot
No hard schema requirement beyond args, but missing label triggers a warning because it reduces determinism.
wait
Required field inside args:
ms
source
No additional schema requirement beyond args.
assertions[]
Each assertion must be an object with these fields:
| Path | Type | Required | Notes |
|---|---|---|---|
$.assertions[i].id | string | Yes | Assertion identifier |
$.assertions[i].type | string | Yes | Runtime only supports visible |
$.assertions[i].target | string | Yes | Selector string |
output
Allowed fields:
| Path | Type | Required | Notes |
|---|---|---|---|
$.output.report | any | No | Accepted as a field name, but not interpreted by the current report writer |