Skip to main content

gws qa

Sync QA runs and test-case specs between your machine and GetWebstack. The API is the canonical store for cases and runs, so this command is the bridge to it.

You'll rarely type gws qa yourself — it's mostly invoked by the /gws-qa-generate and /gws-qa-run skills. It's documented here because it's a real, re-runnable command.

Usage

gws qa <subcommand> [target] [options]
SubcommandPurpose
report [run-dir]Publish a completed QA run (runs → cases → steps → artifacts) to the API. Defaults to the newest run under ./.gws/qa-runs/.
report-cases <cases-file>Publish a set of test-case specs.
cases pullPull the case specs for a branch from the API.
intent pull / intent pushPull or push branch intent (acceptance criteria + seed). push reads --from <file>.
FlagDescription
--strictFor report: exit non-zero on failure (report is best-effort by default).
--no-videosSkip screen-recording (video) artifacts to keep the upload light.
--keepFor report: keep the run dir after a successful upload (default: delete it).
--branch <branch>Branch to key case-specs on (default: the current git branch).
--out <file>For cases pull: write to a file (default ~/.gws/qa-cases/<branch>.md).
--from <file>For intent push: the .json intent file to PUT.
--jsonEmit result as JSON (report: { runId, url, summary, cases }).

Idempotency: report is keyed by the run-dir name, so re-running it updates the same run rather than duplicating it.

Examples

# Publish the newest local QA run
gws qa report

# Publish a specific run, keeping the local dir and skipping videos
gws qa report .gws/qa-runs/20260625-150718 --keep --no-videos

# Pull the cases for the current branch
gws qa cases pull

# Push acceptance criteria + seed for the branch
gws qa intent push --from ./intent.json

See also