Skip to main content
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.

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

Las pruebas unitarias validan funciones, composables y servicios de forma aislada, sin levantar el servidor ni realizar peticiones reales.Se ubican 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.
El setup global en 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:

Configuración de Vitest

El archivo vitest.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:
Los umbrales de cobertura exigen un mínimo de 80 % en líneas, funciones y sentencias, y 75 % en ramas. El reporte se genera en ./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 en tests/setup/msw.ts:
Cada suite de integración importa 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.