replica-test
Reads the flows in replica/recon.md. Writes replica/test-plan.md,
replica/bugs.md, and end-to-end tests in the project (e2e/). Templates in
this folder: test-plan.md, bug-report.md, e2e.example.spec.ts.
The rule
Test your clone, not the original. Never load test, fuzz, script or
hammer the original app's servers. Using the original by hand, as a normal
user, to see how it behaves is fine.
Step 1: the plan
For every flow F01, F02... in the recon map, write:
- Happy path: the steps, and what the user should see at the end.
- Edge cases that apply. Go down this list for every flow:
empty input, very long input, emoji and accents, two tabs at once,
double click on submit, back button mid-flow, refresh mid-flow, slow
network, offline, expired session, second user's data (must be invisible),
time zones and daylight saving, mobile width, keyboard only, screen reader
labels.
- Negative cases: wrong password, card declined (Stripe test card
4000 0000 0000 0002), permission denied, deleted record.
Number every case: F01-H1, F01-E3, F01-N2.
Step 2: automate what you can
Playwright, one spec per flow, against the local dev server with seed data.
Use roles and labels for selectors (getByRole('button', { name: 'Book' })),
never CSS classes. See e2e.example.spec.ts.
npm i -D @playwright/test && npx playwright install chromium
npx playwright test
Add to every spec: fail on console errors, fail on any 5xx response, and an
axe accessibility scan (@axe-core/playwright) on each screen.
Step 3: click through the rest
What cannot be automated (emails arriving, OAuth with real providers,
payments end to end, visual glitches) gets a manual pass. If a browser tool is
available, drive the local clone with it and screenshot each step. Otherwise
give the user the checklist and wait for answers.
Step 4: report bugs
Every bug goes in replica/bugs.md in the bug-report.md format: an ID, a
severity, exact steps, expected, actual, evidence. Severity:
| means |
|---|
| S1 | data loss, security hole, payments wrong, core flow blocked |
| S2 | a feature broken, no workaround |
| S3 | broken with a workaround, or visibly wrong |
| S4 | cosmetic |
Only report what you reproduced. "Might be an issue" goes in a separate
"to check" list.
Step 5: fix loop
Fix S1 and S2 first. For every fix: write the failing test first, fix, watch
it pass, keep the test. Re-run the whole suite after each batch. Update
bugs.md with the commit that fixed each one.
Output
test-plan.md, the specs, bugs.md, and a summary: cases run, passed,
failed, bugs by severity, fixed so far. Ship nothing with an open S1. Next:
/replica-diff.