Mike (@mikerb95)CodeByMike

Ejecución de pruebas

La evidencia de la última corrida completa: cuántas pruebas se ejecutaron, cuánto tardó cada una y en qué archivo vive. Donde Testingdescribe la estrategia, esta página muestra el resultado medido de aplicarla.

Capturada el 2 de septiembre de 2026 desde el reporte JUnit de Vitest. Ninguna cifra de esta página se escribe a mano: se regeneran juntas al correr el script, así que no pueden desalinearse del código sin que el diff lo muestre.

Resumen de la corrida

1.717
Pruebas ejecutadas
97 archivos
0
Fallos
suite completa en verde
63.0 s
Duración total
suite completa de Vitest
34.4 ms
Promedio por prueba
media aritmética

Cómo se reproduce

npx vitest run --reporter=junit --outputFile=informes/tests-junit.xml && node scripts/report-tests.mjs

Por nivel de prueba

Unitarias / lógica pura
1.584pruebas en 87 archivos · 25.2 s

Funciones de src/lib sin base de datos ni red.

Integración con libSQL
133pruebas en 10 archivos · 37.8 s

Base de datos real y desechable en un archivo temporal.

Una prueba de integración cuesta 18× más tiempo que una unitaria. Ese número es la razón de la forma de la pirámide: no es una preferencia estética, es lo que hace que la suite completa siga cabiendo en un minuto de CI.

Distribución de tiempos

< 1 ms605
1 - 10 ms861
10 - 100 ms137
0.1 - 1 s105
> 1 s9

Escala logarítmica, porque en lineal todo se apilaría en una sola barra:85% de las pruebas termina en menos de 10 ms. Solo 9 pasan del segundo, y son las que abren base de datos o ejercitan el rate limiting de verdad.

Las 12 más lentas

tests/portal-isolation.test.ts3.52 s
tests/latency.test.ts2.40 s
tests/security-honeypot.test.ts1.81 s
tests/security-honeypot.test.ts1.65 s
tests/portal-isolation.test.ts1.46 s
tests/portal-passwords.test.ts1.37 s
tests/security-honeypot.test.ts1.19 s
tests/portal-isolation.test.ts1.17 s
tests/portal-passwords.test.ts1.01 s
tests/security-honeypot.test.ts960.2 ms
tests/portal-isolation.test.ts815.7 ms
tests/portal-isolation.test.ts774.8 ms

Los 97 archivos

ArchivoPruebasFallosTiempo
portal-isolation.test.tsintegración26020.17 s
cuentas-cobro-db.test.ts2408.98 s
security-honeypot.test.ts705.62 s
portal-live.test.tsintegración1004.03 s
portal-activity.test.tsintegración1603.33 s
portal-passwords.test.ts1403.23 s
latency.test.tsintegración902.82 s
cobros-db.test.tsintegración2102.80 s
contracts.test.tsintegración502.15 s
fingerprint.test.tsintegración1201.06 s
payments.test.tsintegración230760.9 ms
portal-health.test.tsintegración80459.0 ms
present-pin.test.ts150431.4 ms
cuenta-cobro-pdf.test.ts100406.5 ms
diagnostics.test.ts370353.6 ms
sustentacion-bus.test.ts150269.8 ms
fallback.test.ts190249.3 ms
sustentacion-seguir.test.ts80237.7 ms
present-sync.test.ts160236.1 ms
sustentacion-escena.test.ts270227.4 ms
presentacion-endpoint.test.ts220208.6 ms
security-blocklist-db.test.tsintegración30198.7 ms
bpmn.test.ts830179.6 ms
sustentacion-control.test.ts270178.5 ms
cobros.test.ts220173.4 ms
monitors.test.ts80163.6 ms
indexnow.test.ts80161.0 ms
uml-communication.test.ts250153.4 ms
present-deck-parse.test.ts240153.2 ms
red.test.ts120146.9 ms
cuentas-cobro.test.ts850135.2 ms
presentacion-mapa.test.ts210121.0 ms
device-info.test.ts100120.7 ms
sustentacion-acceso-endpoint.test.ts70118.0 ms
i18n-routing-guards.test.ts1410112.6 ms
domains.test.ts130109.4 ms
notify.test.ts10098.3 ms
monitor-rollup.test.ts15092.1 ms
money.test.ts13091.8 ms
capacitacion.test.ts35088.7 ms
planteamiento.test.ts15085.8 ms
i18n-dictionary.test.ts4079.5 ms
sustentacion-mando.test.ts17079.4 ms
sustentacion-obedecer.test.ts10071.8 ms
i18n-routing.test.ts56071.2 ms
presentacion-lienzo.test.ts38067.9 ms
skills.test.ts31065.5 ms
security-classify.test.ts49063.7 ms
uml-component.test.ts5056.9 ms
slo.test.ts11056.0 ms
normalization.test.ts15055.5 ms
crons.test.ts42055.0 ms
findings.test.ts19054.9 ms
mis-pagos.test.ts7054.4 ms
demo.test.ts12053.3 ms
portal-respaldo.test.ts19051.6 ms
sena-ep.test.ts14050.1 ms
uml-activity.test.ts19049.2 ms
vyv.test.ts8047.9 ms
portal-paths.test.ts11046.4 ms
presentacion-desplazamiento.test.ts24046.3 ms
present-assets.test.ts17043.9 ms
gobernanza.test.ts9043.3 ms
uml-deployment.test.ts5043.3 ms
portal-invoices.test.ts17042.1 ms
presentacion-guion.test.ts11040.5 ms
sustentacion-acceso.test.ts18040.4 ms
i18n-bilingual.test.ts10037.3 ms
security-anomaly.test.ts13037.3 ms
pnl.test.ts9036.2 ms
presentacion-cronometro.test.ts20035.4 ms
vault.test.ts10035.4 ms
presentacion-espejo.test.ts19035.0 ms
present-state.test.ts15034.8 ms
fecha-co.test.ts13033.4 ms
portal-demo.test.ts11033.2 ms
vitals.test.ts9032.7 ms
security-redact.test.ts9032.6 ms
phone.test.ts14031.8 ms
security-autoblock.test.ts14031.0 ms
clients-validate.test.ts14029.4 ms
crypto.test.ts8028.6 ms
security-csp-report.test.ts6027.8 ms
presentacion-estado.test.ts14027.6 ms
festivos-co.test.ts8027.0 ms
sustentacion-pase.test.ts9026.2 ms
chaos.test.ts12024.8 ms
docs-paginas.test.ts7024.6 ms
pipeline-live.test.ts11024.3 ms
present-credenciales.test.ts6024.1 ms
i18n-localize.test.ts11022.7 ms
mutation.test.ts7019.9 ms
db-target.test.ts5018.1 ms
security-ratelimit.test.ts8015.8 ms
security-blocklist.test.ts7013.8 ms
security-rollup.test.ts6013.3 ms
security-framable.test.ts3012.0 ms

Las suites marcadas integración abren una base libSQL real en un archivo temporal de tmpdir(), nunca en memoria: una transacción abre otra conexión y una base en memoria no comparte tablas entre conexiones. El resto es lógica pura. La cobertura se mide aparte, con npm run test:coverage.