Running

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.

OptionEffect
--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.
--videoRecord 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.
--androidPrefer 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-replayDecide every step afresh instead of following a saved route.
--no-escalateNever hand a step to the vision model.
--shotsKeep a full-resolution PNG per step under the run's record.
--idle-waits, --slow-eventsSlower, 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 1456ms

Step 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.yaml

secret

testedok secret set <name> [--org [--project <name>]]   # asks for the value; --org shares it with the project
testedok secret rm <name> [--org]
testedok secret list

account

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 whoami

mcp

testedok mcp

Serves 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

VariableMeaning
TESTEDOK_API_URL, TESTEDOK_TOKENSign in without a config file (CI).
TESTEDOK_ENVThe environment, when --env is not given.
TESTEDOK_PROJECTAs --project.
TESTEDOK_SECRET_<NAME>A secret's value.
TESTEDOK_HOMEWhere the config and Keychain index live; default ~/.testedok.
CIWhen set, runs are marked as triggered by CI.