01 — Surface
Every control, every state, every combination of the two. Coverage ends up bounded by how much time a QA team has, not by how much of the product matters.
02 — Explore
Through the Playwright MCP server it clicks, types and navigates against a live page — observing what actually happened, rather than what a specification claimed would.
Runtime Playwright MCP
03 — Trace
States reached, transitions taken, selectors that held steady across reloads. The application stops being a set of screens and becomes a graph.
04 — Scenarios
I generated synthetic users and inputs to simulate scenarios the real traffic never covered — pushing the agent down paths a human tester would not have thought to try, and filling in the graph where usage data was thin.
Purpose robustnessEffect coverage
05 — Generate
Plan, call, observe, revise — an agentic loop with memory, tool calling and feedback, emitting Playwright test cases in TypeScript that compile and run against the same application it just explored.
Orchestration LangGraphOutput TypeScript
06 — Verify
Whatever fails goes back into the loop as evidence. A generated test that cannot pass is not a test — it is a guess with syntax highlighting.
07 — Result
Test case development time for the QA team fell by 50%, and coverage reached paths nobody had budgeted the hours to write by hand.
Dev time −50%