ai-builder-club/e2e-setup
> Set up an end-to-end test suite in any repo, following practices that make e2e a auth/session helper, video+trace evidence, and a compounding suite. Use when a repo has no e2e (or weak e2e) and you want system-level tests — "set up e2e", "add end-to-end tests", "scaffold a test gate".
npx skills add https://github.com/AI-Builder-Club/skills --skill e2e-setup
E2e tests verify the whole running system *through the app* (browser/API), not one
module. They are the per-PR gate. Pairs with dev-local-setup (a reproducible
local stack) and verifier-setup (which scaffolds the repo's /verify skill —
the verify→ship loop this gate feeds into).
e2e/) — it spans allapps, so it belongs to none. Add it to the workspace if a monorepo.
dev-local-setup. The e2e suite **neverboots the app itself**; it runs against the already-running stack. That stack can
be local (dev-local-setup) or an isolated cloud box (crabbox-setup) —
same specs, run against either. For parallel agents use the cloud box (one
laptop can't host concurrent stacks).
Turn on video + trace — the recording is the proof, and it's gitignored output.
a committed spec.
feature PR adds its spec — the suite compounds.
real code from a local mail server (Mailpit / Inbucket / MailHog) — never hardcode
a fixed test code. That's what makes it a test, not a rehearsal.
spec proves auth works. Every *other* spec shouldn't re-pay the login tax — build
a session helper that mints an authed state once (real flow → saved storage
state, or a service-role/token mint) and load it.
Confirm the server agrees (token validates / row/state is right) AND the
user-visible outcome (e.g. plan upgraded *and* credits granted).
data-testid in thecomponent when there's no good handle — never a brittle CSS path.
limits (auth email, etc.).
test-results/ (generated output).A red e2e is information. Classify first:
the test to match the new contract.
Never weaken or delete an assertion just to go green. Loosening is only correct
when the *intended contract* changed — confirmed from the diff, not assumed.
Use the vendor's test/sandbox mode, never live keys — and guard hard: the
test should refuse to run if it detects a live key/credential. If a webhook
completes the flow, forward it locally (e.g. the vendor's CLI listener) so the e2e
exercises the real fulfilment path, not a faked event.
Take ai-builder-club/e2e-setup from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.