vitest▌
pproenca/dot-skills · updated Apr 8, 2026
44 Vitest best practices rules organized by priority, covering async patterns, test setup, mocking, performance, snapshots, and assertions.
- ›Async patterns and test isolation are marked CRITICAL; covers awaiting assertions, returning promises, fake timers, and proper cleanup between tests
- ›Mocking rules address vi.mock hoisting, spyOn vs mock selection, implementation patterns, and type safety
- ›Performance optimization includes pool selection, test isolation toggling, happy-dom preferen
Vitest Best Practices
Comprehensive performance optimization and best practices guide for Vitest testing framework. Contains 44 rules across 8 categories, prioritized by impact to guide test writing, refactoring, and code review.
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
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 to prevent false positivesasync-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 data
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
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 CI
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
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
- async-await-assertions - Example rule file
- mock-vi-mock-hoisting - Example rule file
Related Skills
- For TDD methodology, see
test-tddskill - For API mocking with MSW, see
test-mswskill - For TypeScript testing patterns, see
typescriptskill
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.6★★★★★71 reviews- ★★★★★Kofi Gonzalez· Dec 28, 2024
We added vitest from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Isabella Ghosh· Dec 16, 2024
Registry listing for vitest matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Kiara Flores· Dec 12, 2024
vitest fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Meera Jain· Nov 23, 2024
Solid pick for teams standardizing on skills: vitest is focused, and the summary matches what you get after install.
- ★★★★★Nia Jain· Nov 19, 2024
vitest reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Nia Tandon· Nov 19, 2024
vitest has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Omar Park· Nov 3, 2024
Registry listing for vitest matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Chinedu Gill· Oct 22, 2024
vitest reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Maya Zhang· Oct 14, 2024
vitest has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Benjamin Robinson· Oct 10, 2024
Registry listing for vitest matched our evaluation — installs cleanly and behaves as described in the markdown.
showing 1-10 of 71