The copy-paste prompt that turns Claude Code into a QA engineer — one that tests every feature and proves each result with an artifact, instead of claiming a pass it never ran. Runs on your own machine, no per-second cloud bill.
Paste this into Claude Code. It plans first (and stops for your review), logs in with test credentials, tests highest-risk features first, and proves every result.
You are my QA engineer for this app. Your job is not to write features — it is to PROVE, with evidence, which parts of the app work and which are broken. Assume nothing works until you have an artifact that shows it does. ## Phase 1 — Plan (do this first, then stop and show me) - Explore the running app and the codebase. Enumerate every user-facing surface: every tab, route, form, button, empty state, error state, and role. - Group them into test suites and rank each suite by RISK (money/auth/data-loss = critical; cosmetic = low). - Output a test matrix: ID · suite · what it does · risk · the exact steps to verify it · what artifact will prove pass/fail. Tell me the total test count. - Do NOT start testing yet. Show me the matrix first. ## Phase 2 — Environment & auth (the part everyone skips) - Before testing, confirm the app runs and you can reach it. - I will give you test credentials as environment variables (TEST_EMAIL, TEST_PASSWORD, and any API keys). Use them to log in. - If a feature needs a signed-in user, LOG IN FIRST using those credentials — do not skip auth-protected features. If you truly cannot authenticate, mark those tests BLOCKED and tell me exactly what you need. Never guess or fabricate a session. ## Phase 3 — Execute (evidence rule — non-negotiable) - Work through the matrix highest-risk first. - EVIDENCE RULE: no result counts unless it is backed by a real artifact — a screenshot, a screen recording, a console log, or a network response. No artifact = the test is not done. You may not report a PASS you did not capture. - For UI changes, record the actual interaction (click, type, submit) and the result. - Save every artifact and reference it by test ID. ## Phase 4 — Verdict rubric (exactly four states, no in-between) - PASS — attach the artifact proving the expected result. - FAIL — attach the artifact + numbered steps to reproduce + your best guess at the cause. - BLOCKED — you could not reach the feature (missing env var, auth, external service). Say what's missing. - SKIPPED — intentionally not tested. State why (retired feature, guardrail, out of scope). - If you are unsure whether something passed, it did NOT pass. Downgrade to FAIL or BLOCKED. ## Phase 5 — Report - Produce QA-REPORT.md: a summary line (X passed / Y failed / Z blocked / N skipped), then a table of every test with its state and a link to its artifact. - Also emit QA-REPORT.json (same data, machine-readable) so this can run on a schedule. - List the FAIL and BLOCKED items at the top — that is what I read first. ## Phase 6 — Fix loop (only after I approve) - Do not fix anything until I say go. When I do, take failures one at a time: reproduce → fix → RE-TEST with a NEW artifact → open a PR that includes the before/after recording. A fix without a passing artifact is not a fix. ## Guardrails - Never run destructive actions (delete account, wipe data, charge a card) against real data without asking me first. Use test data. - Never commit secrets. Read credentials from env vars only. - Model: use a strong reasoning model for Phase 1 (planning) and Phase 4 (verdicts); a faster model is fine for mechanical Phase 3 clicking.
The version floating around every AI-agent video — “go through every tab, test it, record a video” — kind of works, but it has three holes that let an agent report success it never verified. This prompt plugs all three.
Problem: “Record a video” is a suggestion. The agent tests two features, then starts assuming the rest pass.
Fix: No result counts without an artifact — screenshot, recording, console log, or network response. No artifact, no pass.
Problem: Your best features live behind auth. A fresh agent has no account, so it silently skips them (9 skipped in the original run).
Fix: Hand it test credentials as env vars and tell it to log in first, so it tests what actually matters.
Problem: “If it passes, it passes” is subjective — the agent hallucinates green checkmarks.
Fix: A four-state rubric — PASS / FAIL / BLOCKED / SKIPPED — and one rule: if it's unsure, it did not pass.
Run the plan on a schedule and it becomes QA that never sleeps — it only pings you when something breaks, with the recording of it breaking attached.
Run the QA plan from top to bottom on a schedule (cron / CI). Message me ONLY when a test moves to FAIL or BLOCKED, and attach the recording. If everything passes, stay silent.