Skip to content
Latchkey

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 VitestCobertura Jest
Provider padrãov8 (rápido)istanbul (instrumentado por babel)
Provider alternativoistanbul disponívelv8 via config/tooling
VelocidadeRápida (v8) / mais lenta (istanbul)Mais lenta (instrumentação)
PrecisãoBoa (v8), alta (istanbul)Alta (istanbul)
Tratamento de ESM/TSNativoPrecisa 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.

Guias relacionados