Contratos de pruebas y CI
Usa los niveles de prueba, infraestructura real, Playwright, cobertura incremental y gates de build sin debilitar garantías.
Verificado con el commit
b16b416.
La suite se organiza por lo que cada nivel puede simular. Un test con base simulada no prueba una restricción única; una ruta que simula su guard tampoco prueba que autentique antes de leer datos.
| Nivel | Demuestra | Puede simular |
|---|---|---|
| Unit | reglas puras y arquitectura | nada |
| API | HTTP, envelope y orden de auth | servicios/modelos, no guards |
| Service | orquestación, reintentos, coste, compensación | modelos y SDK externos |
| Component | comportamiento visible | fetch |
| Database | restricciones, locks, timestamps reales | nada |
| E2E | navegador autenticado e infraestructura local | nada |
Cada ruta necesita un test de auth que pruebe que la función de datos no fue llamada antes del 401/403. Cada mutación de dinero o créditos necesita un test de replay con un único efecto.
pnpm test:fast
pnpm test:run
pnpm test:cov
pnpm test:db
pnpm exec playwright install chromium
pnpm test:e2etest:fast es la comprobación aislada previa al commit; test:run ejecuta los proyectos Vitest configurados. test:cov aplica los umbrales de cobertura a servicios, modelos, rutas API, código de servidor compartido y datos de Admin.
Sin TEST_DATABASE_URL ni TEST_REDIS_URL, Vitest excluye el proyecto de infraestructura antes de recoger tests. PostgreSQL y Redis se activan por separado; una ejecución solo Redis no inicializa Better Auth ni PostgreSQL. CI exige ambas URL y falla si falta infraestructura. La base PostgreSQL de prueba debe contener test en su nombre porque el harness trunca las tablas. No configures URL de pruebas en producción.
Playwright prueba login, créditos tenant, subida/borrado en Garage y la tarea de imagen de cinco créditos hasta el worker y la descarga firmada.
Un destino E2E externo requiere E2E_BASE_URL, E2E_USER_EMAIL y E2E_USER_PASSWORD; las pruebas que escriben solo se ejecutan con E2E_ALLOW_MUTATIONS=1 en un entorno desechable. No apuntes esta suite a producción.
CI ejecuta lint, migraciones PostgreSQL 16, Redis, cobertura, todos los builds y el navegador. No reduzcas umbrales ni sustituyas infraestructura real por mocks para obtener verde.