Saltar a contenido

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-coverage en 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).