Cobertura Vitest vs Jest: qual reporta mais rápido no CI?
Ambos produzem cobertura, mas o provider importa: a cobertura v8 é rápida, a istanbul é mais precisa - e o Vitest e o Jest as expõem de forma diferente.
O Vitest coleta cobertura via um provider configurável (v8 por padrão, ou istanbul). O Jest usa cobertura baseada em istanbul por padrão. A diferença de velocidade e precisão geralmente se resume a v8 (rápido, nativo) vs istanbul (instrumentado, preciso) mais do que ao runner em si.
| Cobertura Vitest | Cobertura Jest | |
|---|---|---|
| Provider padrão | v8 (rápido) | istanbul (instrumentado por babel) |
| Provider alternativo | istanbul disponível | v8 via config/tooling |
| Velocidade | Rápida (v8) / mais lenta (istanbul) | Mais lenta (instrumentação) |
| Precisão | Boa (v8), alta (istanbul) | Alta (istanbul) |
| Tratamento de ESM/TS | Nativo | Precisa de config |
No CI
O Vitest com o provider v8 geralmente gera cobertura mais rápido porque usa contagens nativas do V8 em vez de instrumentar o código, o que encurta a execução de cobertura. O istanbul (padrão do Jest, e uma opção no Vitest) instrumenta o source para dados de linha/branch muito precisos a um custo maior. Se o tempo de cobertura é um gargalo, o v8 é a alavanca; se você precisa da cobertura de branches mais precisa, o istanbul vale o tempo.
Cobertura no CI
Imponha um threshold de cobertura para falhar o build em regressões, e faça upload dos relatórios para seu serviço de cobertura. Execuções de cobertura adicionam trabalho de CPU sobre os testes; runners gerenciados mais rápidos encurtam suítes pesadas de cobertura de qualquer forma.
O veredito
Quer a cobertura mais rápida e você está no Vitest: use o provider v8. Precisa da cobertura de branches mais precisa: istanbul (padrão do Jest, também disponível no Vitest). O provider, mais do que o runner, define velocidade vs precisão.