Saltar a contenido

Auditoría y testing — GekkoCheckin

Este documento resume lo realizado en el marco de la auditoría del proyecto (CURSOR_AUDIT_PROMPT) y la estrategia de tests, y sirve como índice para encontrar toda la documentación y el código asociado.


1. Contexto de la auditoría

  • Objetivo: Revisar GekkoCheckin (frontend Angular/Ionic, backend Rust/Axum) con criterios de arquitectura hexagonal, calidad de código, testing y preparación para escala.
  • Referencia: El prompt de auditoría está en la raíz del workspace de proyectos: CURSOR_AUDIT_PROMPT.md (líneas 3-4 definen el rol: Staff Engineer / Arquitecto senior).
  • Alcance: Solo GekkoCheckin; unpispas/application queda fuera (refactor aparte).

2. Qué se ha hecho

2.1 Reglas de desarrollo (docs/rules/)

Reglas aplicables a todo el repo (frontend y backend):

Archivo Contenido
rules/README.md Índice de todas las reglas y enlace al diagrama de arquitectura
rules/frontend/styles.md Tokens CSS, variables Ionic, prohibición de colores hardcodeados
rules/frontend/components.md Convenciones de componentes, listado de componentes reutilizables (pin-modal, address-modal, edit-shift-modal, etc.), checklist
rules/frontend/testing.md data-testid gk-*, qué testear primero, specs por componente
rules/backend/hexagonal.md Capas (adapters, domain, infrastructure), imports permitidos
rules/backend/error-handling.md AppError, logging, prohibición de unwrap/panic
rules/backend/activity-log.md Registro de actividad (CSV), eventos auditable
rules/naming-conventions.md Convenciones de nombres (frontend + backend)
rules/pull-requests.md Checklist de PR
rules/definition-of-done.md Mínimos para dar por terminada una tarea

2.2 Arquitectura y diagramas (docs/architecture/)

Archivo Contenido
architecture/backend-hexagonal-dependencies.md Diagrama de dependencias entre capas (HTTP, WS, repos, domain).
desarrollo/arquitectura.md Flujos del sistema, backend, despliegue y usuario (imágenes).

2.3 Estado de la auditoría y pendientes (docs/AUDIT-REMAINING.md)

  • Hecho: Fase 1 (CSS, componentes, hexagonal, naming, testing), Fase 4 (reglas en repo), tests iniciados.
  • Pendiente: Fase 2 (resumen ejecutivo, top 10 problemas, quick wins, 4 sprints), Fase 2B (multi-tenancy, billing, DB, infra), Fase 3 (E2E por flujos críticos, más tests unitarios).
  • Incluye dónde está la documentación con diagramas e imágenes.

3. Testing

3.1 Plan de tests (docs/testing/TESTING_PLAN.md)

  • Oleadas 1–4: crítico (hecho), handlers/repos, cobertura amplia, E2E y 100%.
  • Lista de componentes reutilizables documentados y pendiente de specs.
  • Comandos para ejecutar backend, frontend y E2E (local y Docker).

3.2 Backend (Rust)

  • Ubicación: backend/src/ — tests en *_handler.rs, error.rs, activity_log.rs, etc.
  • Ejecución: cd backend && cargo test
  • Cobertura actual: ~20 tests (auth, time_control, activity_log, error, auto_assign, etc.).

3.3 Frontend (Angular/Jasmine)

  • Ubicación: frontend/src/app/ — specs junto a los componentes/servicios (.spec.ts).
  • Ejecución: cd frontend && npm run test (Karma). Para CI: ng test --no-watch --browsers=ChromeHeadless.
  • Cobertura actual: AuthService, AuthGuard, ApiService (y otros que se hayan añadido).

3.4 E2E (Playwright)

  • Ubicación: e2e/ en la raíz del repo (no dentro de frontend).
  • e2e/tests/: specs (home, login, dashboard, staff, shifts, time-control, config).
  • e2e/fixtures/auth.ts: helper de login + PIN + selección de lugar para tests con sesión.
  • Ejecución:
  • Local: cd e2e && npm install && npx playwright install chromium && npm run test (app en BASE_URL, por defecto http://localhost:8100).
  • Docker (solo tests, app ya levantada): cd docker && docker compose -f docker-compose.e2e-only.yml run --rm e2e. Por defecto usa BASE_URL=https://app.gekkocheckin.mywire.org. Para login con credenciales: pasar E2E_LOGIN_EMAIL, E2E_LOGIN_PASSWORD, E2E_PIN.
  • Docker (app + tests): docker compose -f docker-compose.e2e.yml up --build --abort-on-container-exit (requiere backend con Rust 1.88+).
  • Documentación detallada: e2e/README.md (LXC sin UI, reporte en :8109, ejecución desde Windows, etc.).

4. Resumen rápido

Qué Dónde
Reglas y convenciones docs/rules/
Diagramas (flujos, backend, despliegue) docs/desarrollo/arquitectura.md
Pendientes de la auditoría docs/AUDIT-REMAINING.md
Plan de testing docs/testing/TESTING_PLAN.md
Tests E2E y Docker e2e/README.md
Componentes reutilizables docs/rules/frontend/components.md

5. Subir cambios al repo

Todo lo anterior (reglas, arquitectura, auditoría, plan de tests, E2E, fixtures, Docker e2e-only) está en el árbol del repo. Para subirlo:

cd /ruta/a/gekkocheckin
git add docs/ e2e/ docker/docker-compose.e2e.yml docker/docker-compose.e2e-only.yml docker/docker-images-build/e2e/
git add backend/ frontend/src/app/guards/auth.guard.spec.ts frontend/src/app/services/*.spec.ts
# Revisar: git status
git commit -m "docs: auditoría, reglas, arquitectura, plan de tests, E2E Playwright y Docker"
git push

No se debe subir docker/e2e-report/ (generado; está en docker/.gitignore).