import { expect, test } from "@playwright/test"; test("M13-02A enforces bounded script manifest text, module, path, dependency and permission limits", async ({ page }) => { await page.goto("/"); const result = await page.evaluate(() => new Promise>((resolve, reject) => { const worker = new Worker("/src/workers/scripting-manifest-budget-test.worker.ts", { type: "module" }); worker.onmessage = (event: MessageEvent>) => { worker.terminate(); resolve(event.data); }; worker.onerror = (event) => { worker.terminate(); reject(new Error(event.message)); }; worker.postMessage({}); })); expect(result.valid).toEqual([2, "scripts/base.py", "deps/base.py", 256]); expect(result.count).toContain("SCRIPT_BUDGET_EXCEEDED"); expect(result.totalBytes).toContain("SCRIPT_BUDGET_EXCEEDED"); expect(result.module).toContain("SCRIPT_POLICY_DENIED"); expect(result.path).toContain("SCRIPT_MANIFEST_INVALID"); expect(result.dependency).toContain("SCRIPT_MANIFEST_INVALID"); expect(result.permission).toContain("SCRIPT_POLICY_DENIED"); });