Jest vs Mocha: qual test runner JS para CI?
O Jest é all-in-one; o Mocha é um core mínimo que você monta com bibliotecas de asserção e mocking.
O Jest reúne runner, asserções, mocking e snapshots em um único pacote. O Mocha é um test runner flexível que você combina com bibliotecas como Chai (asserções) e Sinon (mocks).
| Jest | Mocha | |
|---|---|---|
| Tudo incluído | Sim (assert, mock, snapshot) | Não (compõe bibliotecas) |
| Mocking | Embutido | Sinon ou similar |
| Snapshots | Embutido | Add-on |
| Paralelismo | Embutido (workers) | Manual / add-ons |
| Flexibilidade | Opinativo | Altamente flexível |
No CI
O Jest precisa de pouco setup e paraleliza testes entre workers de fábrica, o que mantém o passo de teste simples e rápido. O Mocha é mais enxuto e flexível - bom quando você quer escolher cada peça - mas você monta paralelismo, mocking e cobertura por conta própria. Suítes grandes do Jest podem estourar a memória dos workers de CI; limite os workers e dimensione a memória independentemente do runner.
Escolhendo para pipelines
Quer uma ferramenta única e bem integrada com mínima ligação: Jest. Quer um core mínimo que você controla totalmente: Mocha mais as bibliotecas que você escolher. Ambos são maduros e bem suportados em CI.
O veredito
Quer testes com tudo incluído e paralelismo embutido: Jest. Quer uma stack flexível e componível: Mocha. De qualquer forma, planeje retries para testes flaky em suítes E2E ou de integração lentas.