From d5bc69e1afb756bc0603f31da4edd6093874b0ff Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 4 Nov 2026 08:20:16 +0100 Subject: [PATCH] test(app): align pane journeys with measured workspace chrome Give rail-specific split journeys enough column width, assert launched Diff content independently of header shape, and retain pane identity across compact transitions. Expect the compact selector in the half-screen Explorer workflow. Co-authored-by: Elsa Granger --- packages/app/e2e/browser/composer-diff-stat.spec.ts | 3 ++- packages/app/e2e/browser/empty-pane-keyboard.spec.ts | 6 +++--- packages/app/e2e/browser/explorer-pane-placement.spec.ts | 3 +++ packages/app/e2e/browser/file-editing.spec.ts | 3 ++- packages/app/e2e/browser/sidebar-workspace.spec.ts | 3 +++ packages/app/e2e/browser/subagent-origin-pane.spec.ts | 6 +++++- packages/app/e2e/browser/terminal-find.spec.ts | 2 ++ packages/app/e2e/browser/viewed-agent-timelines.spec.ts | 2 ++ packages/app/e2e/browser/workspace-pane-remount.spec.ts | 2 ++ 9 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/app/e2e/browser/composer-diff-stat.spec.ts b/packages/app/e2e/browser/composer-diff-stat.spec.ts index 959567f58b..4eeada2f1f 100644 --- a/packages/app/e2e/browser/composer-diff-stat.spec.ts +++ b/packages/app/e2e/browser/composer-diff-stat.spec.ts @@ -78,7 +78,8 @@ test("composer diff stat reveals Changes, then opens the diff in the configured const workspace = await seedChangedAgent("composer-diff-stat-side-"); try { - await page.setViewportSize({ width: 1400, height: 900 }); + // Keep both workspace rails visible alongside app navigation and Explorer. + await page.setViewportSize({ width: 1900, height: 900 }); await openAgentRoute(page, { workspaceId: workspace.workspaceId, agentId: workspace.agentId, diff --git a/packages/app/e2e/browser/empty-pane-keyboard.spec.ts b/packages/app/e2e/browser/empty-pane-keyboard.spec.ts index 46dc4cf47f..8430fe5974 100644 --- a/packages/app/e2e/browser/empty-pane-keyboard.spec.ts +++ b/packages/app/e2e/browser/empty-pane-keyboard.spec.ts @@ -56,9 +56,9 @@ test.describe("New tab keyboard launcher", () => { await expectLauncherSelection(launcher, "Diff"); await page.keyboard.press("Enter"); - await expect( - page.getByTestId("workspace-tab-working_diff").filter({ visible: true }), - ).toBeVisible({ timeout: 30_000 }); + await expect(page.getByTestId("working-diff-panel").filter({ visible: true })).toBeVisible({ + timeout: 30_000, + }); } finally { await workspace.cleanup(); } diff --git a/packages/app/e2e/browser/explorer-pane-placement.spec.ts b/packages/app/e2e/browser/explorer-pane-placement.spec.ts index 55f96cc0cf..9a4a7127fe 100644 --- a/packages/app/e2e/browser/explorer-pane-placement.spec.ts +++ b/packages/app/e2e/browser/explorer-pane-placement.spec.ts @@ -105,6 +105,9 @@ function collectConsoleErrors(page: Page): string[] { return errors; } +// These drag and tab-menu journeys need full rails beside the docked Explorer. +test.use({ viewport: { width: 1900, height: 900 } }); + test.describe("explorer pane tab placement", () => { test("agents open in the main pane and New-tab splits keep the app usable", async ({ page, diff --git a/packages/app/e2e/browser/file-editing.spec.ts b/packages/app/e2e/browser/file-editing.spec.ts index e9fc0b15ba..a395a517c2 100644 --- a/packages/app/e2e/browser/file-editing.spec.ts +++ b/packages/app/e2e/browser/file-editing.spec.ts @@ -435,7 +435,8 @@ test.describe("CodeMirror workspace file editing", () => { }); try { - await page.setViewportSize({ width: 1280, height: 900 }); + // Keep both tab rails available alongside the docked Explorer. + await page.setViewportSize({ width: 1900, height: 900 }); await openAgentRoute(page, session); await openWorkspaceFile(page, "target.ts"); diff --git a/packages/app/e2e/browser/sidebar-workspace.spec.ts b/packages/app/e2e/browser/sidebar-workspace.spec.ts index d96f68580c..6f60720314 100644 --- a/packages/app/e2e/browser/sidebar-workspace.spec.ts +++ b/packages/app/e2e/browser/sidebar-workspace.spec.ts @@ -645,6 +645,9 @@ test.describe("Half-screen desktop layout", () => { .locator('[data-testid^="workspace-pane-"]') .getByTestId("workspace-tabs-row") .filter({ visible: true }), + ).toHaveCount(0); + await expect( + page.getByTestId("workspace-tab-switcher-trigger").filter({ visible: true }), ).toHaveCount(1); await explorerToggle.click(); diff --git a/packages/app/e2e/browser/subagent-origin-pane.spec.ts b/packages/app/e2e/browser/subagent-origin-pane.spec.ts index 545076ab06..8af88bd547 100644 --- a/packages/app/e2e/browser/subagent-origin-pane.spec.ts +++ b/packages/app/e2e/browser/subagent-origin-pane.spec.ts @@ -38,8 +38,12 @@ async function openParentInRightPane(page: Page, parentId: string, workspaceId: await expect(left).toBeVisible(); await expect(right).toBeVisible(); await expect(right).not.toHaveAttribute("data-testid", "workspace-pane-main"); + // A later split can replace the parent pane's rail with compact chrome. + // Keep the pane identity instead of finding it again through that rail. + const rightPaneId = await right.getAttribute("data-testid"); + expect(rightPaneId).not.toBeNull(); await left.locator('[data-testid^="workspace-tab-draft_"]').click(); - return { left, right }; + return { left, right: page.getByTestId(rightPaneId!) }; } test.beforeEach(async ({ page }) => { diff --git a/packages/app/e2e/browser/terminal-find.spec.ts b/packages/app/e2e/browser/terminal-find.spec.ts index 91e8e5826a..e4dde5cfaa 100644 --- a/packages/app/e2e/browser/terminal-find.spec.ts +++ b/packages/app/e2e/browser/terminal-find.spec.ts @@ -413,6 +413,8 @@ test("searches retained output without sending Find input to the shell", async ( test("keeps terminal Find owned by retained tabs and the focused split pane", async ({ page, }, testInfo) => { + // This journey selects tabs from the full rails in both split panes. + await page.setViewportSize({ width: 1600, height: 900 }); const first = await harness.createTerminal({ name: "First search", command: "bash", diff --git a/packages/app/e2e/browser/viewed-agent-timelines.spec.ts b/packages/app/e2e/browser/viewed-agent-timelines.spec.ts index 5ef70cca61..934a48d264 100644 --- a/packages/app/e2e/browser/viewed-agent-timelines.spec.ts +++ b/packages/app/e2e/browser/viewed-agent-timelines.spec.ts @@ -357,6 +357,8 @@ test.describe("Viewed agent timelines", () => { }); test("two visible split chats both stay current", async ({ page }) => { + // Keep both split panes wide enough for the tab-rail interactions below. + await page.setViewportSize({ width: 1600, height: 900 }); const scenario = await seedViewedTimelineScenario(); try { await enableMoveTabShortcut(page); diff --git a/packages/app/e2e/browser/workspace-pane-remount.spec.ts b/packages/app/e2e/browser/workspace-pane-remount.spec.ts index 201b6e3ccf..c259dc8af2 100644 --- a/packages/app/e2e/browser/workspace-pane-remount.spec.ts +++ b/packages/app/e2e/browser/workspace-pane-remount.spec.ts @@ -52,6 +52,8 @@ async function waitForWorkspaceRoute(page: Page, route: string) { test.describe("Workspace pane mounting", () => { test("workspace navigation keeps the existing agent composer mounted", async ({ page }) => { test.setTimeout(90_000); + // Keep both split panes wide enough for the tab-rail interactions below. + await page.setViewportSize({ width: 1600, height: 900 }); const serverId = getServerId(); const workspace = await seedWorkspace({ repoPrefix: "pane-remount-" });