Comfaca Créditos en Línea cuenta con una estrategia de testing multicapa que cubre desde funciones individuales del servidor hasta flujos completos de usuario en el navegador. Las pruebas unitarias y de integración se ejecutan con Vitest sobre el runtime de Nuxt, los servicios externos (FlaskPDF, email) se interceptan con MSW para garantizar aislamiento, y los flujos críticos de la aplicación se validan de extremo a extremo con Playwright en Chromium, Firefox y Safari móvil.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/elegroag/nuxt-credito-caja/llms.txt
Use this file to discover all available pages before exploring further.
Herramientas
Vitest
Framework de pruebas unitarias e integración basado en Vite. Ejecuta proyectos paralelos para tests de servidor, cliente e integración con soporte nativo de TypeScript.
MSW
Mock Service Worker intercepta peticiones HTTP a nivel de red en Node.js, permitiendo simular las APIs externas de Flask PDF y el servicio de correo sin dependencias reales.
Playwright
Framework de pruebas E2E que ejecuta escenarios reales en Chromium, Firefox y dispositivos móviles Safari. Graba trazas, capturas y vídeo ante fallos para depuración.
@nuxt/test-utils
Utilidades oficiales de Nuxt para testing. Levanta el servidor completo de Nuxt (incluyendo Nitro) en un puerto dedicado durante las pruebas de integración.
@vue/test-utils
Biblioteca de montaje de componentes Vue 3. Permite renderizar, interactuar y hacer aserciones sobre componentes de forma aislada con
happy-dom como entorno DOM.Tipos de Pruebas
- Unitarias
- Integración
- E2E
Las pruebas unitarias validan funciones, composables y servicios de forma aislada, sin levantar el servidor ni realizar peticiones reales.Se ubican en El setup global en
tests/unit/ y se ejecutan con los scripts test:unit:server (entorno Node) y test:unit:client (entorno happy-dom) definidos en package.json.tests/setup/global.ts silencia los console.warn irrelevantes y limpia todos los mocks automáticamente entre pruebas con vi.clearAllMocks() y vi.restoreAllMocks().Estructura de Tests
Tests de Integración API
La siguiente tabla resume los endpoints cubiertos por la suite de integración, la cantidad de casos de prueba y lo que cada grupo valida:| Endpoint | Tests | Descripción |
|---|---|---|
POST /api/solicitudes/:id/generar-pdf | 8 | Generación de PDF con mock de Flask PDF. Valida autenticación, existencia de la solicitud y respuesta del servicio externo mockeado. |
POST /api/solicitudes/guardar-solicitud | 15 | Creación de solicitudes con validación Zod. Cubre casos felices, campos faltantes, tipos incorrectos y conflictos de negocio. |
POST /api/auth/register | 14 | Registro de usuarios con mock del servicio de email. Prueba validaciones de contraseña, unicidad de usuario y envío de correo de bienvenida. |
GET /api/admin/convenios/:id | 6 | Consulta de convenios con autenticación de administrador. Valida autorización por rol, convenio inexistente y formato de respuesta. |
GET /api/user/perfil | 9 | Perfil del usuario autenticado. Valida autenticación por cookie de sesión y por header Authorization, estructura de la respuesta y campos personales. |
Configuración de Vitest
El archivovitest.config.ts utiliza defineVitestConfig de @nuxt/test-utils para heredar la configuración de Vite/Nuxt. No define proyectos Vitest separados; los scripts de package.json pasan el flag --project directamente para segmentar la ejecución:
| Script | Flag --project | Descripción |
|---|---|---|
pnpm test:unit:server | server-unit | Pruebas unitarias del código del servidor Nitro (Node.js) |
pnpm test:unit:client | client-unit | Pruebas unitarias de componentes Vue con happy-dom |
pnpm test:integration | integration | Pruebas de integración HTTP contra el servidor levantado en puerto 4000 |
./coverage/ en formatos text, json, html y lcov.
Mock Service Worker (MSW)
MSW intercepta las peticiones HTTP salientes a las APIs externas directamente en la capa de red de Node.js, sin necesidad de modificar el código de producción. El servidor MSW se configura entests/setup/msw.ts:
setupMSW() y registra sus propios handlers adicionales con mswServer.use(...) para simular las respuestas específicas que necesita. Las solicitudes no manejadas emiten una advertencia (onUnhandledRequest: "warn") para detectar llamadas inesperadas a servicios reales.
Los handlers se reinician después de cada prueba con mswServer.resetHandlers(), garantizando que los handlers de un test no contaminen los siguientes.
Ejecutar Tests
Las pruebas de integración requieren que el servidor Nuxt pueda levantarse en el puerto 4000.
@nuxt/test-utils lo inicia automáticamente antes de ejecutar los tests, pero el puerto debe estar libre. Si tienes otra instancia del servidor en ese puerto, deténla antes de correr pnpm test:integration.