import { expect, test } from "@playwright/test"; import fs from "node:fs"; import path from "node:path"; const root = path.resolve(import.meta.dirname, "../../.."); const expected = JSON.parse(fs.readFileSync(path.join(root, "tests/golden/M10-13/physics-solver-probe.json"), "utf8")); test("M10-13 probes each Physics solver family and keeps failures bake-only", async ({ page }) => { await page.goto("/"); const result = await page.evaluate(() => new Promise>((resolve, reject) => { const worker = new Worker("/src/workers/physics-solver-probe-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({}); })) as { familyOrder: string[]; defaultProbe: string[]; probes: Record; routes: Record; localGate: { status: string; issues: number }; fallbackGate: { status: string; code: string; message: string }; }; expect(result.familyOrder).toEqual(expected.familyOrder); expect(result.defaultProbe).toEqual(expected.familyOrder.map(() => expected.defaultProbe)); expect(result.probes).toEqual(expected.probes); expect(result.routes.RIGID_BODY).toBe(expected.localRoute); for (const family of expected.familyOrder.filter((family: string) => family !== "RIGID_BODY")) { expect(result.routes[family]).toBe(expected.fallbackRoute); } expect(result.localGate).toEqual({ status: "READY", issues: 0 }); expect(result.fallbackGate.status).toBe("BLOCKED"); expect(result.fallbackGate.code).toBe(expected.fallbackErrorCode); expect(result.fallbackGate.message).toContain("desktop/server bake"); });