vitest
Vitest 5 unit tests and mocking.
How do I install this agent skill?
npx skills add https://github.com/pymodel/react-frontend-skills --skill vitestIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides a comprehensive set of best practices for Vitest 5 testing, covering categories like async patterns, mocking, performance, and organization. It includes instructions to use a vendor-provided scanning tool for configuration checks, which is standard for the provided author context. No security risks were identified.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Vitest Best Practices
Vitest 5-compatible testing guide with 46 rules across 8 categories. Vitest 5 requires Node.js 22.12+ and Vite 6.4+; Vitest 4.1 remains on backport support.
When to Apply
Reference these guidelines when:
- Writing new Vitest tests
- Debugging flaky or slow tests
- Setting up test configuration
- Reviewing test code in PRs
- Migrating from Jest to Vitest
- Optimizing CI/CD test performance
Jest-specific APIs and configuration outside documented migration differences are out of scope; use Jest's own documentation for tests that still run under Jest.
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Async Patterns | CRITICAL | async- |
| 2 | Test Setup & Isolation | CRITICAL | setup- |
| 3 | Mocking Patterns | HIGH | mock- |
| 4 | Performance | HIGH | perf- |
| 5 | Snapshot Testing | MEDIUM | snap- |
| 6 | Environment | MEDIUM | env- |
| 7 | Assertions | LOW-MEDIUM | assert- |
| 8 | Test Organization | LOW | org- |
Quick Reference
1. Async Patterns (CRITICAL)
async-await-assertions- Await async assertions (Vitest 5 fails unawaited ones)async-return-promises- Return promises from test functionsasync-fake-timers- Use fake timers for time-dependent codeasync-waitfor-polling- Use vi.waitFor for async conditionsasync-concurrent-expect- Use test context expect in concurrent testsasync-act-wrapper- Await user events to avoid act warningsasync-error-handling- Test async error handling properly
2. Test Setup & Isolation (CRITICAL)
setup-beforeeach-cleanup- Clean up state in afterEach hookssetup-restore-mocks- Restore mocks after each testsetup-avoid-shared-state- Avoid shared mutable state between testssetup-beforeall-expensive- Use beforeAll for expensive one-time setupsetup-reset-modules- Reset modules when testing module statesetup-test-factories- Use test factories for complex test datasetup-vitest5-migration- Plan the Vitest 5 migration deliberately (5.0)
3. Mocking Patterns (HIGH)
mock-vi-mock-hoisting- Understand vi.mock hoisting behaviormock-spyon-vs-mock- Choose vi.spyOn vs vi.mock appropriatelymock-implementation-not-value- Use mockImplementation for dynamic mocksmock-msw-network- Use MSW for network request mockingmock-avoid-overmocking- Avoid over-mockingmock-type-safety- Maintain type safety in mocksmock-clear-between-tests- Clear mock state between tests (default in Vitest 5)
4. Performance (HIGH)
perf-pool-selection- Choose the right pool for performanceperf-disable-isolation- Disable test isolation when safeperf-happy-dom- Use happy-dom over jsdom when possibleperf-sharding- Use sharding for CI parallelizationperf-run-mode-ci- Use run mode in CI environmentsperf-bail-fast-fail- Use bail for fast failure in CIperf-bench-test-context- Write Vitest 5 benchmarks with the bench fixture
5. Snapshot Testing (MEDIUM)
snap-inline-over-file- Prefer inline snapshots for small valuessnap-avoid-large- Avoid large snapshotssnap-stable-serialization- Ensure stable snapshot serializationsnap-review-updates- Review snapshot updates before committingsnap-describe-intent- Name snapshot tests descriptively
6. Environment (MEDIUM)
env-per-file-override- Override environment per file when neededenv-setup-files- Use setup files for global configurationenv-globals-config- Configure globals consistentlyenv-browser-api-mocking- Mock browser APIs not available in test environment
7. Assertions (LOW-MEDIUM)
assert-specific-matchers- Use specific matchers over generic onesassert-edge-cases- Test edge cases and boundariesassert-one-assertion-concept- Test one concept per testassert-expect-assertions- Use expect.assertions for async testsassert-toequal-vs-tobe- Choose toBe vs toEqual correctly
8. Test Organization (LOW)
org-file-colocation- Colocate test files with source filesorg-describe-nesting- Use describe blocks for logical groupingorg-test-naming- Write descriptive test namesorg-test-skip-only- Use skip and only appropriately
How to Use
Run in the project root first:
npx -y @pymodel/react-frontend-skills detect # installed vs. targeted versions
npx -y @pymodel/react-frontend-skills scan --skill vitest # deprecated APIs → rule IDs
Read references/<rule-id>.md for each rule above that matches the task and for each scan hit: why it matters, then incorrect vs. correct code.
Related Skills
- For TDD methodology, see
tddskill - For API mocking with MSW, see
mswskill - For TypeScript testing patterns, see
typescriptskill
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/pymodel/react-frontend-skills/vitest">View vitest on skillZs</a>