Manual QA knowledge needs an execution engine
The business-as-usual suite is the one that never gets automated, because it is long and boring and it changes. This runs it in a real browser, across the data rows it needs, and tells you what differs from the previous run — not just how many passed.
Upload a sheet and the same journey runs once per row, each with its own full evidence. Accepting and rejecting rows are generated together, so a limit is exercised on both sides of its edge rather than only where it works.
| Row | Data | Expects |
|---|---|---|
| Standard, in policy | Amount '250000' · Roof year '2015' | to reach the end |
| Over the limit | Amount '2500000' · Roof year '2015' | to be stopped, with a message |
| Roof too old | Amount '250000' · Roof year '1974' | to be stopped, with a message |
| Boundary, on the limit | Amount '1000000' · Roof year '=today-25y' | to reach the end |
=today-25y is stored as an expression rather than a date, so a row that sits on a boundary today still sits on it next month. A literal date would quietly stop testing the boundary.
A real regression pack is not a list of independent cases: it signs in once, then walks through a policy, a quote, a document. Later cases keep the same browser session, so the pack reads the way a tester works. Step 1 below is that, in a real run.
| 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" |
Steps 3 and 4 read values out of the page into variables, and step 5 asserts one against what was recorded earlier — which is how a suite checks continuity rather than just absence of errors. 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.
A count of passes tells you almost nothing on a regression pack — it was passing last time too. These are the verdicts the screen renders, in its own words.
the row did what was expected of it
a reject row that was rejected — the application agreed with the requirement
a regression: something that used to complete no longer does
a rule that is no longer enforced — the quieter and more expensive kind
The last one is why this page exists. A rule that has stopped being enforced does not fail a test — the flow completes, and a pass/fail count calls it green. It is only visible if something knew the row was supposed to be stopped.
Bring the pack in from the spreadsheet it lives in, or see what it takes to run this behind SSO.