import { expect, test } from "@playwright/test"; test("M8-14 Worker restart restores the OPFS manifest without trusting resident pages", async ({ page }) => { await page.goto("/"); const run = (action: "prepare" | "reopen", state?: unknown): Promise => page.evaluate(({ action, state }) => new Promise((resolve, reject) => { const worker = new Worker("/src/workers/nanovdb-opfs-restart-test.worker.ts", { type: "module" }); worker.onmessage = (event) => { worker.terminate(); event.data.error ? reject(new Error(event.data.error)) : resolve(event.data); }; worker.onerror = (event) => { worker.terminate(); reject(new Error(event.message)); }; worker.postMessage({ action, state }); }), { action, state }); const prepared = await run("prepare"); const reopened = await run("reopen", { projectId: prepared.projectId, bundleSha256: prepared.bundleSha256, claimedResidentPages: prepared.claimedResidentPages, }); expect(prepared.residentBeforeRestart).toEqual([0]); expect(reopened.manifestSha256).toBe(prepared.bundleSha256); expect(reopened.claimedResidentPages).toEqual([0]); expect(reopened.residentBeforeRestore).toEqual([]); expect(reopened.residentAfterRestore).toEqual([0]); expect(reopened.pageBytes).toBe(64 * 1024); expect(reopened.tamperedError).toContain("NANOVDB_HASH_MISMATCH"); expect(reopened.residentAfterTamperedRestore).toEqual([]); });