Spaces:
Running
Running
| import { test, expect } from "@playwright/test"; | |
| // Fatal = the module graph failed to load (bad import URL, syntax error, | |
| // missing global). We tolerate runtime warnings the host shell may emit | |
| // before sign-in, but not these. | |
| const FATAL = /(SyntaxError|ReferenceError|is not defined|Failed to fetch dynamically imported module|Unexpected token)/; | |
| test("standalone page loads the module graph (host shell mounts, no fatal errors)", async ({ page }) => { | |
| const fatals = []; | |
| page.on("pageerror", (e) => { if (FATAL.test(String(e))) fatals.push(String(e)); }); | |
| page.on("console", (m) => { if (m.type() === "error" && FATAL.test(m.text())) fatals.push(m.text()); }); | |
| await page.goto("/"); | |
| // mountHost() renders the host shell (sign-in / picker) into #root. | |
| // We only assert the module graph executed far enough to populate it. | |
| await expect.poll( | |
| async () => page.locator("#root").evaluate((n) => n.childElementCount), | |
| { timeout: 30_000 }, | |
| ).toBeGreaterThan(0); | |
| expect(fatals, `fatal load errors:\n${fatals.join("\n")}`).toEqual([]); | |
| }); | |
| test("embedded boot path imports cleanly (no module-load error)", async ({ page }) => { | |
| const fatals = []; | |
| page.on("pageerror", (e) => { if (FATAL.test(String(e))) fatals.push(String(e)); }); | |
| // ?embedded=1 runs bootEmbed(): connectToHost() will not complete without | |
| // a host, but importing it + our whole module graph must not throw. | |
| await page.goto("/?embedded=1"); | |
| await page.waitForTimeout(4000); | |
| expect(fatals, `fatal load errors:\n${fatals.join("\n")}`).toEqual([]); | |
| }); | |