Generated layout
Full QA-tests/ tree
Section titled “Full QA-tests/ tree”QA-tests/├── catalog.json # machine-readable index (source of truth)├── catalog.md # human-readable table by route├── routes/│ └── customers.md # raw Page Analysis per route (element inventory)├── tasks/│ ├── T01-customers-list.md # one task per significant flow│ ├── T02-customers-create.md│ └── ...├── results/│ ├── history.json # append-only run index│ ├── latest.json # pointer to most recent run│ ├── by-task/│ │ └── T03-customers-edit/│ │ └── latest.json # pointer to most recent run that included this task│ └── runs/│ └── 2026-05-28T14-22-11Z/ # one folder per /qa-catalog:run[-all] invocation│ ├── run.json # run metadata + settings snapshot│ ├── task-queue.json # live task index (run-all only)│ ├── report.html # self-contained, auto-refreshing dashboard│ ├── summary.md # cross-task summary table│ ├── T01-customers-list/│ │ ├── result.md # per-task result with embedded screenshots│ │ ├── TC01-load.png│ │ └── ...│ └── T03-customers-edit/│ └── ...└── .qa-catalog/ ├── fingerprints.json # sha256 per analyzed source file └── backup-20251108-1530/ # created by /qa-catalog:scan before overwriteTask file template
Section titled “Task file template”Every task file is identical in shape:
- Preconditions + required role
- Test data with concrete values
### TC-01Happy path with numbered steps + assertions### TC-02Form validation matrix (one row per field × empty / pattern / max-length)### TC-03Modal coverage (cancel + confirm paths)### TC-04Button coverage (including destructive confirm + cancel)### TC-05Edge & negative cases- Console + network expectations
Result file schema
Section titled “Result file schema”Every result.md is identical in shape and is validated by scripts/verify-result.mjs before the runner’s output is accepted into the run. Excerpt:
# T03-customers-edit: Edit customer — Result
| Field | Value ||---|---|| Result | PASS / FAIL || Task file | QA-tests/tasks/T03-customers-edit.md || Route | /customers/:id || Date (UTC) | 2026-05-28T14:23:02Z || Run id | 2026-05-28T14-22-11Z || Duration (s) | 41 || Role | admin || Browser channel | chromium || Headless | true || Screenshots | 8 || Console errors | 0 || Network failures | 0 |
## Test Case Results
### TC-01: Happy path — PASS- Step 1: navigate to /customers/42 — page title is "Edit customer"- Step 2: change email — toast "Saved"
### TC-02: Form validation — customer-form — PASS| Field | Case | Expected | Actual | Result ||---|---|---|---|---|| email | pattern | "Invalid email" | "Invalid email" | ✓ |
## Screenshots### TC-01
## Defects Found- NoneThis is parsed by scripts/results-index.mjs to maintain history.json and the per-task latest.json pointers.