e2e-testing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited e2e-testing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An e2e test proves the whole stack works together the way a user experiences it: the browser, the Next.js app, Supabase, and Stripe all in one flow. These are the tests that catch "the button does nothing" and "checkout 500s on deploy" — things unit and API tests miss. They're also the slowest and flakiest, so the craft is in writing flows that are stable: resilient selectors, explicit waits on state, and no reliance on timing.
If the project has no Playwright yet, scaffold it:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/e2e/scaffold.shThis installs @playwright/test, drops a playwright.config.ts tuned for Next.js + Vercel preview URLs (reads BASE_URL, retries on CI, traces on first retry), and creates e2e/ with a fixtures file. If Playwright already exists, skip the scaffold and just add specs under the existing test dir.
The difference between a test suite people trust and one they ignore is flakiness. Follow these because each one removes a class of flake:
getByRole('button', { name: /book now/i })survives restyling; .btn-primary-2 does not. Add data-testid to elements that have no accessible name. Selectors coupled to layout are the #1 source of flake.
(await expect(page.getByText('Booking confirmed')).toBeVisible()) which auto-retry. Never waitForTimeout — it's either too short (flake) or too long (slow suite).
storageState so eachtest starts authenticated without re-running the login UI. See the fixtures file.
seed) and tear it down, so tests don't depend on each other or on prod data.
Wanderlust Stays' core journey. Encode it as one readable test:
4242 4242 4242 4242, anyfuture expiry, any CVC). Handle the Stripe iframe with frameLocator.
the booking now appears in the user's trips.
See references/playwright.md for a complete annotated example of this flow, including how to drive the Stripe Elements iframe and how to stub it when you only want to test the app's own logic.
npx playwright test # all specs, headless
npx playwright test booking # one flow
npx playwright test --ui # interactive debugging
BASE_URL=https://<preview>.vercel.app npx playwright test # against a deployReport results plainly: which flows passed, which failed, and for a failure point the user at the trace (npx playwright show-trace) rather than guessing.
For "build a full e2e suite" or "test all the critical flows", delegate to the e2e-test-runner agent — it maps the app's routes, scaffolds Playwright, writes the specs, runs them, and returns a pass/fail report with traces for failures.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.