Fail release QA on runtime errors
This commit is contained in:
@@ -17,9 +17,21 @@ try {
|
|||||||
browser = await chromium.launch({ headless: true });
|
browser = await chromium.launch({ headless: true });
|
||||||
const page = await browser.newPage({ viewport: { width: 1280, height: 720 } });
|
const page = await browser.newPage({ viewport: { width: 1280, height: 720 } });
|
||||||
const consoleMessages = [];
|
const consoleMessages = [];
|
||||||
|
const pageErrors = [];
|
||||||
|
const requestFailures = [];
|
||||||
page.on('console', (message) => {
|
page.on('console', (message) => {
|
||||||
consoleMessages.push({ type: message.type(), text: message.text() });
|
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.goto(targetUrl, { waitUntil: 'domcontentloaded' });
|
||||||
await page.evaluate(() => window.localStorage.clear());
|
await page.evaluate(() => window.localStorage.clear());
|
||||||
@@ -168,7 +180,10 @@ try {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const errors = consoleMessages.filter((message) => message.type === 'error');
|
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(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}`);
|
console.log(`Verified release-candidate user flow at ${targetUrl}`);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user