From 79717e2bd38690bd4791b5f50afd6f50bbead181 Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Sun, 8 Nov 2026 06:36:38 +0000 Subject: [PATCH] test(app): share the settings sidebar scroll journey (#9089) Co-authored-by: paseo-bot[bot] <266920839+paseo-bot[bot]@users.noreply.github.com> --- .../e2e/browser/settings-navigation.spec.ts | 99 +++++++++---------- 1 file changed, 48 insertions(+), 51 deletions(-) diff --git a/packages/app/e2e/browser/settings-navigation.spec.ts b/packages/app/e2e/browser/settings-navigation.spec.ts index 4d77fde7d8..5b019139f2 100644 --- a/packages/app/e2e/browser/settings-navigation.spec.ts +++ b/packages/app/e2e/browser/settings-navigation.spec.ts @@ -95,66 +95,63 @@ test.describe("Settings sidebar scroll position", () => { await expectSettingsSidebarScrollOffset(page, offset); }); - test("scrolls the sidebar and detail pane independently", async ({ page }) => { - await gotoAppShell(page); - await openSettings(page); - const sidebarOffset = await scrollSettingsSidebarToEnd(page); - await openSettingsHostSection(page, getServerId(), "providers"); - await expect(page.getByTestId("host-page-providers-card")).toBeVisible(); - const detailOffset = await scrollSettingsDetailDown(page); - await expectSettingsSidebarScrollOffset(page, sidebarOffset); - - await scrollSettingsSidebarUp(page, 60); - await expectSettingsSidebarScrollOffset(page, sidebarOffset - 60); - await expectSettingsDetailScrollOffset(page, detailOffset); - }); - - test("keeps the sidebar position after rapid consecutive selections", async ({ page }) => { - await gotoAppShell(page); - await openSettings(page); - - const scrollTop = await scrollSettingsSidebarToEnd(page); - - await selectSettingsHostSectionsRapidly(page); - await expectSettingsSidebarScrollOffset(page, scrollTop); - - await expectSettingsSidebarScrollSettled(page, scrollTop); - }); - - test("keeps the sidebar position when switching between app and host sections", async ({ + test("keeps sidebar and detail scrolling independent through section changes", async ({ page, }) => { await gotoAppShell(page); await openSettings(page); - const hostScrollTop = await scrollSettingsSidebarToEnd(page); - await expect(page.getByTestId("settings-host-section-providers")).toBeInViewport(); + await test.step("scrolls the sidebar and detail pane independently", async () => { + const sidebarOffset = await scrollSettingsSidebarToEnd(page); + await openSettingsHostSection(page, getServerId(), "providers"); + await expect(page.getByTestId("host-page-providers-card")).toBeVisible(); + const detailOffset = await scrollSettingsDetailDown(page); + await expectSettingsSidebarScrollOffset(page, sidebarOffset); - for (const section of [ - "providers", - "terminals", - "providers", - "terminals", - "providers", - ] as const) { - await openSettingsHostSection(page, getServerId(), section); - await expect(page.getByTestId("page-title")).toHaveText( - section === "providers" ? "Providers" : "Terminals", - ); - await expectSettingsSidebarScrollOffset(page, hostScrollTop); - } + await scrollSettingsSidebarUp(page, 60); + await expectSettingsSidebarScrollOffset(page, sidebarOffset - 60); + await expectSettingsDetailScrollOffset(page, detailOffset); + }); - const sidebar = page.getByTestId("settings-sidebar"); - const appScrollTop = await revealSettingsSidebarSection(page, "diagnostics"); - await expect(sidebar.getByRole("button", { name: "About", exact: true })).toBeInViewport(); + await test.step("keeps the sidebar position after rapid consecutive selections", async () => { + const scrollTop = await scrollSettingsSidebarToEnd(page); - await openSettingsSection(page, "about"); - await expectAboutContent(page); - await expectSettingsSidebarScrollOffset(page, appScrollTop); + await selectSettingsHostSectionsRapidly(page); + await expectSettingsSidebarScrollOffset(page, scrollTop); - await openSettingsSection(page, "diagnostics"); - await expectDiagnosticsContent(page); - await expectSettingsSidebarScrollOffset(page, appScrollTop); + await expectSettingsSidebarScrollSettled(page, scrollTop); + }); + + await test.step("keeps the sidebar position when switching between app and host sections", async () => { + const hostScrollTop = await scrollSettingsSidebarToEnd(page); + await expect(page.getByTestId("settings-host-section-providers")).toBeInViewport(); + + for (const section of [ + "providers", + "terminals", + "providers", + "terminals", + "providers", + ] as const) { + await openSettingsHostSection(page, getServerId(), section); + await expect(page.getByTestId("page-title")).toHaveText( + section === "providers" ? "Providers" : "Terminals", + ); + await expectSettingsSidebarScrollOffset(page, hostScrollTop); + } + + const sidebar = page.getByTestId("settings-sidebar"); + const appScrollTop = await revealSettingsSidebarSection(page, "diagnostics"); + await expect(sidebar.getByRole("button", { name: "About", exact: true })).toBeInViewport(); + + await openSettingsSection(page, "about"); + await expectAboutContent(page); + await expectSettingsSidebarScrollOffset(page, appScrollTop); + + await openSettingsSection(page, "diagnostics"); + await expectDiagnosticsContent(page); + await expectSettingsSidebarScrollOffset(page, appScrollTop); + }); }); });