Skip to main content
failproofai cuenta con dos suites de pruebas: pruebas unitarias (rápidas, con mocks) y pruebas end-to-end (invocaciones reales de subprocesos).

Ejecutar las pruebas


Pruebas unitarias

Las pruebas unitarias se encuentran en __tests__/ y utilizan Vitest con jsdom.

Escribir una prueba unitaria de política


Pruebas end-to-end

Las pruebas E2E invocan el binario real de failproofai como subproceso, le envían un payload JSON por stdin y verifican la salida en stdout junto con el código de salida. Esto prueba el camino de integración completo que utiliza Claude Code.

Configuración

Las pruebas E2E ejecutan el binario directamente desde el código fuente del repositorio. Antes de la primera ejecución, compila el bundle CJS que utilizan los archivos de hooks personalizados cuando importan desde 'failproofai':
Luego ejecuta las pruebas:
Recompila dist/ cada vez que modifiques la API pública de hooks (src/hooks/custom-hooks-registry.ts, src/hooks/policy-helpers.ts o src/hooks/policy-types.ts).

Estructura de las pruebas E2E

Uso de los helpers E2E

FixtureEnv - entorno aislado por prueba:
createFixtureEnv() registra la limpieza con afterEach de forma automática. runHook - invocar el binario:
Payloads - fábricas de payloads predefinidas:

Escribir una prueba E2E

Formatos de respuesta E2E

Configuración de Vitest

Las pruebas E2E utilizan vitest.config.e2e.mts con:
  • environment: "node" - no se necesitan globales del navegador
  • pool: "forks" - aislamiento real de procesos (las pruebas lanzan subprocesos)
  • testTimeout: 20_000 - 20 segundos por prueba (inicio del binario + evaluación del hook)
El pool forks es importante: los workers basados en hilos comparten globalThis, lo que puede interferir con pruebas que lanzan subprocesos. Los forks basados en procesos evitan este problema.

CI

La ejecución completa de CI (bun run lint && bunx tsc --noEmit && bun run test:run && bun run build) debe pasar antes de hacer merge. La suite E2E se ejecuta como un job de CI independiente en paralelo. Consulta Contributing para ver el checklist completo previo al merge.