From 014d1c12ddfbfef099e081fbe58df52fa06c7a31 Mon Sep 17 00:00:00 2001 From: LucaP Date: Sat, 10 Oct 2026 23:57:15 +0300 Subject: [PATCH] test: open drive settings for volume and pause in browser specs --- tests/browser/audio-controls.spec.ts | 23 +++++++++++++++-------- tests/browser/bfcache-lifecycle.spec.ts | 2 ++ tests/browser/scene-controls.spec.ts | 4 ++++ tests/browser/visual-regression.spec.ts | 2 +- tests/performance/drive-trace.spec.ts | 2 +- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/tests/browser/audio-controls.spec.ts b/tests/browser/audio-controls.spec.ts index 1af3714..4425496 100644 --- a/tests/browser/audio-controls.spec.ts +++ b/tests/browser/audio-controls.spec.ts @@ -96,14 +96,15 @@ test("starts Web Audio synchronously from the visitor gesture and exposes access await expect(page.getByRole("button", { name: "Mute sound" })).toBeVisible(); await expect( - page.getByRole("button", { name: "Sound volume" }), + page.getByRole("button", { name: "Drive settings" }), ).toBeVisible(); + // Volume and Pause motion live inside the settings panel since round 5. + await page.getByRole("button", { name: "Drive settings" }).click(); + await expect(page.getByLabel("Sound volume level")).toBeVisible(); await expect( page.getByRole("button", { name: "Pause motion" }), ).toBeVisible(); - await expect( - page.getByRole("button", { name: "Drive settings" }), - ).toBeVisible(); + await page.keyboard.press("Escape"); await expect .poll(() => page.evaluate( @@ -194,7 +195,7 @@ test("persists native volume and keeps sound independent from Static motion", as await page.goto(distUrl, { waitUntil: "domcontentloaded" }); await page.getByRole("button", { name: "Play soundtrack" }).click(); - await page.getByRole("button", { name: "Sound volume" }).click(); + await page.getByRole("button", { name: "Drive settings" }).click(); const volume = page.getByLabel("Sound volume level"); await volume.fill("0.65"); await expect(volume).toHaveValue("0.65"); @@ -204,15 +205,14 @@ test("persists native volume and keeps sound independent from Static motion", as ) .toBe("0.65"); - await page.getByRole("button", { name: "Drive settings" }).click(); await page.getByLabel("Quality control").selectOption("static"); await expect(page.getByRole("button", { name: "Unmute sound" })).toHaveCount( 0, ); await expect(page.getByRole("button", { name: "Mute sound" })).toBeVisible(); - await expect(volume).toHaveCount(0); - await page.getByRole("button", { name: "Sound volume" }).click(); + // The volume slider shares the open settings panel with Quality. await expect(volume).toBeVisible(); + await expect(volume).toHaveValue("0.65"); }); test("requires a direct visitor action after browser interruption without creating another graph", async ({ @@ -235,6 +235,13 @@ test("requires a direct visitor action after browser interruption without creati await expect( page.getByRole("button", { name: "Resume sound" }), ).toBeVisible(); + // Resume and Mute share one bay slot, so Mute returns only once the context + // reports running again: lift the synthetic "interrupted" state first. + await page.evaluate(() => { + const context = (window as unknown as { __audioContexts: AudioContext[] }) + .__audioContexts[0]; + if (context) delete (context as unknown as { state?: string }).state; + }); await page.getByRole("button", { name: "Resume sound" }).click(); await expect(page.getByRole("button", { name: "Mute sound" })).toBeVisible(); await expect diff --git a/tests/browser/bfcache-lifecycle.spec.ts b/tests/browser/bfcache-lifecycle.spec.ts index 27cb2c8..0e639ff 100644 --- a/tests/browser/bfcache-lifecycle.spec.ts +++ b/tests/browser/bfcache-lifecycle.spec.ts @@ -58,7 +58,9 @@ test("persisted lifecycle events preserve paused and Static states without dupli ); await page.getByRole("button", { name: "Play soundtrack" }).click(); + await page.getByRole("button", { name: "Drive settings" }).click(); await page.getByRole("button", { name: "Pause motion" }).click(); + await page.keyboard.press("Escape"); await dispatchPersistedPageTransition(page, "pagehide"); await dispatchPersistedPageTransition(page, "pageshow"); await expect(page.locator(".journey-canvas")).toHaveCount(1); diff --git a/tests/browser/scene-controls.spec.ts b/tests/browser/scene-controls.spec.ts index 1f4f0ba..a86a8c9 100644 --- a/tests/browser/scene-controls.spec.ts +++ b/tests/browser/scene-controls.spec.ts @@ -151,6 +151,7 @@ test("provides native motion and quality controls with visible state", async ({ await expect(page.getByRole("status")).toHaveCount(0); await page.keyboard.press("Escape"); await page.getByRole("button", { name: "Play soundtrack" }).click(); + await page.getByRole("button", { name: "Drive settings" }).click(); await expect( page.getByRole("button", { name: "Pause motion" }), ).toBeVisible(); @@ -161,6 +162,7 @@ test("provides native motion and quality controls with visible state", async ({ .getAttribute("data-scene-generation"); await page.getByRole("button", { name: "Pause motion" }).click(); + await page.keyboard.press("Escape"); await expect( page.getByRole("button", { name: "Resume motion" }), ).toBeVisible(); @@ -174,9 +176,11 @@ test("provides native motion and quality controls with visible state", async ({ ); await page.getByRole("button", { name: "Resume motion" }).click(); + await page.getByRole("button", { name: "Drive settings" }).click(); await expect( page.getByRole("button", { name: "Pause motion" }), ).toBeVisible(); + await page.keyboard.press("Escape"); await expect(canvas).toHaveCount(1); await expect(page.locator(".journey-world")).toHaveAttribute( "data-scene-generation", diff --git a/tests/browser/visual-regression.spec.ts b/tests/browser/visual-regression.spec.ts index 8379a39..6de49b7 100644 --- a/tests/browser/visual-regression.spec.ts +++ b/tests/browser/visual-regression.spec.ts @@ -410,7 +410,7 @@ test.describe("production visual composition", () => { await expect( page.getByRole("button", { name: "Mute sound" }), ).toBeVisible(); - await page.getByRole("button", { name: "Sound volume" }).click(); + await page.getByRole("button", { name: "Drive settings" }).click(); await expect(page.getByLabel("Sound volume level")).toHaveValue("0.4"); await captureViewport(page, testInfo, "visual-audio-running"); }); diff --git a/tests/performance/drive-trace.spec.ts b/tests/performance/drive-trace.spec.ts index c20ed38..6d131c2 100644 --- a/tests/performance/drive-trace.spec.ts +++ b/tests/performance/drive-trace.spec.ts @@ -249,7 +249,7 @@ test("drive-trace.v1 runs on current Chromium with fail-closed reference authent ); await dispatchWheelBurst(page, cdp, at, 1_500, 100); await at(2_350); - await page.getByRole("button", { name: "Sound volume" }).click(); + await page.getByRole("button", { name: "Drive settings" }).click(); await at(2_400); const volumeSlider = page.getByRole("slider", { name: "Sound volume" }); await expect(volumeSlider).toBeVisible();