import fs from "node:fs"; import path from "node:path"; import { test } from "@playwright/test"; const root = path.resolve(import.meta.dirname, "../../.."); test("collect engine worker error reports during compressed open", async ({ page }) => { test.setTimeout(180_000); await page.goto("/"); await page.waitForTimeout(12000); for (const worker of page.workers()) { await worker.evaluate(() => { const scope = self as unknown as { __reports?: unknown[] }; if (scope.__reports) return; scope.__reports = []; self.addEventListener("message", (event: Event) => { const data = (event as MessageEvent).data; if (!data) return; if (data.error) scope.__reports!.push({ requestId: String(data.requestId ?? data.id ?? "").slice(0, 40), code: data.error.code, message: String(data.error.message).slice(0, 500) }); }); }); } await page.getByTestId("blend-file-input").setInputFiles(path.join(root, "blender-5.2.0/tests/files/sequence_editing/sequence.blend")); await page.waitForTimeout(35000); const collected: unknown[] = []; for (const worker of page.workers()) { collected.push(await worker.evaluate(() => (self as unknown as { __reports?: unknown[] }).__reports ?? [])); } fs.writeFileSync("/tmp/seq-open-report.json", JSON.stringify(collected, null, 2)); });