Por que Vitest
NOTA
Este guia pressupõe que você já esteja familiarizado com o Vite. Para aprofundar seus conhecimentos, recomendamos a leitura do Guia Por que Vite e a visualização de Ferramentas de frontend de próxima geração com ViteJS, uma apresentação onde Evan You demonstra e explica os principais conceitos.
A Necessidade de um Test Runner Nativo do Vite
O suporte nativo do Vite a padrões web comuns, recursos como importações glob e primitivas de SSR, juntamente com sua vasta gama de plugins e integrações, está impulsionando um ecossistema vibrante. Seus processos de desenvolvimento e build são cruciais para seu sucesso. Para documentação, existem diversas alternativas baseadas em SSG que utilizam o Vite. No entanto, a abordagem do Vite para Testes Unitários não tem sido tão clara. Opções existentes, como o Jest, foram desenvolvidas em um contexto diferente. Há uma grande duplicação entre Jest e Vite, o que força os usuários a configurar dois pipelines distintos.
Utilizar o servidor de desenvolvimento do Vite para transformar seus arquivos durante os testes permite a criação de um runner simples que não precisa lidar com a complexidade da transformação de arquivos-fonte, podendo focar exclusivamente em proporcionar a melhor Experiência de Desenvolvedor (DX) durante os testes. Um test runner que compartilha a mesma configuração do seu aplicativo (através de vite.config.js
) e um pipeline de transformação comum durante o desenvolvimento, a construção e o momento de teste. Ele é extensível com a mesma API de plugins que permite a você e aos mantenedores de suas ferramentas oferecer uma integração de primeira classe com o Vite. Uma ferramenta construída com o Vite em mente desde o início, aproveitando suas melhorias em DX, como seu Hot Module Reload (HMR) instantâneo. Este é o Vitest, um framework de testes de próxima geração impulsionado pelo Vite.
Considerando a enorme adoção do Jest, o Vitest oferece uma API compatível que permite utilizá-lo como uma substituição direta na maioria dos projetos. Ele também inclui os recursos mais comuns necessários ao configurar seus testes unitários (mocking, snapshots, cobertura de código). O Vitest prioriza o desempenho e utiliza worker threads para executar o máximo possível em paralelo. Em alguns ports, a execução de testes foi uma ordem de magnitude mais rápida. O modo watch é ativado por padrão, alinhando-se à forma como o Vite prioriza uma experiência de desenvolvimento fluida. Mesmo com todas essas melhorias em DX, o Vitest permanece leve, selecionando cuidadosamente suas dependências (ou incorporando diretamente as partes necessárias).
O Vitest tem como objetivo se posicionar como o Test Runner preferencial para projetos Vite, e como uma alternativa sólida mesmo para projetos que não utilizam Vite.
Continue lendo no Guia de Introdução
Como o Vitest é Diferente de X?
Você pode verificar a seção Comparações para mais detalhes sobre como o Vitest difere de outras ferramentas semelhantes.