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.

来源信息

仓库
divinevideo/divine-web
最近来源活动
2026年5月19日 05:26
检测到的 SKILL.md 语言
英语
星标
50
Forks
29

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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')`.
在 GitHub 查看