Por que Vitest
NOTA
Este guia assume que você está familiarizado com o Vite. Uma boa maneira de começar a aprender mais é ler o Guia Por que Vite e Ferramentas de front-end de próxima geração com ViteJS, uma apresentação onde Evan You fez uma demonstração explicando os principais conceitos.
Por que precisamos de um executor de testes nativo para o Vite?
O suporte nativo do Vite para padrões web comuns, recursos como importações globais e primitivos de SSR, e seus muitos plugins e integrações estão fomentando um ecossistema vibrante. Seu fluxo de desenvolvimento e construção são fundamentais para seu sucesso. Para documentação, existem várias alternativas baseadas em SSG. No entanto, a situação dos testes unitários no Vite não tem sido clara. As opções existentes como Jest foram criadas em um contexto diferente. Há muita duplicação entre Jest e Vite, forçando os usuários a configurar dois fluxos diferentes.
Utilizar o servidor de desenvolvimento do Vite para transformar seus arquivos durante os testes permite a criação de um executor simples. Este executor não precisa lidar com a complexidade de transformar arquivos de origem, podendo se concentrar em fornecer a melhor experiência de desenvolvimento (DX) durante os testes. Um executor de testes que utiliza a mesma configuração do seu aplicativo (através do vite.config.js
) e compartilha um pipeline de transformação comum durante o desenvolvimento, build e tempo de teste. Essa abordagem é extensível com a mesma API de plugin, permitindo que você e os mantenedores de suas ferramentas forneçam uma integração de primeira classe com o Vite. Uma ferramenta construída desde o início com o Vite em mente, aproveitando suas melhorias em DX, como o Hot Module Reload (HMR) instantâneo. Este é o Vitest, um framework de teste unitário incrivelmente rápido alimentado pelo Vite.
Devido à grande adoção do Jest, o Vitest oferece uma API compatível que permite utilizá-lo como um substituto direto na maioria dos projetos. Ele também inclui os recursos mais comuns necessários ao configurar seus testes unitários (mocking, snapshots, coverage). O Vitest se preocupa muito com o desempenho e usa Worker Threads para executar o máximo possível em paralelo. Em alguns casos, os testes rodaram uma ordem de magnitude mais rápido. O modo watch é ativado por padrão, alinhando-se com a abordagem do Vite de priorizar a experiência de desenvolvimento. Mesmo com todas essas melhorias em DX, o Vitest permanece leve, escolhendo cuidadosamente suas dependências ou incorporando diretamente as funcionalidades necessárias.
O Vitest tem como objetivo se posicionar como o executor de testes preferido para projetos Vite e como uma alternativa sólida, mesmo em 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 obter mais detalhes sobre como o Vitest difere de outras ferramentas semelhantes.