E2E tests that write, run, and
fix themselves.
Cairn connects to your GitHub repo, maps your app's flows, and ships Playwright coverage that repairs itself when your code changes.
E2E tests are a full-time job.
Nobody signed up for that.
Writing tests takes as long as building the feature
Every new page, form, or flow means hours of Playwright boilerplate — selectors, waits, auth setup, assertions. Most teams skip it.
Tests break every time the UI changes
A CSS refactor, a renamed button, a new onboarding step — any change can break 20 tests. Fixing them is grunt work that nobody wants to own.
Failures are mysteries
A red CI check with a cryptic timeout error. No video, no trace, no context. You re-run it locally, it passes. You merge anyway.
Auth flows are a nightmare to automate
OAuth redirects, magic links, session cookies, signed tokens — getting a headless browser past the login page is half the battle.
No one watches the test suite
Tests pass when you write them and break a month later. Nobody notices until a customer reports the bug the test was supposed to catch.
Test code drifts from app code
Pages are added, routes renamed, components refactored — the test suite doesn't know. It tests yesterday's app against today's code.
Cairn does all of this for you. Automatically.
Four steps. Zero test code in your repo.
Cairn lives outside your codebase. Connect, map, generate, run — everything stays in Cairn's dashboard.
Connect your repo
Install the GitHub App. Cairn gets read access to your code and write access to issues. Nothing else.
Map every flow
Cairn reads every page in your app, systematically discovers user flows, and groups them by feature area.
Generate tests
One click per flow or bulk-generate. Cairn writes deterministic Playwright specs with auth handling baked in.
Run & fix automatically
Schedule runs against staging or prod. Failures auto-file GitHub issues with video, traces, and a diagnosis.
Everything you need. Nothing you don't.
Page-by-page mapping
Cairn reads the source of every page in your app — not just filenames. It discovers view flows, form submissions, CRUD operations, and error states systematically.
Playwright test generation
Each flow becomes a self-contained .spec.ts file. No shared fixtures, no imports from your repo. Cookie injection, selector strategies, and wait patterns built in.
Auto-filed GitHub issues
When a test fails, Cairn drafts a natural-language issue with the action, likely cause, affected files, and a link back to the run. Deduplicates flaky failures automatically.
Scheduled + manual runs
Set a cadence per environment — hourly, daily, weekly. Or hit Run anytime. Inngest orchestrates each flow as an independent step with automatic retries.
Parallel execution
Configure max concurrency per environment. A 150-test suite at concurrency 5 finishes in ~15 minutes instead of 75. Each flow gets its own browser context.
Video + Playwright traces
Every run captures a video recording and a full Playwright trace — DOM snapshots, network, console, action timeline. Debug failures without reproducing them.
Change-aware sync
When code merges to main, Cairn compares the diff against your flows. Changed pages are flagged, new pages are surfaced, stale flows are marked — before they break.
Auth bypass
Cairn detects your auth library, explains how to mint a long-lived session token, and injects it per-environment. Authenticated tests skip the login UI entirely.
Chat agent
Ask Cairn to add a flow, edit one, rewrite a test, or explain a failure. The chat reads your repo files, proposes changes with Accept/Discard cards, and persists everything.
What's shipped. What's next.
- PR-triggered runs — automatic suite on every preview deployment
- Neon DB branching — isolated data per PR preview environment
- Auto-fix PRs — Claude drafts a fix when a test breaks
- Auto-filed GitHub issues — LLM-drafted body with action, cause, affected files, and dashboard deep link
- Issue deduplication — flaky failures bump a counter instead of spamming duplicates
- Issues tab with accordion detail view, date filter, and one-click open on GitHub
- Change-aware sync — push to main flags affected flows automatically
- Parallel execution with per-env configurable concurrency
- Playwright trace capture alongside video recording
- Auth detection + session token management per environment
- Chat teaches auth setup — library-specific guidance with non-expiring tokens
- Runs tab with scheduled + manual suite execution via Inngest
- Multi-environment support (staging, prod, preview)
- Apps/worker with Playwright Docker image for production deploy
- Schedule presets — hourly, every 4h, daily, weekly
- Page-by-page systematic flow mapping (pre-reads all source)
- Per-flow test generation with parallel support
- Chat agent with readFile, listDirectory, and proposal cards
- Flow + test + chat persistence across sessions
- Dashboard with Map / Tests tabs
- GitHub App integration for repo access
- Playwright test runner with video capture
- Better-Auth GitHub OAuth login
Stop writing tests. Start shipping.
Cairn maps your app, writes the tests, runs them on schedule, and files issues when things break. You ship.