Usar Claude Code hooks para ejecutar pruebas automáticamente ayuda con un problema común: aunque hayas escrito “ejecuta pruebas después de cambiar código” en CLAUDE.md, Claude Code puede olvidarlo, ejecutar una suite demasiado grande o resumir mal un fallo.
Hooks convierte “acuérdate de hacerlo” en “ejecuta esto cuando ocurra el evento”. Para pruebas, los eventos más útiles son PostToolUse y Stop.
Resumen Rápido
Usa PostToolUse cuando quieras ejecutar una comprobación ligera justo después de que Claude edite o escriba un archivo. Limita el matcher a herramientas como Edit|Write.
Usa Stop cuando quieras una verificación final antes de que Claude termine el turno. No pongas toda la suite de pruebas ahí por defecto.
Un flujo estable suele ser:
PostToolUseejecuta comprobaciones ligeras: formato, typecheck o tests enfocados.Stopimprime una lista de verificación final o ejecuta un script estrecho.- Los fallos de test devuelven un resumen, no el log completo.
- Los hooks del proyecto viven en
.claude/settings.json; la lógica real vive en.claude/hooks/. - Primero pruébalo en un proyecto pequeño.
Decide Qué Debe Ejecutarse
No empieces con:
|
|
Cuanto más cerca esté el comando de cada edición, más corto y determinista debería ser.
| Escenario | Comprobación sugerida |
|---|---|
| Cambió un componente frontend | Test relacionado, typecheck, lint |
| Cambió una función backend | Test unitario del paquete relacionado |
| Cambió una configuración | Validación de config o build dry run |
| Cambió Markdown | Revisión de enlaces o front matter |
| Termina el turno | Recordatorio de verificación mínima |
| Antes de commit o release | Suite completa y build, normalmente manual o CI |
Hooks no debería reemplazar CI. Es una red local para detectar errores obvios pronto.
Estructura Recomendada
No metas lógica compleja en una sola línea dentro de settings.json.
|
|
En Windows puedes usar PowerShell:
|
|
Usar PostToolUse Después de Editar
PostToolUse se dispara después de una llamada de herramienta. Para pruebas automáticas, normalmente solo interesan las herramientas que escriben archivos.
.claude/settings.json:
|
|
Esto solo registra el hook. La lógica de selección de pruebas va en el script.
Ejemplo en Bash
.claude/hooks/run-related-tests.sh:
|
|
Hazlo ejecutable:
|
|
Ejemplo en PowerShell
.claude/hooks/run-related-tests.ps1:
|
|
Configuración:
|
|
Prueba el script manualmente antes de conectarlo.
Mantén Corto el Output de Fallos
El output del hook entra en el flujo de Claude Code. Si un test falla, Claude puede usarlo para continuar. Evita logs enormes.
|
|
Los hooks deberían ejecutar comandos deterministas. Evita prompts interactivos, puertos aleatorios, servicios frágiles o confirmaciones manuales.
Usar Stop para la Revisión Final
PostToolUse sirve para comprobaciones inmediatas. Stop sirve para confirmar antes de terminar el turno.
|
|
.claude/hooks/final-check.sh:
|
|
Empieza con recordatorios y automatiza comandos caros solo cuando el flujo ya sea estable.
Cuándo No Automatizar Pruebas
Ten cuidado si:
- los tests tardan mucho;
- necesitan bases de datos, navegadores, colas o APIs externas;
- modifican datos locales;
- generan logs enormes;
- no existe un comando mínimo estable;
- Claude Code suele cambiar muchos archivos a la vez.
En esos casos, el hook puede sugerir el comando en lugar de ejecutarlo.
Estrategia por Riesgo
| Riesgo | Acción automática |
|---|---|
| Bajo | formato, lint de archivo, Markdown |
| Medio | typecheck, tests unitarios relacionados, validación de config |
| Alto | suite completa, E2E, build, migraciones |
El riesgo bajo puede ir en PostToolUse; el alto debería quedarse en CI o confirmación humana.
CLAUDE.md y Hooks
CLAUDE.md sirve para principios:
|
|
Hooks sirve para ejecución:
|
|
Solución de Problemas
Si el hook no se ejecuta:
- Usa
/hooksen Claude Code. - Valida
settings.json. - Revisa nombres como
PostToolUseyStop. - Revisa el matcher, por ejemplo
Edit|Write. - Revisa rutas de scripts.
- En macOS/Linux, revisa permisos de ejecución.
- En Windows, revisa PowerShell y comillas.
- Empieza con
echo hook fired. - No conectes tests complejos al principio.
- Si el output es largo, resúmelo.
Resumen
Ejecutar pruebas automáticamente con Claude Code hooks no consiste en meter npm test en una configuración. Consiste en dividir la verificación en comprobaciones pequeñas, relevantes y repetibles.
Usa PostToolUse para checks ligeros tras editar, Stop para recordatorios o verificaciones finales, y deja la suite completa para CI o confirmación humana.