Skillshub nextjs-testing
Unit, Integration, and E2E testing standards for App Router. Use when writing unit, integration, or Playwright E2E tests for a Next.js App Router project. (triggers: **/*.test.{ts, tsx}, cypress/**, tests/**, vitest, playwright, msw, testing-library)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/nextjs-testing" ~/.claude/skills/comeonoliver-skillshub-nextjs-testing && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/nextjs-testing/SKILL.mdsource content
Next.js Testing
Priority: P1 (HIGH)
Structure
tests/ ├── unit/ # Vitest + RTL ├── e2e/ # Playwright └── mocks/ # MSW Handlers
Implementation Guidelines
- Unit Testing: Use Vitest for speed and React Testing Library (RTL) for component behavior. Follow Arrange-Act-Assert (AAA) patterns.
- E2E Testing: Use Playwright for full-stack App Router validation. Focus on User Flows (e.g., Login, Checkout).
- Networking: Mock all internal/external API boundaries using Mock Service Worker (MSW). Ensure
andserver
handlers are correctly configured.browser - RSC Testing: Test React Server Components (RSC) using the same patterns as libraries (SSR-compatible tests). Prefer E2E tests for complex async data-fetching logic.
- Interactions: Use
(async) to simulate user actions:userEvent
.await user.click(button) - Selectors: Favor
/getByRole
to test accessibility. UsefindByRole
only as a fallback.data-testid - Environment: Configure
withvitest.config.ts
orjsdom
for component tests.happy-dom - Reporting: Ensure tests generate JSON coverage reports for CI gates. Aim for 80%+ coverage on core libraries.
Anti-Patterns
- No real network usage in tests: Always use MSW handlers or mocks.
- No implementation testing: Test user behavior, not internal methods.
- No heavy E2E for unit logic: Use Vitest for isolated logic tests.
- No global state leakage: Reset MSW handlers and mocks after each test.