Skip to main content

Entorno de pruebas

Los tests corren con Vitest en un entorno jsdom. vitest.config.ts carga como setupFiles el archivo src/test/setup.ts, que mockea globalmente:
  • next/image: se reemplaza por un <img> plano que reenvía alt, src y el resto de props.
  • next/link: se reemplaza por un <a> que reenvía href y el resto de props.
  • next/navigation: usePathname() siempre devuelve "/"; useRouter() devuelve un objeto con push, replace, back y prefetch como spies de Vitest (vi.fn()); useSearchParams() y useParams() devuelven valores vacíos.

Los tests conviven con el código

No hay una carpeta __tests__ separada: cada módulo vive junto a su test, foo.ts junto a foo.test.ts (o su equivalente .tsx). Vitest los descubre con el patrón src/**/*.{test,spec}.{ts,tsx}.

Qué queda fuera de cobertura

La configuración de cobertura de vitest.config.ts excluye:
  • src/**/*.{test,spec}.{ts,tsx} — los propios archivos de test no cuentan para su propia cobertura.
  • src/components/ui/** — primitivos shadcn/ui, código de terceros.
  • src/components/admin/** y src/components/dashboard/** — paneles admin y dashboard, que se cubren en una pasada dedicada (sesión/API).
  • src/app/**/page.tsx, src/app/**/layout.tsx y src/app/**/not-found.tsx — wrappers de ruta de Next.js, con poca lógica propia.
  • src/generated/** — el cliente de Prisma generado.
  • src/test/**, src/types/**, src/**/*.d.ts, src/app/api/auth/** y src/data/**.
Los umbrales de cobertura configurados son statements 75%, functions 75%, lines 80% y branches 65%.

Comandos

Un archivo o un caso de test sueltos: