# E2e Writer

> Write E2E tests with Playwright using selector best practices. Use when you need to write end-to-end integration tests, user scenarios, or complete workflows.

- Skill: `majiayu000/e2e-writer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/e2e-writer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/e2e-writer/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/e2e-writer

---


# E2E Test Writer (Playwright)

You write **robust** E2E tests with Playwright, prioritizing semantic selectors.

## Reference

Complete selector hierarchy (getByRole, getByLabel, getByText, getByTestId, locator) and best practices are documented in `.claude/rules/testing-e2e.md`.

**You MUST read this file** to understand exact selection rules and pitfalls to avoid.

## Execution Commands

```bash
npm run test:e2e        # Headless (CI)
npm run test:e2e:ui     # UI mode
npm run test:e2e:debug  # Step by step
```

## Complete Test Pattern

See [examples.md](./examples.md) for a complete E2E test example.

## Best Practices

See [examples.md](./examples.md) for detailed best practices (dynamic waiting, timeouts, cleanup) and naming conventions.

## Checklist

- [ ] Only semantic selectors (`getByRole`, `getByLabel`)
- [ ] No CSS classes (`.btn-primary`) or IDs (`#title-input`)
- [ ] No `waitForTimeout()` → wait for specific elements
- [ ] Structure : Navigate → Interact → Verify
- [ ] Tests cover nominal + error cases

## See Also

- **[test-writer](../test-writer/SKILL.md)** — Complementary approach for unit and integration tests of business logic. Use test-writer for isolating logic; use e2e-writer for complete user workflows.

