Você está buscando uma ferramenta moderna e eficiente para revolucionar seus testes automatizados? Conheça o Vitest, um framework que une simplicidade, performance e flexibilidade, projetado para atender às necessidades dos desenvolvedores de hoje.

Por que escolher o Vitest?

O Vitest foi desenvolvido pensando em produtividade e modernidade. Com suporte nativo a ES Modules, TypeScript e JSX, ele facilita a vida de quem trabalha com tecnologias atuais.

Se você utiliza o Vite em seus projetos, a integração é ainda mais impressionante: o Vitest reaproveita configurações e plugins do vite.config.js, eliminando a necessidade de arquivos de configuração adicionais.

Além disso, o modo de observação (watch mode) do Vitest é incrivelmente rápido, funcionando como um HMR (Hot Module Replacement) para testes. Isso significa feedback instantâneo durante o desenvolvimento, aumentando sua eficiência.

Ah, e você não precisa usar Vite para aproveitar tudo isso! O Vitest também funciona perfeitamente em outros cenários.

Já usa o Jest? Adapte-se em minutos

Se você já está familiarizado com o Jest, migrar para o Vitest é fácil. Sua API é quase idêntica, incluindo ferramentas poderosas como Snapshot e Coverage. Veja um exemplo prático retirado da documentação:

import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'

describe('purchasing flow', () => {
  beforeEach(() => {
    vi.useFakeTimers()
  })

  afterEach(() => {
    vi.useRealTimers()
  })

  it('allows purchases within business hours', () => {
    const date = new Date(2000, 1, 1, 13)
    vi.setSystemTime(date)
    expect(purchase()).toEqual({ message: 'Success' })
  })

  it('disallows purchases outside of business hours', () => {
    const date = new Date(2000, 1, 1, 19)
    vi.setSystemTime(date)
    expect(purchase()).toEqual({ message: 'Error' })
  })
})

Quer manter as funções de teste disponíveis globalmente, como no Jest? Basta configurar:

export default defineConfig({
  test: {
    globals: true,
  },
});

Explore mais sobre essas funcionalidades na documentação oficial.

Compatibilidade com DOM: JSDOM ou Happy DOM?

Precisa testar interações com DOM? O Vitest oferece suporte a dois simuladores populares: JSDOM e Happy DOM.

  • JSDOM: Ideal para testes que requerem alta fidelidade ao comportamento do navegador. Perfeito para frameworks como React, Vue e Angular.
  • Happy DOM: Uma alternativa mais rápida e leve, projetada para performance em grandes suítes de teste ou pipelines de CI.

Enquanto o JSDOM é mais completo, o Happy DOM é otimizado para testes simples e rápidos. Escolha com base nas necessidades do seu projeto.

Asserções

O Vitest oferece duas abordagens principais para asserções: expect e assert.

Exemplo com assert

import { assert, test } from 'vitest'

test('assert', () => {
  assert('foo' !== 'bar', 'foo should not be equal to bar')
})

Exemplo com expect

import { expect } from 'vitest'

const input = Math.sqrt(4)

expect(input).to.equal(2) // chai API
expect(input).toBe(2) // jest API

Conclusão

O Vitest é mais do que uma alternativa ao Jest; ele representa uma evolução na forma de realizar testes automatizados. Seja pela performance superior, integração simplificada ou API familiar, o Vitest oferece tudo o que você precisa para elevar a qualidade do seu código.

Experimente hoje mesmo e descubra por que o Vitest está se tornando o framework de testes favorito entre os desenvolvedores.