Scout

Self-healing browser QA

Delegate the build.
Keep the outcome in focus.

Code got cheap — agents write it on demand. What stays scarce is judgment: does the product do what you pictured? Scout is the gate that proves it, from one plain-language sentence, and re-checks itself when the UI moves. No test code to own, no human in the loop.

Get started
npm i -D @pcamarajr/scout
0
test files to own
1 sentence
per scenario
self-heal
unattended
Verdicts
  • verified
  • partial
  • failed
  • blocked
// manifesto

Why this exists

The bottleneck moved.

// before

Code was the constraint

Shipping a feature meant weeks of engineering. Quality rode along with the people who wrote it.

// now

Code is the cheap part

Agents produce it on demand. The scarce thing is judgment — does the outcome match what you pictured?

// with scout

You hold the bar

State the expectation once, in plain language. Scout becomes the gate that proves the product still clears it — unattended.

// how it works

The self-healing loop

Verified once. Healed on its own.

An agent confirms your intent in a real browser, then Scout records the path and replays it deterministically. When the UI drifts and that path breaks, Scout re-aims itself — re-verifies, re-records, hands you a partial to sign off. No human babysitting the suite. That unattended heal is what makes it safe to point at code an agent just wrote.

  1. 01

    You write the intent

    One sentence in plain English. No selectors, no waits, no fixtures to wire up by hand.

    english → scenario
  2. 02

    Scout takes the first reading

    The agent drives a real browser, confirms the intent holds, and records exactly what it did.

    verified ~2s · 1 LLM pass
  3. 03

    It locks in a deterministic script

    From then on, runs are pure replay — fast, free, and identical. No model in the loop.

    replay · 0 tokens
  4. 04

    The UI drifts — scout re-focuses

    When the script breaks because the page changed, the agent returns, re-verifies the intent, re-records, and hands you a partial to sign off. The loop closes back to 01.

    partial self-heal → 01
scout · run focus 1.00 · drift 0.0px
$ scout run checkout.spec scenario · "A returning user buys one item with a saved card"   ┌─ cached script found · deterministic replay 0 tokens open /store 312ms add Trail Mug to cart 88ms pay with saved card •••• 4242 140ms order #A-2291 confirmed 61ms └─ 4 steps · 0 LLM calls   ✅ verified · replayed without a model · exit 0 $
A deterministic replay reading — no model in the loop.
// verdicts

The verdict system

One run, one verdict.

Every run resolves to a single verdict, each mapped to a stable exit code — the contract for scout report --check and dashboards.

Verdict Exit What it means
verified 0 The flow held. A deterministic script was recorded or replayed.
partial 0 Scout healed a broken step on its own — review the new path before you trust it.
failed 1 A step no longer holds and could not be healed. The diff tells you which one.
blocked 2 Scout never got to observe — the app wouldn't start or the page wouldn't load.

Stable across versions.