Paralelismo
Paralelismo de Arquivos
Por padrão, o Vitest executa arquivos de teste em paralelo. Dependendo da opção pool especificada, o Vitest utiliza um mecanismo diferente para paralelizar a execução dos arquivos de teste:
forks(o padrão) evmForksexecutam testes em diferentes processos filho.threadsevmThreadsexecutam testes em diferentes threads de trabalho.
Tanto "processos filho" quanto "threads de trabalho" são referidos como "workers". Você pode configurar o número de workers em execução com as opções minWorkers e maxWorkers, ou de forma mais granular com a configuração poolOptions.
Ter muitos testes geralmente resulta em uma execução mais rápida quando eles são executados em paralelo. No entanto, isso também depende do projeto, do ambiente e do nível de isolamento. Para desabilitar o paralelismo de arquivos, você pode definir fileParallelism como false. Para mais informações sobre possíveis melhorias de desempenho, consulte o Guia de Desempenho.
Paralelismo de Testes
Ao contrário dos arquivos de teste, o Vitest executa os testes em sequência. Isso significa que os testes dentro de um único arquivo de teste serão executados na ordem em que foram definidos.
O Vitest suporta a opção concurrent para executar testes simultaneamente. Se esta opção for definida, o Vitest agrupará testes simultâneos no mesmo arquivo e os executará utilizando Promise.all. A quantidade de testes executados simultaneamente depende da opção maxConcurrency.
O Vitest não realiza nenhuma análise inteligente nem cria workers adicionais para executar esses testes. Isso significa que o desempenho dos seus testes só melhorará se eles dependerem muito de operações assíncronas. Por exemplo, os testes a seguir ainda serão executados um após o outro, mesmo que a opção concurrent seja especificada, pois são síncronos:
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});Se você deseja executar todos os testes em paralelo, pode definir a opção sequence.concurrent como true.