Plan de testing — GekkoCheckin
Objetivo: cubrir flujos críticos y aumentar cobertura de forma priorizada hasta acercarse al 100%. Ver @CURSOR_AUDIT_PROMPT.md (3-4) para el ROL de arquitectura y calidad.
Oleada 1 — Crítico (hecho en esta fase)
Backend (Rust)
- time_control_handler:
haversine_m,check_clock_location(unit) - activity_log: formato CSV, escape, append en temp dir (unit)
- auth_handler: validación de registro/login (unit: email/password vacíos, longitud)
- error.rs:
AppError→ status y mensaje (unit)
Frontend (Angular/Jasmine)
- AuthService: login, register, me, logout, token, currentUser (unit con HttpClientTestingModule)
- AuthGuard: redirige sin token, deja pasar con token (unit)
- ApiService: métodos principales con mock HTTP (unit)
Oleada 2 — Handlers y repos
Backend
- auth_handler: integración con pool de test (register/login con BD test) o tests de integración
- time_control_repo: insert_clock_in, get_open_for_clock_out con BD test
- place_repo: check_place_access, get_owner_user_id
- session_repo: create, get_objid_by_id
Frontend
- WebSocketService: subscribe/unsubscribe, mensajes
- IdentityService, StaffSessionService
- Páginas: Dashboard, TimeControl, Reports (spec con mocks, “should create” y al menos un flujo)
Oleada 3 — Cobertura amplia
Backend
- Resto de handlers: staff, places, shift_assignment, time_change, etc.
- Repos restantes
- activity_log: más casos (escape de
;y\n)
Frontend
- Resto de servicios y guards
- Componentes reutilizables (pin-modal, edit-shift-modal, etc.): documentados en docs/rules/frontend/components.md; pendiente specs (should create / integración).
- Cobertura de líneas con
ng test --code-coverage
Oleada 4 — E2E y 100%
- Tests E2E (Playwright o Cypress): login, clock-in, clock-out, informes (ver lista en CURSOR_AUDIT_PROMPT Fase 3A)
- Revisar gaps de cobertura y rellenar hasta objetivo (ej. 90%+ en crítico, 80%+ global)
- CI:
cargo test+ng test --no-watch --code-coverageen cada PR
Comandos
| Tipo | Comando |
|---|---|
| Backend | cd backend && cargo test |
| Frontend | cd frontend && npm run test (CI: ng test --no-watch --browsers=ChromeHeadless) |
| E2E | Ver desarrollo/testing.md |
Convención data-testid
En frontend usar data-testid="gk-<componente>-<elemento>" en botones/inputs críticos para E2E (ver docs/rules/frontend/testing.md).