Pipeline
Five stages. One command.
01
Observe Logs in with your saved session, waits for SPA hydration, snapshots ARIA + screenshot. 02
Ground Verifies every locator against the live page. Tests what exists — not hallucinations. 03
Design Writes methodical cases per ISO/IEC/IEEE 29119-4: EP, BVA, decision tables, state transitions. 04
Generate & validate POM-style Playwright specs. Runs them, classifies pass / fail / flaky, self-repairs keep-best. 05
Judge & learn Deterministic scorers + LLM-judge + holistic Pilot verdict. Best cases carry over between runs. Human in the loop
The bot automates. You stay in charge.
ATC Automatable Test Case
Cairn generates POM-style Playwright code with role-based locators — every locator verified against the live page before a single line is written.
✓ Role-based locators, verified before codegen ✓ POM-style @playwright/test specs ✓ Self-repair that never degrades the suite
MTC Manual Test Case
Some things deserve human judgment. Cairn writes these cases up methodically — then deliberately leaves them to you.
◦ Form submits with real side effects ◦ Security & XSS probing ◦ Visual & UX judgment calls
Four modes
Start careful. Go autonomous.
design cases only
The bot explores and writes test cases — no code generated. Perfect for a first review pass. $ cairn design --url … --session myapp
automate code from ATC
Generates and validates Playwright specs from your promoted ATC cases. $ cairn automate --run runs/<id> --validate
explore full cycle
Everything in one run: observe → ground → design → automate → judge. $ cairn explore --url … --session myapp
api from OpenAPI
Turns an OpenAPI 3.x spec into happy-path, negative, scenario, and adversarial cases — and runs them to assert the contract. $ cairn api --spec openapi.yaml --base-url …
Interactive TUI
A live dashboard, right in your terminal.
Watch graph nodes light up as the agent works, browse past runs, inspect scores — all in an Ink-powered terminal UI.
$ cairn · no arguments needed
cairn · interactive
RUN GRAPH · #142
● observe — 38 elements
● ground — 38/38 ok
● design — 12 ATC · 5 MTC
◐ automate — spec 9/12…
○ judge & learn
SCORES
green 91.7%
flaky 1
pilot PASS (92%)
PAST RUNS
#141 PASS · #140 PASS
#139 FAIL → repaired
↑↓ navigate · ↵ open run · q quit
Quickstart
From login to green suite in four commands.
Capture a session once, let the bot design cases, promote the ones you like, and automate. Repairs never make the suite worse — keep-best, always.
quickstart.sh
1 # log in once — session is stored locally
2 npm run session:save --
--url https://app.example.com --name myapp
3 cairn design
--url https://app.example.com/page --session myapp
4 # review the cases; promote an MTC you deem automatable
5 cairn promote
--run runs/<id> --cases MTC-LOGIN-001
6 cairn automate
--run runs/<id> --validate --session myapp
Judge & learn
Every run makes the next one better.
Langfuse optional — runs fully offline deterministic Scorers Hard, repeatable checks on every run — green %, flakiness, coverage of the checklist.
llm-judge Judge + Pilot An LLM judge reviews outputs case by case; the Pilot issues one holistic verdict per run.
langfuse Traced & accumulated Every step traced in Langfuse (cloud or self-hosted). Best cases accumulate between runs.
Commands
Full reference in docs → observe Snapshot a page: ARIA tree, screenshot, interactive elements.
design Explore and write methodical test cases (ATC + MTC) — no code.
automate Generate and validate @playwright/test specs from promoted ATC.
promote Promote manual MTC case(s) to ATC — then automate picks them up.
explore Full autonomous cycle in a single run, end to end.
api Generate happy-path, negative, scenario, and adversarial cases from an OpenAPI 3.x spec; run + assert contract with --base-url.
experiment Compare prompt versions on a dataset, side by side.
Install in 30 seconds.
$ npm install -g @plune-ai/cairn
Read the docs Node 20+ · Apache-2.0 · v0.6.0
Next: evaluate & gate your app with the Plune platform