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 enBASE_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 usaBASE_URL=https://app.gekkocheckin.mywire.org. Para login con credenciales: pasarE2E_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).