Capítulo 89 de 456
Setup do Vitest + React Testing Library para Unit Testing no Next.js, com config via vitest.config.mts e plugin @vitejs/plugin-react.
async — use E2E para esses casos.vite-tsconfig-paths: plugin necessário (em projetos TypeScript) para resolver Module Path Aliases do tsconfig.json dentro do Vitest.environment: 'jsdom': necessário para simular DOM em testes de componente.npm run test roda Vitest em modo watch, diferente do comportamento padrão do Jest.__tests__ é comum, mas arquivos de teste também podem ficar colocados dentro do próprio diretório app.import { defineConfig } from 'vitest/config'
import react from '@vitejs/plugin-react'
import tsconfigPaths from 'vite-tsconfig-paths'
export default defineConfig({
plugins: [tsconfigPaths(), react()],
test: { environment: 'jsdom' },
})
import { expect, test } from 'vitest'
import { render, screen } from '@testing-library/react'
import Page from '../app/page'
test('Page', () => {
render(<Page />)
expect(screen.getByRole('heading', { level: 1, name: 'Home' })).toBeDefined()
})
test/expect do Vitest com React Testing Library.async: não suportado — use E2E testing.vite-tsconfig-paths em projeto TypeScript com path aliases: imports absolutos (@/components/*) falham na resolução dentro dos testes.vitest.config.mts), diferente do Jest que tem next/jest fazendo boa parte do trabalho.npm run test entra em watch mode por padrão.next/jest.