
vitest-best-practices
Comprehensive vitest testing patterns covering test structure, AAA pattern, parameterized tests, assertions, mocking, test doubles, error handling, async testing, and performance optimization. Use when writing, reviewing, or refactoring vitest tests, or when user mentions vitest, testing, TDD, test coverage, mocking, assertions, or test files (.test.ts, .spec.ts).
- Installs
- 83
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/pageai-pro/ralph-loop --skill vitest-best-practices- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads vitest-best-practices automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Vitest Best Practices
When to Apply This Skill
Use this skill when you encounter any of these scenarios:
File Patterns
- Working with
*.test.ts,*.spec.ts, or similar test files - Creating new test files for TypeScript/JavaScript modules
- Reviewing existing vitest test suites
User Intent Keywords
- User mentions: vitest, testing, TDD, BDD, unit tests, integration tests
- User asks to: write tests, add test coverage, fix failing tests, refactor tests
- User discusses: mocking, stubbing, assertions, test performance, test organization
Code Context
- Files importing from
vitest(describe,it,expect,vi) - Test setup/teardown code (
beforeEach,afterEach,beforeAll,afterAll) - Mock/spy implementations using
vi.mock(),vi.spyOn(),vi.fn() - Assertion chains (
expect(...).toEqual(),.toBe(),.toThrow(), etc.)
Common Tasks
- Writing new test cases for existing functionality
- Refactoring tests for better clarity or performance
- Debugging flaky or failing tests
- Improving test coverage or maintainability
- Reviewing test code for best practices compliance
Do NOT Use This Skill When
- Writing end-to-end tests with Playwright/Cypress (different scope)
- The task is purely about implementation code, not tests
What This Skill Covers
This skill provides comprehensive guidance on:
- Test Organization: File placement, naming conventions, grouping strategies
- AAA Pattern: Arrange, Act, Assert structure for clarity
- Parameterized Tests: Using
it.each()for testing variations - Error Handling: Testing exceptions, edge cases, and fault injection
- Assertions: Choosing strict assertions (
toEqual,toStrictEqual,toThrow) - Test Doubles: Fakes, stubs, mocks, spies - when to use each
- Async Testing: Promises, async/await, timers, and concurrent tests
- Performance: Fast tests, avoiding expensive operations, cleanup patterns
- Vitest-Specific Features: Coverage, watch mode, benchmarking, type testing, setup files
- Snapshot Testing: When and how to use snapshots effectively
How to Use
This skill uses a progressive disclosure structure to minimize context usage:
1. Start with the Overview (AGENTS.md)
Read AGENTS.md for a concise overview of all rules with one-line summaries.
2. Load Specific Rules as Needed
When you identify a relevant optimization, load the corresponding reference file for detailed implementation guidance:
Core Patterns:
- organization.md
- aaa-pattern.md
- parameterized-tests.md
- error-handling.md
- assertions.md
- test-doubles.md
Advanced Topics:
- async-testing.md
- performance.md
- vitest-features.md
- snapshot-testing.md
3. Apply the Pattern
Each reference file contains:
- ❌ Incorrect examples showing the anti-pattern
- ✅ Correct examples showing the optimal implementation
- Explanations of why the pattern matters
Quick Example
This skill helps you transform unclear tests into clear, maintainable ones:
Before (unclear):
test('product test', () => {
const p = new ProductService().add({name: 'Widget'});
expect(p.status).toBe('pendingApproval');
});
After (optimized with this skill):
describe('ProductService', () => {
describe('Add new product', () => {
it('should have status "pending approval" when no price is specified', () => {
// Arrange
const productService = new ProductService();
// Act
const newProduct = productService.add({name: 'Widget'});
// Assert
expect(newProduct.status).toEqual('pendingApproval');
});
});
});
Key Principles
- Clarity over cleverness: Tests should be instantly understandable
- Flat structure: Avoid deep nesting in describe blocks
- One assertion per concept: Focus tests on single behaviors
- Strict assertions: Prefer
toEqualovertoBe,toStrictEqualwhen needed - Minimal mocking: Use real implementations when practical
- Fast execution: Keep tests quick through efficient setup/teardown
FAQ
What does the vitest-best-practices skill do?
Comprehensive vitest testing patterns covering test structure, AAA pattern, parameterized tests, assertions, mocking, test doubles, error handling, async testing, and performance optimization. Use when writing, reviewing, or refactoring vitest tests, or when user mentions vitest, testing, TDD, test coverage, mocking, assertions, or test files (.test.ts, .spec.ts).
How do I install vitest-best-practices?
Run npx skills add https://github.com/pageai-pro/ralph-loop --skill vitest-best-practices in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/vitest-best-practices/ (personal) or .claude/skills/vitest-best-practices/ (project).
Which AI agents can use vitest-best-practices?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is vitest-best-practices safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains vitest-best-practices?
It is published by pageai-pro in pageai-pro/ralph-loop. It has 83 recorded installs.
More from pageai-pro/ralph-loop
prd-creator
pageai-pro/ralph-loop
Guides creation of comprehensive Product Requirement Documents (PRDs) for software projects through structured questioning and validation, then generates implementation task lists in JSON format. Use when users want to document a software idea, create specifications for development, plan a new application feature/bug, or break down requirements into actionable tasks. Transforms ideas into implementation-ready documents with verifiable pass criteria.
e2e-tester
pageai-pro/ralph-loop
Open the skill to read its SKILL.md instructions.
frontend-code-review
pageai-pro/ralph-loop
Trigger when the user requests a review of frontend files (e.g., .tsx, .ts, .js). Support both pending-change reviews and focused file reviews while applying the checklist rules.
component-refactoring
pageai-pro/ralph-loop
Open the skill to read its SKILL.md instructions.
mysql
pageai-pro/ralph-loop
Open the skill to read its SKILL.md instructions.
frontend-testing
pageai-pro/ralph-loop
Open the skill to read its SKILL.md instructions.
Popular testing & qa skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
grilling
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
migrate-to-shoehorn
mattpocock/skills
Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.
run-train
lllllllama/rigorpilot-skills
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
test-driven-development
obra/superpowers
Use when implementing any feature or bugfix, before writing implementation code
finishing-a-development-branch
obra/superpowers
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work