Reglas de testing — Frontend
data-testid
Formato: gk-<componente>-<elemento>-<variante> (variante opcional).
- Componente: nombre corto en kebab (ej.
pin-modal,dashboard,time-control). - Elemento: rol o nombre (ej.
input,submit-btn,place-card). - Ejemplos:
gk-pin-modal-input,gk-dashboard-place-card,gk-time-control-clock-in-btn,gk-reports-period-day.
Añadir en: - Botones de acción principal (login, clock-in, guardar, aprobar). - Inputs críticos (PIN, filtros). - Listas o cards que se usen en flujos E2E (selección de empleado, de lugar).
❌ Prohibido
✅ CorrectoQué testear primero
- Servicios:
AuthService(login/register/me),ApiService(mock HttpClient),WebSocketService(suscripción/desuscripción). - Guards e interceptors:
AuthGuard,AuthInterceptor(token en cabecera, 401). - Páginas críticas: al menos un test que cargue el componente con mocks (Dashboard, TimeControl, Reports) y compruebe que no rompe.
Specs
- Cada componente o página nuevo debe tener
*.spec.tsque instancie el componente conTestBedy mocks mínimos. Mínimo:should create. - Para servicios: inyectar el servicio, mockear dependencias (HttpClient, etc.) y testear métodos que tengan lógica (no solo delegación trivial).
Convención en CI
- Tests unitarios:
ng test(o equivalente). Ejecutar en pipeline antes de merge. - E2E: si se añaden, usar el mismo prefijo
gk-en data-testid para selectores estables.