From ccd5880612d32a72dc3016a720e28487942e9273 Mon Sep 17 00:00:00 2001 From: Ralf Anton Beier Date: Sat, 6 Jun 2026 02:39:35 +0200 Subject: [PATCH] feat(tools/intro-video): record the dashboard in presentation mode (clean frames) Follows up REQ-207 (#482, presentation/clean mode for serve): the intro-video capture now appends `?presentation=1` to the four dashboard scene URLs (open_dashboard, browse_artifacts, open_artifact, show_coverage), so the recorded video hides the working-state chrome (branch / "N uncommitted" / path / Reload+Print) and shows a clean dashboard regardless of the recording machine's git state. The title/CLI-help/outro scenes use setContent and are unaffected. This closes the loop on the chrome that was visible in every frame of the first intro-video capture. Verified by composition: presentation mode is proven (presentation-mode.spec.ts, 4 passing) and these URLs now use it. Refs: REQ-207 --- tools/intro-video/capture.spec.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/intro-video/capture.spec.ts b/tools/intro-video/capture.spec.ts index 28807e0..b80742d 100644 --- a/tools/intro-video/capture.spec.ts +++ b/tools/intro-video/capture.spec.ts @@ -100,6 +100,10 @@ async function cliPanel(page: import("@playwright/test").Page) { test("rivet intro video capture", async ({ page }) => { test.setTimeout(120_000); const { base_url } = storyboard.meta; + // Record the dashboard in presentation mode (REQ-207 / #482): hides the + // branch / "N uncommitted" / path / Reload+Print chrome so the published + // video has clean frames regardless of the recording machine's git state. + const CLEAN = "?presentation=1"; for (const scene of storyboard.scenes) { switch (scene.action) { @@ -110,21 +114,21 @@ test("rivet intro video capture", async ({ page }) => { await cliPanel(page); break; case "open_dashboard": - await page.goto(`${base_url}/`); + await page.goto(`${base_url}/${CLEAN}`); await page.waitForLoadState("networkidle").catch(() => {}); break; case "browse_artifacts": - await page.goto(`${base_url}/artifacts`); + await page.goto(`${base_url}/artifacts${CLEAN}`); await page.locator("table").first().waitFor().catch(() => {}); // Gentle scroll to show the list is long / real. await page.mouse.wheel(0, 400); break; case "open_artifact": - await page.goto(`${base_url}/artifacts/REQ-001`); + await page.goto(`${base_url}/artifacts/REQ-001${CLEAN}`); await page.waitForLoadState("networkidle").catch(() => {}); break; case "show_coverage": - await page.goto(`${base_url}/coverage`); + await page.goto(`${base_url}/coverage${CLEAN}`); await page.waitForLoadState("networkidle").catch(() => {}); break; case "outro_card":