antiQA · docs · 0.0.8

How to use antiQA.

From a running app to a bug report an agent can fix.

01

Overview

antiQA (QA Anything) is an end-to-end tester for any app. It reads a pack that describes your product, plays your user stories in a real browser, crawls for what the stories missed, runs accessibility checks, and writes a bug report a coding agent can pick up.

It is one offline binary, antiqa, written in Rust. The old command name qaa still works and runs the same binary. The core never names a product: everything product-specific lives in its pack.

antiQA is alpha. The current version is 0.0.8, and the release is a Linux x86_64 build.

02

Install

Download the Linux build from the download section, make it executable and put it on your PATH.

chmod +x antiqa
./antiqa --version

macOS and Windows builds were not made for 0.0.8. planned

Build from source

rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl

03

Quick start

  1. Start your app, for example on http://127.0.0.1:8080.
  2. Draft a pack from it:
    antiqa onboard --name myapp --url http://127.0.0.1:8080 --repo ../myapp
  3. Run every stage against the running app:
    antiqa --product myapp --url http://127.0.0.1:8080
  4. Open reports/. Read BUG-REPORT.md, and hand evidence.zip to whoever fixes it.

antiqa dashboard serves your local runs for the antiQA window.

04

Packs, stories and plays

A pack lives in packs/<product>/. It holds:

  • A manifest that names the product and where its parts are.
  • STUDY.md, a written study of the app. The study gate checks it has the required sections.
  • User stories and the coverage checklist.
  • Plays, the steps that act out each story, in the qaa.play/2 format.
  • A harness that starts or attaches to the app and checks its health.

A template pack is included for adding a new app.

05

The six stages

Pick a stage with --stage. The default is all, which runs the six in order. Each stage is a gate: if it fails, the run stops with exit code 2.

StageWhat it does
studypacks/<product>/STUDY.md must have the required sections.
storiesChecks the story schema, the plays and the coverage checklist.
harnessStarts or attaches to the app, checks health, and refuses forbidden writes.
runPlays the stories, crawls the app and runs accessibility checks on each palette.
triageClassifies every miss.
reportWrites BUG-REPORT.md and evidence.zip.

06

Choosing how the app starts

FlagUse it when
--url <address>The app is already running. antiQA will not stop it.
--core <path> --fe <path>You have checkouts the pack knows how to start.
--stubUse the pack's harness stand-in. Good for testing the pack itself; not a verdict on the product.

07

Agents

--agents stub is the default. Every stage is deterministic and no LLM is used, which suits CI.

--agents external writes agents/*.prompt.md plus the inputs into the report's handoff folder, and stops if the expected artifact is missing. Your own agent does that step, then you continue the run.

08

Reports and exit codes

Reports go to reports/ (change it with --out). A failing story is played again to show how often it fails: 3 times for all, triage and report, once for a bare run. Change it with --repro.

ExitMeaning
0No product defect.
1At least one defect.
2A gate failed. This includes a failure with no video, a report that says “always” without N of M, a shared evidence hash, or a missing binary stamp.

09

CLI reference

OptionWhat it does
--story <id>[,id]Run only these stories. The crawl is skipped.
--headedShow the browser.
--real-seatsAllow real CLIs on PATH. Off by default.
--skip-buildReuse an existing product binary.
--no-crawlSkip the exploratory crawl.
--include-fixturesAlso run the recorder self-check.
--delay <ms>Pause between actions. Default 120.
--reuse-study, --reuse-stories, --reuse-run, --reuse-triageReuse earlier output instead of redoing that stage. --run-dir picks the report folder.
--versionPrint the version.

QAA_PLAN=1 prints the parsed config and pack result as JSON instead of running. NO_PROMO=1 hides the credit line in --help.

10

Troubleshooting

The run stops with exit 2

A gate failed. The output names it. Fix the pack (study sections, story schema) or the harness, then run again, using --reuse-* to skip stages that already passed.

I only want to check one story

Use --story <id> --headed to watch it play.

11

FAQ

Does it need Node or Python?

No. It is a single Rust binary.

Does it send data anywhere?

Runs and reports stay on your machine. With --agents stub no AI is used at all.

Is there a desktop window?

The window is being built on Tauri. planned