mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* refactor(cli): inject local daemon launch runtime * test(app/e2e): target mobile sidebar toggle state
40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
import { expect, type Page } from "@playwright/test";
|
|
|
|
export function requireServerId(): string {
|
|
const serverId = process.env.E2E_SERVER_ID;
|
|
if (!serverId) {
|
|
throw new Error("E2E_SERVER_ID is not set (expected from Playwright globalSetup).");
|
|
}
|
|
return serverId;
|
|
}
|
|
|
|
export async function selectWorkspaceInSidebar(page: Page, workspaceId: string): Promise<void> {
|
|
const row = page.getByTestId(`sidebar-workspace-row-${requireServerId()}:${workspaceId}`);
|
|
await expect(row).toBeVisible({ timeout: 30_000 });
|
|
await row.click();
|
|
}
|
|
|
|
export async function expectWorkspaceListed(page: Page, name: string): Promise<void> {
|
|
await expect(
|
|
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.getByRole("button", { name: "Open menu" }).click();
|
|
}
|
|
|
|
// force=true: the overlay covers the button when the mobile sidebar is open.
|
|
export async function closeMobileAgentSidebar(page: Page): Promise<void> {
|
|
await page.getByRole("button", { name: "Close menu" }).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 });
|
|
}
|