Skip to main content
qawolf flows run --env <env_id> is the recommended path. It runs your team’s flows from the local .qawolf/<env_id>/ cache, pulling them first only if they are not already cached locally, then installs the npm dependencies and Playwright browsers they need and runs them. Android flows require installing the Android tooling first with qawolf install android. See Install dependencies.
Authenticate the CLI first. See Authenticate the QA Wolf CLI.

Run an environment

1
Find the environment’s ID — see Pull an environment.
2
From any directory, run:
The CLI:
  1. checks the local .qawolf/<env_id>/ cache, and pulls the environment’s flows only if they are not already cached
  2. loads the environment’s .env file
  3. installs the npm dependencies and Playwright browsers the flows need
  4. runs every flow
To refresh the local cache against the platform, run qawolf flows pull --env <env_id>. See Pull your team’s flows.

Run a subset

Pass a glob pattern to limit which flows run:
With --env, the CLI matches patterns against the pulled cache under .qawolf/<env_id>/. Without --env, it matches patterns against both the current directory and the pulled cache.

Watch the browser

Pass --headed to see the browser window during a web run:
--headed does not apply to Android flows.

Capture artifacts on failure

By default, the CLI records no video or trace. To keep artifacts only when a flow fails, set the mode to retain-on-failure:
Artifacts land in qawolf-output/ (or the directory set by --output-dir). To record HAR files of network traffic:
By default the HAR captures headers and timing only. To include response bodies, pass --har-content full. Response bodies use significantly more memory and disk.

Retry failing flows

The CLI retries each failing flow up to the given number of times. It counts a flow that passes on retry as a pass for exit-code purposes.

Stop after the first failure

--bail is useful when iterating on a single flow and you want to fail fast.

Run web flows in parallel

--workers controls how many web flows run concurrently. Android flows only run one at a time — see --workers for the exact rule.

Write a JUnit XML report

The CLI writes a JUnit XML report to qawolf-output/junit-report.xml (or under the directory set by --output-dir). Pass an explicit path to override the default:
The CLI writes the XML report alongside the console output, independent of --json and --agent.

Run flows you authored locally

If you’ve scaffolded a local-only project with qawolf init, run without --env:
The CLI discovers flows matching **/*.flow.{ts,js} in the current directory and runs them against locally-installed runtime dependencies. See Install dependencies if you need to install browsers or Android tooling explicitly.

Exit codes

qawolf flows run exits with 0 when every flow passes and 1 when one or more fail. See Exit codes for the full list.

Limitations

  • Android flows must run with --workers 1. Only web flows run in parallel.
  • The CLI does not execute iOS flows. It skips them with a warning.
  • Flows that target the legacy "Basic" platform pull successfully, but the CLI cannot execute them.
  • The CLI skips flows where target is a computed value rather than a string literal, because it cannot determine the platform ahead of time.
Last modified on September 16, 2026