You need the noqa macOS app running and the CLI installed. To drive it with an AI agent, see CLI for agents: skill setup, token-efficient screen reads, and the agent test loop.
Setup
1
Install and open the app
Download noqa and install it. Keep the app running — the CLI talks to it locally, so it must be open for any command to work. Sign in for account features (test management, running the agent); base commands work without an account.
2
Install the CLI
In the app, open Settings → Tools and click Install CLI. This links the
noqa command into ~/.local/bin and adds it to your PATH — no sudo required. Restart your terminal afterward.3
Install the skill (for AI agents)
In the same Settings → Tools, click Install skill to install the
noqa-testing skill for your coding agent, so it knows the commands and workflows. Skip it if you only use the CLI by hand. See CLI for agents.4
Verify
Base commands
No account and no app prefix needed. Connect a device first withnoqa devices connect — screen and action run against the connected device.
Devices
Inspect the screen
Actions
Gestures (tap, swipe, drag, pinch, input) target an element two ways. Prefer describing the element (grounding) — it’s the recommended approach; fall back to explicit relative coordinates only when needed.
By description (automatic grounding, recommended) — describe the element in plain language and noqa grounds it to the right spot on screen, no coordinates needed. Requires being signed in:
0–1000, relative to the screen; read them from noqa screen. Use when grounding mislocates a target or you already know the exact spot:
Test management
Author and maintain your test suite from the terminal — free, with an account. Every command here takes your app prefix as its first argument (shown asAPP); find it with noqa apps list. See Test Cases for how cases and flows fit together.
Apps & context
app_context is a shared description injected into every run — credentials, screen names, and rules the agent should always follow. update overwrites, so read the current value first, then send the full replacement.
Test cases
A test case has a title, optional tags, and a list of flows (steps + expected results).{"instructions": "...", "result": "..."}) or a reference to a reusable flow ({"id": "..."}) — never both. Tags are created automatically when named.
Reusable flows & tags
A reusable flow is a named step shared across cases (e.g. “Go through onboarding”). Update it once and every case that references it updates too.Builds & test runs
Register builds and run test cases with the noqa agent on a connected device. Each run uses credits.Builds
Build paths must be absolute (e.g.
/Users/me/build/App.ipa, not build/App.ipa).Run tests
Hand saved cases (by number) or ad-hoc cases (inline JSON) to the noqa agent, which runs them autonomously on the connected device.--build-path and --build-id are mutually exclusive; connect a device first with noqa devices connect.
Output & scripting
Most read commands accept--json for raw output you can pipe into jq or a script:
Test cases
How cases and flows work
CLI for agents
Let an AI agent drive the CLI
