docs: cierre formal de Sprint 1.5
- OBSERVATIONS.md reseteado para Sprint 2 - STRATEGIC_DIRECTION.md con reflexiones del sprint - TECH_DEBT.md curado: items resueltos archivados - methodology/CASE_STUDIES/inq-roi-sprint-1-5.md generado Sprint 1.5 cerrado: - 11 etapas + 1 fix pre-Etapa 11 - 526 unit tests + 38 E2E al cierre - Producto con identidad InQ aplicada en web + 3 PDFs - Metodología documentada con casos reales (2 de mala clasificación de iniciativa, originaron AP.8 + refinamiento C.6) - Material para transmisión al equipo de 5 técnicos
This commit is contained in:
196
docs/COVERAGE_STATE.md
Normal file
196
docs/COVERAGE_STATE.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# Estado de cobertura — fin de Sprint 1.5
|
||||
|
||||
> Generado: Etapa 10, 18 mayo 2026.
|
||||
> Base: 526 tests unitarios (33 archivos), suite E2E Playwright.
|
||||
> Propósito: baseline de partida para Sprint 2.
|
||||
|
||||
---
|
||||
|
||||
## Resultado de la suite al cierre del sprint
|
||||
|
||||
### Tests unitarios (Vitest)
|
||||
|
||||
| Métrica | Valor |
|
||||
|---|---|
|
||||
| Total tests | 526 |
|
||||
| Verdes | 526 |
|
||||
| Rojos | 0 |
|
||||
| Skip | 0 |
|
||||
| Archivos de test | 33 |
|
||||
| Duración | ~7 segundos |
|
||||
|
||||
### Tests E2E (Playwright)
|
||||
|
||||
| Métrica | Valor |
|
||||
|---|---|
|
||||
| Total tests | 38 |
|
||||
| Verdes | 34 |
|
||||
| Rojos | 4 (ver Regresiones documentadas) |
|
||||
| Skip | 0 |
|
||||
| Duración | ~75 segundos |
|
||||
|
||||
### Build / Typecheck / Lint
|
||||
|
||||
| Check | Estado | Nota |
|
||||
|---|---|---|
|
||||
| `npm run build` | ✅ Limpio | 2865 módulos, ~1 segundo |
|
||||
| `npm run typecheck` | ✅ Sin errores | TypeScript strict |
|
||||
| `npm run lint` | ⚠️ 3 errores, 92 warnings | Errores = `no-irregular-whitespace` en tests preexistentes; warnings = `@typescript-eslint/no-explicit-any` esperados en interfaces jsPDF |
|
||||
|
||||
---
|
||||
|
||||
## Regresiones documentadas (sin acción correctiva)
|
||||
|
||||
### RE-01 — `etapa-4-pdfs.spec.ts` (3 tests)
|
||||
|
||||
**Tipo:** test obsoleto, no regresión de producción.
|
||||
|
||||
**Síntoma:** los tests esperan 3 páginas en Actual/Automatizado y 4 en ROI.
|
||||
El producto ahora genera 4 y 5 páginas respectivamente (cambios de Etapas 5-8).
|
||||
|
||||
**Causa:** el archivo fue escrito para el baseline de Etapa 4 y no se actualizó
|
||||
cuando Etapas 5, 7 y 8 cambiaron la estructura de páginas.
|
||||
|
||||
**Impacto:** ninguno en producción. Los PDFs son correctos.
|
||||
|
||||
**Acción Sprint 2:** actualizar las aserciones de página en `etapa-4-pdfs.spec.ts`
|
||||
o archivarlo en `tests/e2e/archive/` como registro histórico.
|
||||
|
||||
### RE-02 — `prod-smoke.spec.ts` (1 test)
|
||||
|
||||
**Tipo:** test obsoleto, no regresión de producción.
|
||||
|
||||
**Síntoma:** el test verifica `page.title` con `/Process Cost Platform/`
|
||||
pero el título actual es `"InQ ROI — Cuantificá tus procesos"`.
|
||||
|
||||
**Causa:** la migración de marca se hizo en Etapa 2 del Sprint 1.5. El smoke test
|
||||
no se actualizó al momento del cambio.
|
||||
|
||||
**Impacto:** ninguno en producción.
|
||||
|
||||
**Acción Sprint 2:** actualizar el selector del smoke test a `/InQ ROI/`.
|
||||
|
||||
---
|
||||
|
||||
## Áreas con cobertura sólida (unitarios + E2E)
|
||||
|
||||
### Motor de simulación BPMN
|
||||
|
||||
- `tests/domain/` — simulación determinística, gateways XOR/AND, probabilidades
|
||||
- `tests/integration/bpmn-parser.test.ts` — parsing de procesos reales
|
||||
- `tests/integration/bpmn-collaboration.test.ts` — colaboración
|
||||
- **Evaluación:** muy sólida. El motor es el corazón del producto y está bien cubierto.
|
||||
|
||||
### Cálculo de ROI
|
||||
|
||||
- `tests/domain/roi.test.ts` — casos edge (inversión cero, ahorro negativo, payback infinito)
|
||||
- `tests/lib/format-payback.test.ts` — 12 casos del formateador
|
||||
- **Evaluación:** sólida. Cálculos puros con edge cases cubiertos.
|
||||
|
||||
### Exportación PDF — 3 generadores
|
||||
|
||||
- `tests/lib/export/pdf-orientation.test.ts` — orientaciones portrait/landscape
|
||||
- `tests/lib/export/pdf-roi-page1.test.ts` — página 1 del ROI (gradiente, Top3, grid)
|
||||
- `tests/lib/export/pdf-roi-pages2-5.test.ts` — tablas, análisis, metodología, gráfico SVG
|
||||
- `tests/lib/export/pdf-scenario-page1.test.ts` — página 1 Actual/Automatizado
|
||||
- `tests/lib/export/pdf-sections-shared.test.ts` — header/footer compartidos
|
||||
- E2E: Etapas 4-8 validan PDFs reales con pdfjs-dist
|
||||
- **Evaluación:** la más completa del sprint. Cobertura unitaria + E2E de los 3 PDFs.
|
||||
|
||||
### Helpers de formato
|
||||
|
||||
- `tests/lib/format.test.ts` — currency, minutes, timestamp
|
||||
- `tests/lib/format-payback.test.ts` — payback en todos los rangos
|
||||
- `tests/lib/colors.test.ts` — tokens de color del heatmap
|
||||
- **Evaluación:** sólida. Funciones puras con muchos casos.
|
||||
|
||||
### Design tokens
|
||||
|
||||
- `tests/design-system/tokens.test.ts` — paleta InQ, colores CONCILIA excluidos
|
||||
- **Evaluación:** básica pero suficiente para validar el sistema de identidad.
|
||||
|
||||
### Badge de automatización en BpmnCanvas
|
||||
|
||||
- `tests/features/workspace/BpmnCanvas.test.tsx` — lifecycle overlay, posición, HTML
|
||||
- `tests/features/workspace/BpmnCanvas-badge.test.ts` — propiedades CSS del badge
|
||||
- E2E: `etapa-9-badge.spec.ts` — aparece/desaparece/reaparece, screenshots
|
||||
- **Evaluación:** sólida tras Etapa 9.
|
||||
|
||||
### Invalidación del store de simulación
|
||||
|
||||
- `tests/store/simulation-store-invalidation.test.ts` — 7 casos de invalidación
|
||||
- **Evaluación:** sólida para los escenarios cubiertos.
|
||||
|
||||
---
|
||||
|
||||
## Áreas con cobertura parcial
|
||||
|
||||
### Componentes React del reporte
|
||||
|
||||
- `tests/features/report/` existe con tests de `CumulativeSavingsChart`, `ComparisonTable`, `RoiKpiBar`
|
||||
- **Gap:** los tests son snapshots. No validan comportamiento interactivo ni edge cases de renderizado.
|
||||
- **Riesgo:** bajo a corto plazo, medio cuando se agreguen features.
|
||||
|
||||
### Persistencia (Dexie/IndexedDB)
|
||||
|
||||
- Cobertura: indirecta vía store tests
|
||||
- **Gap:** no hay tests directos de la capa de persistencia (migraciones, lectura/escritura de procesos complejos)
|
||||
- **Riesgo:** medio. Las migraciones son el punto más frágil — un error ahí destruye datos del usuario.
|
||||
|
||||
### ActivityPanel
|
||||
|
||||
- **Gap:** sin tests unitarios ni E2E específicos del panel de actividades
|
||||
- El comportamiento se verifica indirectamente en tests E2E de generación de PDF
|
||||
- **Riesgo:** medio. El panel es la interfaz principal de configuración.
|
||||
|
||||
---
|
||||
|
||||
## Áreas sin cobertura
|
||||
|
||||
### Flujo completo de importación BPMN
|
||||
|
||||
- No hay test E2E que valide el flujo completo: archivo BPMN inválido → error legible
|
||||
- No hay test para BPMNs con pools/lanes (collaboration.test.ts cubre el parser, no el UX)
|
||||
- **Riesgo:** medio. Los usuarios importan archivos de herramientas externas con formatos variables.
|
||||
|
||||
### Exportación CSV
|
||||
|
||||
- `tests/e2e/` tiene `export-pdf.spec.ts` y `export-roi.spec.ts` pero los CSV no se validan con el mismo rigor
|
||||
- **Riesgo:** bajo por ahora.
|
||||
|
||||
### Regresión visual de PDFs (golden files)
|
||||
|
||||
- No hay comparación pixel-a-pixel de PDFs entre versiones
|
||||
- **Riesgo:** medio-alto. Un cambio visual inadvertido en `pdf-sections.ts` puede pasar los tests actuales sin ser detectado.
|
||||
|
||||
### Edge cases del simulador con procesos grandes
|
||||
|
||||
- Tests del motor cubren procesos de 3-10 actividades
|
||||
- **Gap:** procesos de 20+ actividades, gateways OR inclusivos, subprocesos anidados
|
||||
- **Riesgo:** bajo a corto plazo.
|
||||
|
||||
### Gateway OR inclusivo
|
||||
|
||||
- El motor simula OR como XOR (documentado). No hay test que valide que la advertencia aparece.
|
||||
- **Riesgo:** bajo hasta que se implemente OR real.
|
||||
|
||||
---
|
||||
|
||||
## Gaps priorizados para Sprint 2
|
||||
|
||||
### Alta prioridad
|
||||
|
||||
1. **Regresión visual PDF (golden files):** implementar comparación de PDF contra baseline usando `pdfjs-dist`. Guarda página como PNG y compara con imagen de referencia. Detecta cambios involuntarios.
|
||||
2. **Tests de migración Dexie:** validar que cada versión del schema se migra correctamente sin pérdida de datos.
|
||||
3. **Smoke test E2E con BPMN inválido:** verificar mensaje de error apropiado cuando el archivo no es BPMN válido.
|
||||
|
||||
### Media prioridad
|
||||
|
||||
4. **Tests del ActivityPanel:** verificar que el formulario de configuración de actividad persiste correctamente a IndexedDB.
|
||||
5. **Actualizar tests obsoletos:** `etapa-4-pdfs.spec.ts` y `prod-smoke.spec.ts` (ver RE-01, RE-02).
|
||||
6. **Tests de flujo completo negativo:** ¿qué pasa si se simula sin configurar ningún costo?
|
||||
|
||||
### Baja prioridad
|
||||
|
||||
7. **Tests de stress del simulador:** proceso con 30+ actividades y gateways anidados.
|
||||
8. **Tests de exportación CSV:** validar contenido y estructura de los archivos CSV generados.
|
||||
Reference in New Issue
Block a user