vitest
Installation
SKILL.md
A test earns its place by failing when the behavior breaks, and at no other time. Three biases decide most calls:
- Mock the boundary, never the unit under test. Every mock asserts that the real thing cannot run here. Most such assertions are false, and each false one buys a test that keeps passing after the code is wrong.
- Prefer a fixture to a hook.
test.extendinitializes on demand, tears down in its own scope, and declares its dependencies in the signature. AbeforeEachruns for every test in scope whether that test needs it or not. - The installed major decides what may be written, not the shape recalled from an older one.
Version and Toolchain
Vitest 4 is the target. Read the installed version out of the lockfile before touching a config file — the configuration surface moved in 3.2, 4.0 and 4.1, and a key from the wrong one is silently ignored or loudly rejected.
Vitest 4.1 requires Node ^20 || ^22 || >=24 and Vite ^6 || ^7 || ^8. Vitest 4.0 shipped requiring Vite 6 and Node
20; 4.1 added Vite 8 and uses the installed vite rather than a bundled copy.
What changed, by version. Every removal below is rejected or ignored under Vitest 4; the 4.1 entries are additions and need 4.1 installed.