> ## Documentation Index
> Fetch the complete documentation index at: https://docs.camellapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing

> Vitest, el setup compartido y qué queda fuera de cobertura.

## 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/**`.

<Note>
  Los umbrales de cobertura configurados son statements 75%, functions 75%,
  lines 80% y branches 65%.
</Note>

## Comandos

```bash theme={null}
npm test
npm run test:watch
npm run test:coverage
```

Un archivo o un caso de test sueltos:

```bash theme={null}
npm test -- src/lib/camellos.test.ts
npm test -- -t "nombre del caso"
```
