Advance M8-M11 parity workflows
This commit is contained in:
30
web/tests/e2e/physics-cache-family.spec.ts
Normal file
30
web/tests/e2e/physics-cache-family.spec.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
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-14/physics-cache-family.json"), "utf8"));
|
||||
|
||||
test("M10-14 verifies every Physics family cache before playback", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
const result = await page.evaluate(() => new Promise<Record<string, unknown>>((resolve, reject) => {
|
||||
const worker = new Worker("/src/workers/physics-cache-family-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 {
|
||||
verified: Array<{ family: string; source: string; bytes: number; frames: number }>;
|
||||
sourceMismatch: string;
|
||||
payloadMismatch: string;
|
||||
versionMismatch: string;
|
||||
budgetExceeded: string;
|
||||
};
|
||||
expect(result.verified.map((entry) => entry.family)).toEqual(expected.families);
|
||||
expect(result.verified.map((entry) => entry.source)).toEqual(expected.sources);
|
||||
expect(result.verified.every((entry) => entry.bytes === expected.byteLength)).toBe(true);
|
||||
expect(result.verified.every((entry) => entry.frames === expected.frameCount)).toBe(true);
|
||||
expect(result.sourceMismatch).toBe(expected.sourceMismatch);
|
||||
expect(result.payloadMismatch).toBe(expected.payloadMismatch);
|
||||
expect(result.versionMismatch).toBe(expected.versionMismatch);
|
||||
expect(result.budgetExceeded).toBe(expected.budgetExceeded);
|
||||
});
|
||||
Reference in New Issue
Block a user