Jest vs Vitest: qual test runner de JS para o CI?
O Vitest é o test runner nativo do Vite com uma API compatível com o Jest; no CI o atrativo é execução mais rápida e suporte de primeira classe a ESM/TS.
O Jest é o consagrado test runner de JavaScript que já vem completo. O Vitest é construído sobre o Vite, compartilha boa parte da API do Jest e usa o pipeline de transformação do Vite para testes rápidos e amigáveis a ESM.
| Jest | Vitest | |
|---|---|---|
| Velocidade | Boa | Frequentemente mais rápida (transformação do Vite) |
| Suporte a ESM / TS | Funciona (precisa de configuração) | De primeira classe |
| Compatibilidade de API | n/a | Amplamente compatível com Jest |
| Melhor cenário | Qualquer projeto JS, ecossistema enorme | Projetos baseados em Vite |
| Modo watch | Sim | Sim (estilo HMR rápido) |
No CI
O Vitest tende a rodar mais rápido e lida com ESM/TypeScript com pouca configuração, o que é ideal para apps baseados em Vite e encurta a etapa de teste. O Jest tem o ecossistema maior, mais exemplos e funciona em qualquer lugar, independentemente do bundler. Sua API majoritariamente compatível faz com que migrar do Jest para o Vitest costume ter baixo atrito.
Testes instáveis
Ambos podem ficar instáveis em testes sensíveis a temporização ou de integração. Limite a contagem de workers para evitar OOM no CI e planeje reexecutar falhas transitórias para que um único teste instável não quebre o build. Runners gerenciados mais rápidos reduzem o tempo total em suítes grandes.
O veredito
No Vite ou querendo testes rápidos com ESM em primeiro lugar: Vitest. Querendo o maior ecossistema e estabilidade independente do bundler: Jest. A API compatível torna o Vitest uma avaliação fácil se o tempo de teste do Jest for seu gargalo.