diff --git a/apps/electron-backend-e2e/src/window-controls.e2e.ts b/apps/electron-backend-e2e/src/window-controls.e2e.ts index d922ddf77..f60b844fb 100644 --- a/apps/electron-backend-e2e/src/window-controls.e2e.ts +++ b/apps/electron-backend-e2e/src/window-controls.e2e.ts @@ -346,17 +346,24 @@ test.describe('macOS traffic lights', () => { try { const page = app.mainWindow; - await addXtreamPortal(page); - await waitForXtreamWorkspaceReady(page); const lights = await trafficLights(app); const switcher = 'app-playlist-switcher'; const back = 'workspace-header-back'; - await expectHeaderClearOfLights(page, lights, switcher, '100 %'); + // The first page has no history to go back to: the switcher leads. + await expectHeaderClearOfLights(page, lights, switcher, 'start'); await zoomOutFully(page); - await expectHeaderClearOfLights(page, lights, switcher, 'min zoom'); + await expectHeaderClearOfLights( + page, + lights, + switcher, + 'start at min zoom' + ); + await resetZoom(page); // A detail page puts its Back first, pulled 8px toward the edge. + await addXtreamPortal(page); + await waitForXtreamWorkspaceReady(page); await page .getByRole('link', { name: 'Series', exact: true }) .click(); @@ -364,6 +371,8 @@ test.describe('macOS traffic lights', () => { await expect(page.getByTestId(back)).toBeVisible({ timeout: 20_000, }); + await expectHeaderClearOfLights(page, lights, back, 'detail'); + await zoomOutFully(page); await expectHeaderClearOfLights( page, lights, @@ -371,12 +380,6 @@ test.describe('macOS traffic lights', () => { 'detail at min zoom' ); await resetZoom(page); - await expectHeaderClearOfLights( - page, - lights, - back, - 'detail at 100 %' - ); } finally { await closeElectronApp(app); } diff --git a/docs/architecture/workspace-shell.md b/docs/architecture/workspace-shell.md index cf4c30ef7..4d908e71d 100644 --- a/docs/architecture/workspace-shell.md +++ b/docs/architecture/workspace-shell.md @@ -413,8 +413,9 @@ The Electron window hides the native title bar on all desktop platforms layout. Off macOS nothing is published and the defaults apply. The phone layout, which puts the rail in a row above the header, ignores the inset. `window-controls.e2e.ts` ("macOS traffic lights") checks the rail - alignment, the first header control (switcher, then a detail page's Back) - and the content top at default and minimum zoom. + alignment, the first header control (the switcher on the first page, + which has no history fallback yet, then a detail page's Back) and the + content top at default and minimum zoom. 2. Windows and Linux use renderer-drawn window controls (`app-window-controls`, `libs/ui/components/src/lib/window-controls/`). `frame` is intentionally left untouched so native resize borders and