|
|
@@ -47,7 +47,7 @@ test("debug failure report contains replay diagnostics", async ({ page }) => {
|
|
|
|
expect(report.invariants).toBeTruthy();
|
|
|
|
expect(report.invariants).toBeTruthy();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
test("replay payload builder exports schema-v2 moves", async ({ page }) => {
|
|
|
|
test("replay payload builder exports a schema-v4 recording", async ({ page }) => {
|
|
|
|
await page.goto("/play-classic?seed=42");
|
|
|
|
await page.goto("/play-classic?seed=42");
|
|
|
|
await page.waitForFunction(() => typeof window.__FERROUS_DEBUG__ === "object");
|
|
|
|
await page.waitForFunction(() => typeof window.__FERROUS_DEBUG__ === "object");
|
|
|
|
|
|
|
|
|
|
|
@@ -57,10 +57,14 @@ test("replay payload builder exports schema-v2 moves", async ({ page }) => {
|
|
|
|
.poll(async () => await page.evaluate(() => window.__FERROUS_DEBUG__.replayPayload() !== null))
|
|
|
|
.poll(async () => await page.evaluate(() => window.__FERROUS_DEBUG__.replayPayload() !== null))
|
|
|
|
.toBe(true);
|
|
|
|
.toBe(true);
|
|
|
|
const payload = await page.evaluate(() => window.__FERROUS_DEBUG__.replayPayload());
|
|
|
|
const payload = await page.evaluate(() => window.__FERROUS_DEBUG__.replayPayload());
|
|
|
|
expect(payload.schema_version).toBe(2);
|
|
|
|
// Schema v4: the wasm layer assembles the whole payload; the deal is
|
|
|
|
|
|
|
|
// embedded in `recording` and moves live at recording.instructions.
|
|
|
|
|
|
|
|
expect(payload.schema_version).toBe(4);
|
|
|
|
expect(payload.draw_mode).toMatch(/Draw(One|Three)/);
|
|
|
|
expect(payload.draw_mode).toMatch(/Draw(One|Three)/);
|
|
|
|
expect(payload.mode).toBe("Classic");
|
|
|
|
expect(payload.mode).toBe("Classic");
|
|
|
|
expect(Array.isArray(payload.moves)).toBeTruthy();
|
|
|
|
expect(payload.recording).toBeTruthy();
|
|
|
|
expect(payload.moves.length).toBeGreaterThan(0);
|
|
|
|
expect(payload.recording.initial_state).toBeTruthy();
|
|
|
|
expect(payload.win_move_index).toBe(payload.moves.length - 1);
|
|
|
|
expect(Array.isArray(payload.recording.instructions)).toBeTruthy();
|
|
|
|
|
|
|
|
expect(payload.recording.instructions.length).toBeGreaterThan(0);
|
|
|
|
|
|
|
|
expect(payload.win_move_index).toBe(payload.recording.instructions.length - 1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|