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 ahead of time.
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:
- checks the local
.qawolf/<env_id>/cache, and pulls the environment’s flows only if they are not already cached - loads the environment’s
.envfile - installs the npm dependencies and Playwright browsers the flows need
- runs every flow
qawolf flows pull --env <env_id>. See Refresh a pulled environment.Run a subset
Pass a glob pattern to limit which flows run:--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 toretain-on-failure:
.qawolf/output/ (or the directory set by --output-dir).
To record HAR files of network traffic:
--har-content full. Response bodies use significantly more memory and disk.
Retry failing flows
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
.qawolf/output/junit-report.xml (or under the directory set by --output-dir). Pass an explicit path to override the default:
--json and --agent.
Run flows you authored locally
If you’ve scaffolded a local-only project withqawolf init, run without --env:
**/*.flow.{ts,js} in the current directory and runs them against locally-installed runtime dependencies. See Install dependencies ahead of time if you need to install browsers or Android tooling explicitly.
Pull an environment
A run pulls for you, so you only needqawolf flows pull when you want the flow files without running them: to inspect them, commit them to a repository, or refresh a stale cache.
1
Find the environment’s ID in the QA Wolf app. Open Workspace settings → Environments and select the environment. Copy the
id query parameter from the page URL: https://app.qawolf.com/<team_slug>/settings/environments?id=<env_id>. Use that value, not the environment’s display name.2
Pull the flows:The CLI writes flows to
.qawolf/<env_id>/ by default. To use a different destination, pass --out:3
List the pulled flows:
What pull writes
Inside .qawolf/<env_id>/, the CLI stores:
- the flow source files
- a manifest tracking what was pulled and when
- an
assets/directory with the environment’s file assets from team storage, wired up so flows resolve them locally - a
.envfile with the environment’s variables, loaded automatically byqawolf flows run
Refresh a pulled environment
Runqawolf flows pull --env <env_id> again. The CLI prompts before overwriting any file you’ve modified locally. To skip the prompt and overwrite, pass --yes:
List flows on the platform
To see what is available on the platform without pulling, use--remote:
What’s not pulled
QA Wolf doesn’t download mobile app binaries. Mobile flows reference the APK or IPA build through an environment variable, so make sure that path points to a build available on the machine before running. Flows that read paths from runner-onlyQAWOLF_*_DIR environment variables also cannot resolve those paths locally; qawolf doctor flags both cases.
Install dependencies ahead of time
A run installs npm dependencies and Playwright browsers automatically before its first run, so web-only users rarely invokeqawolf install directly. A run doesn’t install Android dependencies; run qawolf install android before running Android flows. Use qawolf install to install ahead of time — for example, to warm a CI cache between the checkout step and the run step — or when running flows from a local-only project.
From the project root, run:
target, and installs the dependencies required by every target it finds.
Install only for specific flows
Pass a pattern to limit which flows are considered:Install browsers only
playwright install for the browsers your web flows target.
Install Android dependencies only
Set
ANDROID_HOME (or ANDROID_SDK_ROOT) to the path of your Android SDK before running this command. Install the SDK through Android Studio’s SDK Manager or the standalone cmdline-tools package.iOS support
The CLI cannot yet execute iOS flows.qawolf install skips them with a warning. iOS support requires macOS with Xcode when it ships.
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
targetis a computed value rather than a string literal, because it cannot determine the platform ahead of time.