← ClaudeAtlas

bearing-e2elisted

Use when verifying app behaviour in a real browser, or when the user asks for a screenshot of a page/view. Covers writing a verifier in .e2e/, testing a destructive write without performing it, and capturing shots. Examples: "check the payer editor works", "screenshot the dashboard", "does this button send the right payload", "verify the fix end to end".
ReidenXerx/bearing · ★ 6 · AI & Automation · score 75
Install: claude install-skill ReidenXerx/bearing
# The `.e2e` harness `.e2e/` is a browser harness the project FINISHES. bearing ships the substrate (`core/`), the contracts, and the scars; the app-specific parts are yours to build and to grow. **Read `.e2e/README.md` before writing a verifier.** Its scars list is the point of the whole module — every entry is a green run over a real failure. ## When to reach for it | Situation | Do | | --- | --- | | "does this actually work in the browser?" | write a verifier in `.e2e/verify/` | | "does this button send the right payload?" | `blockWrites` — assert the payload, never perform the write | | user wants to SEE a page | `shots.take(page, '<view-key>')`, then read the png | | a fix needs proving, not describing | a verifier that FAILS before the fix and passes after (NS-9) | | the app is not running / no session | `skip(name, why)` — never a `check` that is a skip in disguise | Not for unit-testable logic. A browser is the slowest way to test a pure function. ## Writing one Copy `verify/smoke.js`. The shape: ```js withBrowser(async (browser) => { const report = createReport('<what this verifies>'); // ... check() what ran, skip(name, why) what could not report.finish(); // exit code IS the product }); ``` Four rules that are not negotiable, each earned: 1. **A skip is not a pass.** A run where nothing passed exits 1 even with zero failures. 2. **Poll, never sleep.** `until` / `untilAtLeast` / `untilStable`. A `waitForTimeout` is a guess about latency t