Claude-skill-registry e2e
Playwright E2E testing patterns. Use when working on files in tests/e2e/.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/e2e-bentefay-moneyflow" ~/.claude/skills/majiayu000-claude-skill-registry-e2e && rm -rf "$T"
manifest:
skills/data/e2e-bentefay-moneyflow/SKILL.mdsource content
E2E Test Guidelines
Philosophy
- Journey-style tests covering critical flows end-to-end
- Strongly prefer adding
to existing tests over creating new tests - keeps suite fast and avoids duplicating slow setup flowstest.step() - Fix flaky tests immediately, regardless of when introduced
Commands
pnpm playwright test --reporter=line --max-failures=1 2>&1 pnpm playwright test --workers=4 --repeat-each=5 --reporter=line 2>&1 # flaky detection
NEVER use
or --debug
- opens GUI, blocks forever. This is a common mistake.--ui
Selectors (priority order)
getByRole()getByTestId()getByLabel()getByText(/regex/i)
Critical Rules
- Assert behaviour, not text - text changes with copy edits/i18n
- Independent tests - use
, don't depend on prior test statebeforeEach - No arbitrary waits - use
, nottoBeEnabled()waitForTimeout()
Helpers
Import from
tests/e2e/helpers/:
- full new user flowcreateNewIdentity(page)
,goToTransactions(page)
, etc.goToTags(page)
Create helpers for multi-step reused flows. Don't wrap single Playwright calls.
Pattern
test.describe("Feature", () => { test.beforeEach(async ({ page }) => { await createNewIdentity(page); await goToFeature(page); }); test("should do thing", async ({ page }) => { // Arrange → Act → Assert }); });