Files
inq-roi-simulador-web/docs/COVERAGE_STATE.md
Marcos Benítez 49364f4b18 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
2026-05-19 07:27:40 -03:00

7.3 KiB

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

  1. Tests del ActivityPanel: verificar que el formulario de configuración de actividad persiste correctamente a IndexedDB.
  2. Actualizar tests obsoletos: etapa-4-pdfs.spec.ts y prod-smoke.spec.ts (ver RE-01, RE-02).
  3. Tests de flujo completo negativo: ¿qué pasa si se simula sin configurar ningún costo?

Baja prioridad

  1. Tests de stress del simulador: proceso con 30+ actividades y gateways anidados.
  2. Tests de exportación CSV: validar contenido y estructura de los archivos CSV generados.