Manual QA knowledge needs an execution engine
Not rewritten as code. Run as they are written — one line per step, in plain English — in a real browser through Playwright, with a result and an artefact for every step.
| # | Action | Expected |
|---|---|---|
| 1 | Continue in the same browser window | Session is still active |
| 2 | Click 'Back to Dashboard' | Dashboard loads |
| 3 | Note the page reference | A reference is shown |
| 4 | Note the session id | A session id is shown |
| 5 | Check the reference matches the one recorded | They are equal |
| 6 | Check the page title | Title is the dashboard |
| Step | Action | Result | What the engine recorded |
|---|---|---|---|
| 1 | note | SKIPPED | Continue from previous step on same browser window |
| 2 | click | PASS | click -> href-first goto -> /dashboardstrategy click.href-first · 668ms |
| 3 | readvar | PASS | readvar -> page3 = "PG-01" (definition-list)strategy readvar.definition-list · 2ms |
| 4 | readvar | PASS | readvar -> session3 = "45b3285a" (definition-list)strategy readvar.definition-list · 0ms |
| 5 | assertvalue | PASS | assertValue -> "PG-01" equals "PG-01" (text comparison) |
| 6 | assertTitle | PASS | assertTitle -> "Dashboard | Fixture" |
Both are runs against our own test fixtures, so the URLs are local and the titles say “Fixture”. The statuses, strategies and wording are exactly as the engine wrote them.
This is a real failure from a real run. The engine could have typed the literal text {{Amount}} into the field and passed the step. It stopped, and said why.
STEP 2: REFUSED — {{Amount}} was never set (no variables have been set)
Step 2 references {{Amount}} in its value, but that variable was never set — no variable has been read yet. Refusing rather than filling the field with the literal text.
retried 2 times, then failed the step · datadriven-33100-9 · 21 September 2026
A passing suite is only worth something if a failure is possible. This is the shape of ours: a named reason at a named step, which is a defect report rather than a flake.
Every run writes its own directory. This is the listing, not a description of one.
The same set exports as a Word report, so a result can leave the tool and go into a release note or a ticket.
Try the steps above against our demo form, or start from the spreadsheet you keep them in.