Skip to main content
AtwalLabs

Manual QA knowledge needs an execution engine

Automate the manual test cases you already have

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.

The same case, twice

TC-104 — as your team keeps itSigned in, on the account page
#ActionExpected
1Continue in the same browser windowSession is still active
2Click 'Back to Dashboard'Dashboard loads
3Note the page referenceA reference is shown
4Note the session idA session id is shown
5Check the reference matches the one recordedThey are equal
6Check the page titleTitle is the dashboard
The same case, as the engine ran itrun-f999d57a · 23 September 2026 · 6 steps · 21.5s
StepActionResultWhat the engine recorded
1noteSKIPPEDContinue from previous step on same browser window
2clickPASSclick -> href-first goto -> /dashboardstrategy click.href-first · 668ms
3readvarPASSreadvar -> page3 = "PG-01" (definition-list)strategy readvar.definition-list · 2ms
4readvarPASSreadvar -> session3 = "45b3285a" (definition-list)strategy readvar.definition-list · 0ms
5assertvaluePASSassertValue -> "PG-01" equals "PG-01" (text comparison)
6assertTitlePASSassertTitle -> "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.

What happens when a step cannot be trusted

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.

What a run leaves behind

Every run writes its own directory. This is the listing, not a description of one.

  • progress.log— every step, every guard, every navigation, timestamped to the millisecond
  • summary.json— per-step status and the resolution strategy that chose each element
  • recording.webm— video of the session
  • console.txt— the browser's own console output
  • network-failures.json— requests that failed during the run
  • step-N.png— a screenshot per step

The same set exports as a Word report, so a result can leave the tool and go into a release note or a ticket.

What it needs from you

  • The cases you already have — in a spreadsheet, or typed in. One line per step.
  • One exploration of your application, so the Knowledge Base has something to resolve the steps against.
  • Nothing installed, and no automation code at any point.

Try the steps above against our demo form, or start from the spreadsheet you keep them in.

The same product, from another angle