Skip to main content

testing-guidelines

Testing conventions for divine-web. Load when writing or modifying tests, or when verifying changes with Vitest or Playwright.

Quellinformationen

Repository
divinevideo/divine-web
Letzte Quellaktivität
19. Mai 2026 um 05:26
Erkannte Sprache von SKILL.md
Englisch
Sterne
50
Forks
29

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
testing-guidelines
description
Testing conventions for divine-web. Load when writing or modifying tests, or when verifying changes with Vitest or Playwright.
# Testing Guidelines ## Frameworks and Setup Unit tests use Vitest with jsdom. Component tests use `@testing-library/react`. Global setup lives in `src/test/setup.ts`. Test files colocate with source: `*.test.ts` for utilities, `*.test.tsx` for components. ## Running Tests - `npm run test` runs type-check, lint, vitest, and build. Use this before pushing. - `vitest run` for tests only. - `vitest` for watch mode during development. - `npm run test:visual` runs Playwright visual regression tests. - `npm run test:visual:update` updates visual snapshots. ## Assertion Style Favor user-facing assertions: `getByRole`, `getByText`, `getByLabelText`, `getByPlaceholderText`. Query by what the user sees and interacts with. Avoid testing implementation details. No direct state access. No querying by `data-testid` unless no user-facing alternative exists. ## Mocking Mock browser APIs (`window.location`, `fetch`, `IntersectionObserver`, etc.) as needed. Use `vi.fn()` for spies and `vi.mock()` for module mocks. Keep mocks minimal and scoped to the test file. Reset mocks between tests with `vi.restoreAllMocks()` or per-test cleanup. ## Determinism Tests must be deterministic. No relying on real timers, network calls, or shared mutable state. Use `vi.useFakeTimers()` for time-dependent logic. Isolate each test so it can run independently in any order. ## Rules - Do not commit failing tests. Fix before pushing. - Add or update tests alongside any feature change or bug fix. Tests are not optional. - If a test is temporarily skipped, it must have a linked issue: `it.skip('description #123')`.
Auf GitHub ansehen