Vitest é Jest reimaginado para velocidade. Usa Vite under the hood, ESM nativo, HMR para testes. Migração de Jest é trivial.
Conceitos Principais
Vite Integration
Reutiliza config do Vite. Mesma resolução de módulos. Plugins Vite funcionam em testes. HMR para re-run instantâneo.
Jest Compatibility
API idêntica: expect, describe, test, beforeEach. Mocks compatíveis. Migration automática via codemod.
ESM Nativo
Suporte ESM real. Não precisa transformar node_modules. Top-level await funciona. Mais rápido que transpilação.
UI Mode
Interface visual para testes. Veja falhas em tempo real. Debug interativo. Melhor DX que terminal.
Passo a Passo
- Instale Vitest: npm install -D vitest. package.json: "test": "vitest". Projetos Vite: zero config extra. Detecta vite.config.ts.
- Migre de Jest: Renomeie jest.config.js → vitest.config.ts. Mude imports: @testing-library/jest-dom → @testing-library/vitest. Rode: npx vitest.
- Configure vitest.config: import { defineConfig } from "vitest/config". test: { globals: true, environment: "jsdom" }. Mesmas opções do Jest.
- UI Mode: npx vitest --ui. Abre browser. Veja testes em tempo real. Filtre por arquivo, status. Debug com devtools.
- Coverage: Install @vitest/coverage-v8. vitest --coverage. Istanbul ou V8 coverage. Mesmos reports que Jest.
Boas Praticas
Recomendacoes
• Use globals: true para API sem imports
• Aproveite HMR: watch mode sempre ligado
• UI mode para debug complexo
• Compartilhe config com vite.config
• Parallel execution default (mais rápido)
Erros Comuns
Evite estes erros
• Não aproveitar config Vite compartilhada
• Forçar CommonJS (ESM é mais rápido)
• Não usar UI mode (melhor DX)
• Ignorar mensagens de deprecation
Checklist
- Vitest instalado
- Config compartilhada com Vite
- Testes migrando de Jest (se aplicável)
- Watch mode funcionando
- UI mode testado
- Coverage configurado