CLI reference
Every command and flag.
testedok <command> [options]run
testedok run [<flow.json | folder …>] [options]Runs one flow, or every *.json under a folder, and exits non-zero if any did not pass.
| Option | Effect |
|---|---|
--suite <name> | Run the flows a suite in testedok.yaml selects by tag; the flows folder is implied. |
--tag <name> | Run only flows carrying this tag. |
--env <name> | The environment to run against. |
--video | Record the device's screen for each run; the file lands beside the run's record and on the run page. |
--junit <file> | Write a JUnit XML report, for CI. |
--sim <udid> | The simulator (or Android serial) to use; default the first booted one. |
--android | Prefer an Android device when the flow does not say its platform. |
--project <name> | Send runs to a named project instead of the one that tests the app. |
--parallel <n> / --sims <a,b> | Spread flows over several booted iOS simulators. |
--no-replay | Decide every step afresh instead of following a saved route. |
--no-escalate | Never hand a step to the vision model. |
--shots | Keep a full-resolution PNG per step under the run's record. |
--idle-waits, --slow-events | Slower, more conservative XCUITest behaviour, for comparison. |
Runs are recorded under runs/, routes under routes/. Log lines look like:
# 3 TAP [57] "New Reminder" op 0.81 tgt 0.70 jev 432ms act 289ms obs 1456msStep number, operation, the element (its index in the tree and label), the model's confidence in the operation and the target, and time spent deciding (jev), acting and observing.
env
testedok env list # environments in testedok.yaml, the selected one marked
testedok env use <name> # remember a choice for this repository
testedok env init <bundleId> [--android] # write a starting testedok.yamlsecret
testedok secret set <name> [--org [--project <name>]] # asks for the value; --org shares it with the project
testedok secret rm <name> [--org]
testedok secret listaccount
testedok account add <role> <user> [--env <name>] # asks for the password
testedok account list
testedok account rm <id> · free <id> · broken <id>audit
testedok audit [<bundleId>] [--android]Lists the controls on screen that have no accessible name. With an app id it launches the app first; without, it reads whatever is on screen. Needs no account. See accessibility audit.
login, logout, whoami
testedok login # device login in the browser
testedok login --api-url <url> --token <token> # CI, with a token from the dashboard
testedok logout
testedok whoamimcp
testedok mcpServes the MCP tools over stdio; a coding agent starts it.
driver
testedok driver build | start | stop [--sim <udid>] [--port 22087]The iOS driver is an XCUITest runner TestedOK builds and starts on its own; these are for when you want to manage it.
Environment variables
| Variable | Meaning |
|---|---|
TESTEDOK_API_URL, TESTEDOK_TOKEN | Sign in without a config file (CI). |
TESTEDOK_ENV | The environment, when --env is not given. |
TESTEDOK_PROJECT | As --project. |
TESTEDOK_SECRET_<NAME> | A secret's value. |
TESTEDOK_HOME | Where the config and Keychain index live; default ~/.testedok. |
CI | When set, runs are marked as triggered by CI. |