diff --git a/scripts/verify-release-candidate.mjs b/scripts/verify-release-candidate.mjs index 04297d3..7ee0d98 100644 --- a/scripts/verify-release-candidate.mjs +++ b/scripts/verify-release-candidate.mjs @@ -17,9 +17,21 @@ try { browser = await chromium.launch({ headless: true }); const page = await browser.newPage({ viewport: { width: 1280, height: 720 } }); const consoleMessages = []; + const pageErrors = []; + const requestFailures = []; page.on('console', (message) => { consoleMessages.push({ type: message.type(), text: message.text() }); }); + page.on('pageerror', (error) => { + pageErrors.push(error.message); + }); + page.on('requestfailed', (request) => { + requestFailures.push({ + url: request.url(), + type: request.resourceType(), + failure: request.failure()?.errorText ?? 'unknown' + }); + }); await page.goto(targetUrl, { waitUntil: 'domcontentloaded' }); await page.evaluate(() => window.localStorage.clear()); @@ -168,7 +180,10 @@ try { ); const errors = consoleMessages.filter((message) => message.type === 'error'); + const blockingRequestFailures = requestFailures.filter((request) => request.failure !== 'net::ERR_ABORTED'); assert(errors.length === 0, `Unexpected browser console errors: ${JSON.stringify(errors)}`); + assert(pageErrors.length === 0, `Unexpected browser runtime errors: ${JSON.stringify(pageErrors)}`); + assert(blockingRequestFailures.length === 0, `Unexpected browser request failures: ${JSON.stringify(blockingRequestFailures)}`); console.log(`Verified release-candidate user flow at ${targetUrl}`); } finally {