Comparison

Reticle vs Playwright MCP

Both give an agent eyes on a running app. One drives the browser from outside; the other reads the program from inside. Here's exactly where each wins.

Playwright MCP drives a real browser from the outside over CDP, navigate, click, screenshot or read the accessibility tree, inspect network, on any URL with zero install.

Where Reticle wins

  • Re-run cost compounds: deterministic replay re-verifies a known flow at ~175 tokens vs ~30,249 for an LLM re-drive, 128–184× cheaper per run, and a 4-flow suite is one verdict at ~47 tokens (2,574×).
  • 0% flake: the same flow replayed 8× returns one status and one verdict every time, no model in the loop to sample a different answer.
  • Sees program state the DOM never shows: UI-vs-store desync caught 2/2 (Playwright MCP 0/2), plus dead-handler, blast-radius and wasted-render-storm oracles, all at ~47–472 tokens.
  • Higher scripted detection: 10/10 injected regressions with 0 false positives vs 9/10; live agent loop 5/5 vs 4/5.
  • Leaner per look on a real app: observing the authenticated dashboard once costs 1,023 tokens vs 2,193, 2.1× leaner, and only Reticle asserts login from the app's own signal.

Where Playwright MCP wins

  • Any site, zero cooperation: it tests a URL you've never touched. Reticle must embed the Perception SDK, so it can't instrument code you don't ship.
  • Trusted native input: real CDP keyboard, mouse, file pickers and drag-and-drop with isTrusted:true. Reticle defaults to synthetic dispatch (real input is opt-in CDP).
  • True pixels: a stray CSS re-tint changing 2.3% of the screen was caught by screenshot diff and missed by Reticle's always-on computed-style read.
  • Cross-browser matrix: runs WebKit, Firefox and Chromium. Reticle runs on whatever single engine your app runs on.
  • Browser-level scope: multi-tab, popups, cross-origin, downloads, auth dialogs and network mock/intercept. Reticle is scoped to one page runtime.
DimensionReticlePlaywright MCP
Scripted regression detection (10 bugs)10/10, 0 FP9/10
Live agent loop (5 scenarios)5/5 (~55k tok)4/5 (~30k tok)
Re-verify a known flow~175 tok, 0% flake~30,249 tok
4-flow suite, per run~47 tok (2,574×)K × ~30,249
Observe a real app once1,023 tok2,193 tok
Visual / computed-style bugs (6)
Pixel / paint regressiondriven only
UI-vs-store desync (2)2/20/2
Wasted-render storm
Time-gated flow (2.6s)~202 ms≥2,600 ms
Source localization (file:line)
Third-party site, no install
Cross-browser engines
Trusted native input

✓ yes · – no · text = how

The honest take

Use Playwright MCP to drive a site you don't own, across many browsers, with real input and true pixels. Use Reticle as the cheap, deterministic, state-aware inner loop for an agent building an app you own, and most teams run both.

Token figures use an o200k BPE proxy (within ~20% of Anthropic text tokens) except the live agent loop, which uses authoritative gpt-4o usage. That loop is one model, one turn budget, five scenarios, treat accuracy ordering as directional. The harness is committed; reproduce with `pnpm bench`.

Open source

See it on your own app.

The Perception SDK is open source. Paste one line into your agent and it sets itself up.