diff --git a/playwright.config.ts b/playwright.config.ts index 001283a..75e9121 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ testDir: "./tests", fullyParallel: true, forbidOnly: !!process.env.CI, - retries: 0, + retries: 2, reporter: "html", timeout: 20000, /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ diff --git a/src/client/client.ts b/src/client/client.ts index 3ab3964..ee1381b 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -328,7 +328,7 @@ export class ScramjetClient { if ((err.stack as any) instanceof Object) { //@ts-expect-error i'm not going to explain this err.stack = err.stack.stack; - console.error("ERROR FROM SCRMAJET INTERNALS", err); + console.error("ERROR FROM SCRAMJET INTERNALS", err); } else { throw err; } diff --git a/tests/util/inspectConsole.ts b/tests/util/inspectConsole.ts new file mode 100644 index 0000000..54780a9 --- /dev/null +++ b/tests/util/inspectConsole.ts @@ -0,0 +1,17 @@ +import { Page } from "@playwright/test"; + +export function registerInspect(page: Page) { + let hasOxcError = false; + let hasScramjetError = false; + page.on("console", async (msg) => { + if (msg.type() === "error") { + if (msg.text().includes("oxc parse error") && !hasOxcError) { + hasOxcError = true; + console.log("OXC parse error detected! Please review manually.") + } else if (msg.text().includes("ERROR FROM SCRAMJET INTERNALS") && !hasScramjetError) { + hasScramjetError = true; + console.log("Scramjet error detected! Please review manually."); + } + } + }); +} \ No newline at end of file diff --git a/tests/util/setupPage.ts b/tests/util/setupPage.ts index 77d5619..f91acdc 100644 --- a/tests/util/setupPage.ts +++ b/tests/util/setupPage.ts @@ -1,8 +1,11 @@ /* eslint-disable no-async-promise-executor */ import { expect, FrameLocator, Page } from "@playwright/test"; +import { registerInspect } from "./inspectConsole"; export function setupPage(page: Page, url: string): Promise { return new Promise(async (resolve) => { + // Hack to disable HTTP cache. + await page.route("**", route => route.continue()); // Goto base url defined in config. await page.goto("/"); await page.waitForSelector(".version > b"); @@ -18,6 +21,9 @@ export function setupPage(page: Page, url: string): Promise { await page.waitForTimeout(1000); await bar.press("Enter"); + + registerInspect(page); + resolve(frame); }); } \ No newline at end of file