uvu vs Vitest: runner minúsculo ou framework completo?
uvu é um test runner extremamente pequeno e rápido com recursos mínimos; Vitest é um framework rico em recursos baseado em Vite com mocks, snapshots e cobertura.
uvu é um runner minúsculo e leve em dependências, focado em velocidade bruta e inicialização rápida, com uma API mínima e sem mocking, snapshots ou cobertura nativos - você adiciona ferramentas conforme necessário. Vitest é um framework completo que reutiliza a configuração do Vite, oferece uma API semelhante à do Jest, watch mode, mocking, snapshots e cobertura, servindo a aplicações modernas Vite/TS. uvu trata de tamanho mínimo e velocidade; Vitest trata de recursos e integração.
| uvu | Vitest | |
|---|---|---|
| Tamanho / inicialização | Minúsculo, muito rápido | Maior, rápido (Vite) |
| Recursos | Mínimos | Mocks, snapshots, cobertura |
| TS / Vite | Configuração manual | De primeira classe |
| Watch mode | Não | Sim (HMR) |
| Melhor para | Bibliotecas pequenas, velocidade | Aplicações Vite/TS |
No CI
uvu é ótimo para pequenas bibliotecas que querem dependências mínimas e a inicialização mais rápida possível, aceitando que você mesmo configure TS, cobertura e mocking. Vitest serve a aplicações que querem um runner integrado e completo, com cobertura e snapshots nativos. Ambos paralelizam no CI; escolha uvu para minimalismo, Vitest para recursos.
Acelere
Faça cache das dependências e distribua (shard) os testes entre jobs para reduzir o tempo total. Ambos rodam em runners de CI; runners gerenciados mais rápidos encurtam a execução dos testes e as etapas de transformação.
O veredito
Se está escrevendo uma pequena biblioteca que preza por tamanho mínimo e inicialização rápida: uvu. Se está construindo uma aplicação Vite ou TypeScript e quer mocks, snapshots, cobertura e watch mode: Vitest. A maioria das equipes de aplicações escolhe Vitest; uvu serve a bibliotecas minimalistas e microbenchmarks.