Skip to main content
The top-level @qawolf/flows entry point exposes cross-platform helpers and types.

Primary exports

  • platform.target
  • configureTarget(...)
  • getCurrentScope()
  • resetTarget()
  • FailWithoutRetryError
It also re-exports:
  • type Target
  • type TargetScope

Target literals

The target string must exactly match one of the supported values or your flow will fail to initialize.
See Target names for how to read a target name, and Renamed and retired targets for the old names that flows can still use. Example:

Target names

Android and iOS target names follow the pattern <Platform> - <Model> (<Version> | <Qualifier>). The qualifier is optional.
  • Model — a device model, such as Google Pixel 9 or iPhone 15. Any Phone, Any Tablet, Any iPhone and Any iPad accept any model of that kind.
  • Version — the OS marketing version, such as Android 16 or iOS 26. Latest points to a version that QA Wolf chooses and moves forward over time. Flows that use Latest follow it with no edit.
  • Emulator — the flow runs on an Android emulator. An Android target without it runs on a real phone. iOS targets always run on real devices.
  • Allowlisted and Private — the flow runs on allowlisted or private iOS devices. See iOS Device Pools for when to use them and how to set them up. For dedicated Android phones, see Dedicated phones.
  • Apple ID — the flow runs on an iOS device that is signed in to an Apple ID.

Renamed and retired targets

In October 2026, QA Wolf renamed its Android and iOS targets to follow the pattern above. A flow that uses an old name keeps working and runs on the same devices. The editor suggests only the new names. QA Wolf no longer runs flows on iOS 17. A run of a flow that uses a retired name fails, and the error names the replacement.

platform.target

platform.target is a getter on a frozen object. Every access reads the currently configured target.
Example with setup:
It throws if no target has been configured. It always reflects the latest value set through configureTarget(...).

configureTarget(...)

Use this to set the active target in local execution or tests.
The input shape is:

getCurrentScope()

Returns the current configured target scope, or undefined when no target has been configured yet. Example:

resetTarget()

Clears the configured target scope. Use this in tests to avoid leaking target state across cases. Example:

FailWithoutRetryError

This is a dedicated error class whose message is "failWithoutRetry". Use it when flow execution should fail immediately rather than being treated as retryable by the surrounding runtime. Example:
Last modified on September 16, 2026