Apariencia
0024. Gates de cierre: qué corre automático y qué queda excluido a propósito
Estado
Aceptada
Contexto
No todos los tests son igual de baratos ni igual de deterministas; el gate de cierre de una tarea debe ser rápido y confiable.
Decisión
Backend: lint && test && test:e2e (e2e requieren Docker arriba y mockean servicios externos como MailService). Admin: lint && build && test:run (Vitest + Testing Library + MSW, enfocados en gating RBAC); E2E Playwright queda fuera del gate por pesado, se corre manual. Mobile: flutter analyze && flutter test, con la convención de 2 tests por feature — un repository test (Drift in-memory) y un gating test (FAB/acciones según permiso, con mocktail, sin codegen). Una tarea no se cierra si sus tests no pasan.
Consecuencias
Fallos transitorios de e2e en la BD de dev compartida (carrera de conexiones pg) se resuelven re-corriendo; se confirma estabilidad con 2 corridas verdes seguidas antes de cerrar. Una BD de test separada fue descartada por ahora (los tests usan email único + limpieza en afterAll).