From 9ac7bc5e8fef125879b949dc5e73bf12c82c5455 Mon Sep 17 00:00:00 2001 From: Yahya Alhinai Date: Sun, 28 Jun 2026 01:46:57 +0000 Subject: [PATCH] test: stabilize frontend live join verifier --- scripts/verify-frontend.mjs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/scripts/verify-frontend.mjs b/scripts/verify-frontend.mjs index 6a85698..e53f6eb 100644 --- a/scripts/verify-frontend.mjs +++ b/scripts/verify-frontend.mjs @@ -6,6 +6,7 @@ import { setTimeout as delay } from 'node:timers/promises'; const frontendUrl = process.env.FRONTEND_URL ?? 'http://127.0.0.1:4173/'; const shouldStartPreview = !process.env.FRONTEND_URL; const doFetch = globalThis.fetch; +const verifyMember = `Verify ${process.pid}`; async function stopChild(child) { if (!child || child.exitCode !== null || child.signalCode !== null) return; @@ -62,7 +63,10 @@ const pageErrors = []; const failedRequests = []; page.on('console', (msg) => { - if (msg.type() === 'error') consoleErrors.push(msg.text()); + if (msg.type() !== 'error') return; + const text = msg.text(); + if (text.includes('net::ERR_NETWORK_CHANGED')) return; + consoleErrors.push(text); }); page.on('pageerror', (err) => pageErrors.push(err.message)); page.on('requestfailed', (req) => { @@ -82,7 +86,8 @@ try { if (!hasPodCards) throw new Error('pod cards did not render'); if (hasOverlay) throw new Error('Vite error overlay is visible'); - await page.getByRole('button', { name: 'Join' }).first().click(); + await page.getByPlaceholder('Your name').first().fill(verifyMember); + await page.getByRole('button', { name: 'Add and join' }).first().click(); await page.getByRole('button', { name: 'Share screen' }).waitFor({ timeout: 15_000 }); const joinedText = await page.locator('body').innerText(); @@ -105,12 +110,19 @@ try { frontendUrl, bodyLength: bodyText.length, joined: true, + member: verifyMember, }, null, 2, ), ); } finally { + const apiBase = process.env.FRONTEND_URL + ? new URL(process.env.FRONTEND_URL).origin + : 'http://localhost:8787'; + await doFetch(`${apiBase}/api/pods/frontend-pod/members/${encodeURIComponent(verifyMember)}`, { + method: 'DELETE', + }).catch(() => {}); await browser.close(); await stopChild(preview); }