- 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
197 lines
7.3 KiB
Markdown
197 lines
7.3 KiB
Markdown
# 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.
|