Advance M8-M11 parity workflows
This commit is contained in:
34
web/tests/e2e/physics-solver-probe.spec.ts
Normal file
34
web/tests/e2e/physics-solver-probe.spec.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
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<Record<string, unknown>>((resolve, reject) => {
|
||||
const worker = new Worker("/src/workers/physics-solver-probe-test.worker.ts", { type: "module" });
|
||||
worker.onmessage = (event: MessageEvent<Record<string, unknown>>) => { worker.terminate(); resolve(event.data); };
|
||||
worker.onerror = (event) => { worker.terminate(); reject(new Error(event.message)); };
|
||||
worker.postMessage({});
|
||||
})) as {
|
||||
familyOrder: string[];
|
||||
defaultProbe: string[];
|
||||
probes: Record<string, string>;
|
||||
routes: Record<string, string>;
|
||||
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");
|
||||
});
|
||||
Reference in New Issue
Block a user