Playwright is green. Why you still need a human path
CI proves contracts. A cold human proves finishability. You need both — not because automation failed, but because it answers a different question.
Playwright (or Cypress, or your favorite E2E suite) goes green. The PR is mergeable. Someone still asks: are we ready to ship? That pause is not anti-automation. It is recognizing that green scripts and a finished human path are different proofs.
Keep the suite. Add one cold path when the remaining risk is “can a stranger complete this?” — not “did the selector still match?”
What a green Playwright run actually proved
Automated E2E is excellent at contracts you already named:
- This click still reaches that page.
- This form still submits without a 500.
- This assertion still finds the text or URL you coded for.
- Regressions on paths you bothered to encode get caught before merge.
That is real ship value. Scripts do not get tired, do not skip steps because they “already know,” and do not invent a different mission mid-run. For known contracts, they beat humans on speed and repeatability.
What green CI did not prove
A passing suite does not answer:
- Would a cold person find the control without the test’s perfect selectors?
- Is the success state obvious to a human — or only to an assertion?
- Does the copy, empty state, or permission model stall someone who is not you?
- Does the path work with real credentials, a real sandbox, or a real device quirk your CI image never sees?
Automation executes the script you wrote. Humans arrive without that script in their head. Confusion, judgment calls, and “this works but nobody would finish it” live in that gap — the same gap covered in what human testing still reveals.
Not a rivalry — a sequence
Treat the layers as a stack, not a contest:
- Unit / contract tests — logic you own.
- E2E (Playwright et al.) — regressions on paths you named.
- One human path — finishability on the scary mission for this release.
Layer 3 does not replace layer 2. Skipping layer 2 and only “clicking around” is also a mistake. The failure mode is stopping at green CI and calling that a full ship gate.
What the human brief should look like
Keep it as tight as a good E2E test — one mission, observable success:
- Start URL and credentials (or sandbox) that are not your personal account.
- Three to seven steps with a clear done state.
- Form: finished / blocked, where it stalled, severity.
- Recording with the stall marked — not a narrated tour of the app.
Two or three cold attempts on the same brief usually beat a dozen vague sessions. Pattern first; then fix and re-run, or ship. See how many testers you need before you can ship.
When green Playwright is enough for this release
- The change is behind contracts you already cover end-to-end.
- No new money path, invite, first-run, or permission matrix.
- You are not claiming “humans finished it” — only that known automations stayed green.
Honesty matters. Say what you proved. Do not stretch “E2E green” into “a stranger can onboard.”
When to add the human path anyway
- Checkout, billing, invite, or first project changed.
- You rewrote IA, empty states, or role-gated screens.
- Stakeholders need evidence beyond a CI badge.
- Last release’s support tickets were finishability, not assertion failures.
That human pass can be exploratory user testing or a structured ship check — match the brief to the decision (user testing and ship QA are different jobs). Either way, it sits after scripts you trust, not instead of them.
On QATested
QA Testing on QATested is the human layer: post a focused brief, get recordings and structured answers, approve or reject. Use it for the path Playwright cannot feel. How to post: post a Structured QA test.
Related: ship checklist for a one-person team · how many testers before you ship · brief, high-signal tests.