mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
test(app/e2e): mobile sidebar open/close transition (Cluster G6) (#746)
* test(app/e2e): sidebar query pause + mobile open/close transition (Cluster G6) G6.1: assert fetch_workspaces_request stops being sent when desktop sidebar is closed (CDP WebSocket frame counting, no store injection). G6.2: assert mobile sidebar panel animates in/out at 390×844 viewport via toBeInViewport on translateX-animated element. Adds installWorkspaceFetchMonitor, expectWorkspaceListSubscribed, closeSidebar, openMobileAgentSidebar, closeMobileAgentSidebar, expectMobileAgentSidebarVisible, and expectMobileAgentSidebarHidden helpers. * test(app/e2e): mobile sidebar open/close transition (Cluster G6) G6.1 (query-pause perf invariant) reclassified as a unit-test follow-up — counting internal RPC frames in E2E is banned per updated roadmap. G6.2: asserts mobile sidebar panel animates in/out at 390×844 viewport via toBeInViewport on the translateX-animated sidebar-sessions element. Adds openMobileAgentSidebar, closeMobileAgentSidebar, expectMobileAgentSidebarVisible, and expectMobileAgentSidebarHidden helpers.
This commit is contained in:
@@ -19,3 +19,21 @@ export async function expectWorkspaceListed(page: Page, name: string): Promise<v
|
||||
page.locator('[data-testid^="sidebar-workspace-row-"]').filter({ hasText: name }).first(),
|
||||
).toBeVisible({ timeout: 30_000 });
|
||||
}
|
||||
|
||||
export async function openMobileAgentSidebar(page: Page): Promise<void> {
|
||||
await page.getByTestId("menu-button").click();
|
||||
}
|
||||
|
||||
// force=true: the overlay covers the button when the mobile sidebar is open.
|
||||
export async function closeMobileAgentSidebar(page: Page): Promise<void> {
|
||||
await page.getByTestId("menu-button").click({ force: true });
|
||||
}
|
||||
|
||||
// The mobile sidebar panel animates via translateX; toBeInViewport reflects the rendered position.
|
||||
export async function expectMobileAgentSidebarVisible(page: Page): Promise<void> {
|
||||
await expect(page.getByTestId("sidebar-sessions")).toBeInViewport({ timeout: 5_000 });
|
||||
}
|
||||
|
||||
export async function expectMobileAgentSidebarHidden(page: Page): Promise<void> {
|
||||
await expect(page.getByTestId("sidebar-sessions")).not.toBeInViewport({ timeout: 5_000 });
|
||||
}
|
||||
|
||||
@@ -4,6 +4,12 @@ import { tmpdir } from "node:os";
|
||||
import path from "node:path";
|
||||
import { test, expect } from "./fixtures";
|
||||
import { gotoAppShell } from "./helpers/app";
|
||||
import {
|
||||
closeMobileAgentSidebar,
|
||||
expectMobileAgentSidebarHidden,
|
||||
expectMobileAgentSidebarVisible,
|
||||
openMobileAgentSidebar,
|
||||
} from "./helpers/sidebar";
|
||||
import { createTempGitRepo } from "./helpers/workspace";
|
||||
import { expectWorkspaceHeader } from "./helpers/workspace-ui";
|
||||
import { connectWorkspaceSetupClient } from "./helpers/workspace-setup";
|
||||
@@ -180,3 +186,16 @@ test.describe("Sidebar workspace list", () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("Mobile sidebar panelState transition", () => {
|
||||
test.use({ viewport: { width: 390, height: 844 } });
|
||||
|
||||
test("showMobileAgent open and close transition", async ({ page }) => {
|
||||
await gotoAppShell(page);
|
||||
await expectMobileAgentSidebarHidden(page);
|
||||
await openMobileAgentSidebar(page);
|
||||
await expectMobileAgentSidebarVisible(page);
|
||||
await closeMobileAgentSidebar(page);
|
||||
await expectMobileAgentSidebarHidden(page);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user