From 92063e682f491ff0255f7519d5b84b6d43fd5054 Mon Sep 17 00:00:00 2001 From: AlexeerCT Date: Fri, 22 May 2026 14:32:43 -0500 Subject: [PATCH] fix(e2e): dismissear PrerequisitesModal en test 'crear parte valida' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En /dashboard/goods/parts/edit/new, +page.svelte abre un AlertDialog "Aviso" cuando agentsCount === 0 || clientsCount === 0. En CI con DB limpia (sin agentes ni clientes seedeados) esto es siempre el caso: el overlay del modal intercepta los clicks del form y "Guardar" falla por timeout. El test ahora detecta el modal después de navegar a /new y clickea "Aceptar" para cerrarlo y continuar con el flujo (Cancelar te saca del editor, no sirve). Ver routes/dashboard/goods/parts/edit/[[id]]/+page.svelte:29-38. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/e2e/0-setup-catalogs.spec.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/frontend/e2e/0-setup-catalogs.spec.ts b/frontend/e2e/0-setup-catalogs.spec.ts index c37269b9..01ab5c06 100644 --- a/frontend/e2e/0-setup-catalogs.spec.ts +++ b/frontend/e2e/0-setup-catalogs.spec.ts @@ -134,6 +134,17 @@ test.describe('Setup — Catalogos para pruebas E2E', () => { await page.waitForLoadState('networkidle') await page.waitForTimeout(800) + // PrerequisitesModal: AlertDialog "Aviso" que abre cuando la DB no tiene + // Agentes aduanales o Clientes registrados (caso típico en E2E con DB limpia). + // Bloquea pointer events con un overlay sobre todo el form. Cancelar te saca + // del editor; Aceptar lo cierra y permite continuar. + // Ver routes/dashboard/goods/parts/edit/[[id]]/+page.svelte:29-38. + const prerequisitesDialog = page.getByRole('alertdialog', { name: /Aviso/i }) + if (await prerequisitesDialog.isVisible({ timeout: 2000 }).catch(() => false)) { + await prerequisitesDialog.getByRole('button', { name: /^Aceptar$/ }).click() + await prerequisitesDialog.waitFor({ state: 'hidden', timeout: 5000 }).catch(() => {}) + } + // Llenar campos del formulario de nueva parte // Numero de parte const partInput = page.locator('#part_number, input[placeholder*="parte"], input[placeholder*="número"], input[name="part_number"]').first()