Skip to content

Commit 78bab70

Browse files
committed
test: anclar primera aserción visible de specs UI con timeout 15s
El flake de carga inicial documentado en POST-PILOT (control-tower-operational- intelligence y executive-decision-brief) ya quedó mitigado en 85cbc39 con el mismo patrón de ancla. Bajo carga del suite completo el modo de fallo reapareció en dos specs hermanos: la primera aserción tras page.goto agotaba el timeout default de 5s mientras el chunk lazy de la ruta terminaba de cargar (la API específica de la página ni siquiera llegaba a dispararse). Evidencia del trace: tests/control-tower-ui (observabilidad) y tests/finance-ui (liquidaciones) fallaron en su primera aserción con 'element(s) not found' a los 5000ms, con el chunk de la ruta aún en vuelo; el render llegó ~6-7s bajo carga. Aplico la ancla de 15s establecida en 85cbc39 a esas dos specs y retiro el bullet de POST-PILOT: verificado 20/20 standalone por spec (ambos proyectos) y 3 corridas del suite completo sin reintentos en verde.
1 parent 99c9a07 commit 78bab70

3 files changed

Lines changed: 2 additions & 3 deletions

File tree

‎docs/POST-PILOT.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ A partir de este cierre, **toda mejora cosmética o idea nueva pasa a POST-PILOT
2727

2828
## Conocido y aceptado
2929

30-
- **Flakiness de carga inicial** en `control-tower-operational-intelligence` y `executive-decision-brief`: pasan estable en retry y aislados; no es defecto UX. Monitorear si aparece en CI.
3130
- **Warnings de lint preexistentes** (unused vars, `any`): no bloquean; candidatos a higiene en el próximo sprint técnico.
3231
- **Deploy Vercel protegido por SSO**: verificable vía estado del deployment; además `GET /api/public-health` (sin datos sensibles) se monitorea en prod con un cron horario (minuto 17, America/Santiago) que resuelve la URL del deployment más reciente vía GitHub Deployments y consulta el endpoint con el header `x-vercel-protection-bypass` (Protection Bypass for Automation), alertando si cae (HTTP ≠ 200 o `ok` ≠ true). Mientras un deployment está construyéndose reporta `deploying` sin alarma. El equipo también tiene una vista interna de salud dentro del sitio en `/admin/salud` (solo admin, protegida por el SSO del deployment): muestra el build desplegado y el estado vivo del endpoint público medido con la sesión propia, como complemento del monitor externo programado.
3332

‎tests/control-tower-ui.spec.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ test('audit filters and register form one continuous control surface',async({pag
6868

6969
test('observability reads as a single expanded control plane',async({page},testInfo)=>{
7070
await mockControlTower(page);await page.goto('/observabilidad')
71-
await expect(page.getByRole('heading',{name:'Observabilidad y alertas',exact:true})).toBeVisible()
71+
await expect(page.getByRole('heading',{name:'Observabilidad y alertas',exact:true})).toBeVisible({timeout:15000})
7272
const health=page.locator('.operational-health.expanded'),hero=health.locator('.operational-health-hero'),checks=health.locator('.operational-check');await expect(health).toBeVisible();await expect(checks).toHaveCount(3);await noShadow(hero);await noShadow(checks.first())
7373
await stable(page);await page.screenshot({path:testInfo.outputPath('observability-control-tower.png'),fullPage:true})
7474
})

‎tests/finance-ui.spec.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ test('credits summary is one continuous financial rail',async({page},testInfo)=>
5757

5858
test('settlement summary and calculation avoid nested metric cards',async({page},testInfo)=>{
5959
await mockFinanceApp(page);await page.goto('/liquidaciones')
60-
await expect(page.getByRole('heading',{name:'Liquidaciones',exact:true})).toBeVisible()
60+
await expect(page.getByRole('heading',{name:'Liquidaciones',exact:true})).toBeVisible({timeout:15000})
6161
const summary=page.locator('.settlement-summary>article');await expect(summary).toHaveCount(4);await sameRowOnDesktop(summary,testInfo.project.name)
6262
const calculation=page.locator('.settlement-calculation>div');await expect(calculation).toHaveCount(5)
6363
expect(await calculation.first().evaluate(el=>getComputedStyle(el).boxShadow)).toBe('none')

0 commit comments

Comments
 (0)