Mutation Benchmark

50 scenarios · 6 UI patterns · realistic refactors plus real regressions that must NOT turn green

Correct repair rate
89.5%
34/38 harmless refactors · Playwright alone: 0/38
False-pass rate
0.0%
0/12 real bugs reported as passing
Fixed free, offline
61
Levels 1·3·4 · $0.00 · no API key
Wrong-element attempts
3/8
look-alike clicked when the right control was gone (assertion still failed the test)

AgentQA + LLM (Levels 2, 5): measured, not estimated

One browser run with a configured LLM backend. Costs below are estimates from the backend configuration, not billing receipts.

Repair rate
97.4%
37/38
False passes
0/12
Wrong element clicked
5/8
vs 3/8 deterministic
Heals needing an LLM
3
of 67
Mean latency / heal
3032 ms
estimated cost $0.0000 per heal

Compare repair rate and wrong-element attempts separately. A clicked look-alike can still be rejected by the downstream assertions. These synthetic cases do not prove universal bug detection.

Results by mutation category

Positive rows: scenarios passing. Negative rows: scenarios wrongly passing (must be 0).

CategorynStandard PlaywrightAgentQA deterministic (L1·3·4)AgentQA strictAgentQA + LLM (L2·5)
rename-id60/66/66/66/6
rename-testid60/66/66/66/6
restructure60/66/66/66/6
class-scramble60/66/66/66/6
text-variation60/66/66/66/6
combined-hard60/62/60/65/6
delayed-render20/22/22/22/2
negative-removed40/40/40/40/4
negative-decoy40/40/40/40/4
negative-broken40/40/40/40/4

Which level fixed what

LevelNameValidated healsCost
1Smart Retry2$0.00, offline
3Multi-Selector Fallback57$0.00, offline
4DOM Geometry & Layout Matcher2$0.00, offline
2LLM DOM Repair03 heals in the LLM run (estimated costs above)
5LLM Decompose & Rebuild00 heals in the LLM run (estimated costs above)

Mean ladder latency per heal: 901 ms (median 921 ms), including Level 1's wait for late renders.

Real bugs: what AgentQA did

ScenarioResultWhat happened
checkout/negative-removed
Place order was removed (Cancel remains)
failed (correct)refused #place (low_confidence)
login/negative-removed
Sign in was removed
failed (correct)refused #submit (low_confidence)
modal/negative-removed
Save was removed (Close remains)
failed (correct)refused #save (ambiguous)
table/negative-removed
Archive was removed (Delete remains)
failed (correct)refused #archive2 (ambiguous)
checkout/negative-decoy
Place order replaced by a look-alike "Save for later"
failed (correct)clicked a look-alike [data-testid="t6514c4"]; the assertion failed and the heal was rejected
login/negative-decoy
Sign in replaced by "Sign up" (different action)
failed (correct)clicked a look-alike [data-testid="t6514c4"]; the assertion failed and the heal was rejected
modal/negative-decoy
Save replaced by "Apply preview" (does not persist)
failed (correct)clicked a look-alike [data-testid="t7a8589"]; the assertion failed and the heal was rejected
table/negative-decoy
Archive replaced by a second Delete-looking control
failed (correct)refused #archive2 (ambiguous)
checkout/negative-broken
refactored UI, but placing an order silently does nothing
failed (correct)healed the right control; the app is broken, so the assertion failed and the heal was rejected
login/negative-broken
refactored UI, but signing in silently does nothing
failed (correct)healed the right control; the app is broken, so the assertion failed and the heal was rejected
list/negative-broken
refactored UI, but Add silently does nothing
failed (correct)healed the right control; the app is broken, so the assertion failed and the heal was rejected
modal/negative-broken
refactored UI, but Save silently does nothing
failed (correct)healed the right control; the app is broken, so the assertion failed and the heal was rejected

Copied from `python demo.py` (artifacts/demo) and `python scripts/run_benchmark.py` (BENCHMARK_RESULTS.json). Not hand-written. Generated 10/16/2026, 12:31:55 PM. See BENCHMARK_RESULTS.md for the methodology and limits.