webqa run
webqa run <spec.json | url> [--json] [--out .webqa/runs] [--allow-private]With a configuration file, every page is captured on every viewport (desktop 1440×900 and mobile 390×844 by default) and the configured checks run. With a URL, the http, overflow and clipping checks run on that page only.
Each run writes a new folder:
.webqa/runs/<time>/├── result.json # validated against result.v1├── p01-desktop.png # full-page screenshots├── p01-mobile.png└── p06-mobile.annotated.png # pages with findings: problem elements outlinedOptions
Section titled “Options”| Option | Default | Description |
|---|---|---|
--json |
off | Print result.json to stdout instead of the summary. |
--out <dir> |
.webqa/runs |
Parent folder for run folders. |
--allow-private |
off | Allow localhost and private network addresses (local and staging sites). |
Safety
Section titled “Safety”Runs are read-only: non-GET requests to the site are blocked (so consent clicks cannot submit forms), navigation stays on the hosts in your configuration, pop-ups are closed and downloads refused. Consent banners are rejected, or accepted when there is no reject button, or hidden before screenshots; the action is recorded per page.
Time limits
Section titled “Time limits”timeouts.pageMs limits each page and timeouts.runMs the whole run. When the run limit is reached, the browser is closed, the status is timed_out and the exit code is 4. Pages that fail to load are recorded as page errors and are not reported as findings.
More commands
Section titled “More commands”| Command or option | Description |
|---|---|
npx webqa-platform audit <url> |
Discovery and checks in one step, with a JSON and HTML report |
--checks a,b |
Run only the named checks |
--ai |
Optional AI step: untranslated text and plain-language explanations (needs OPENROUTER_API_KEY and OPENROUTER_MODEL) |
--mode remote-cdp |
Use your own browser endpoint |
--sync, webqa login, webqa project link |
Upload results to webauditlabs Cloud — see Cloud sync |