diff --git a/packages/app/e2e/app/home.spec.ts b/packages/app/e2e/app/home.spec.ts index a3cedf7cb6f..58c0dc3acaa 100644 --- a/packages/app/e2e/app/home.spec.ts +++ b/packages/app/e2e/app/home.spec.ts @@ -19,3 +19,42 @@ test("server picker dialog opens from home", async ({ page }) => { await expect(dialog).toBeVisible() await expect(dialog.getByRole("textbox").first()).toBeVisible() }) + +test("home hides desktop history and sidebar controls", async ({ page }) => { + await page.setViewportSize({ width: 1400, height: 900 }) + await page.goto("/") + + await expect(page.getByRole("button", { name: "Toggle sidebar" })).toHaveCount(0) + await expect(page.getByRole("button", { name: "Go back" })).toHaveCount(0) + await expect(page.getByRole("button", { name: "Go forward" })).toHaveCount(0) + await expect(page.getByRole("button", { name: "Toggle menu" })).toHaveCount(0) +}) + +test("home keeps the mobile menu available", async ({ page }) => { + await page.setViewportSize({ width: 430, height: 900 }) + await page.goto("/") + + const toggle = page.getByRole("button", { name: "Toggle menu" }).first() + await expect(toggle).toBeVisible() + await toggle.click() + + const nav = page.locator('[data-component="sidebar-nav-mobile"]') + await expect(nav).toBeVisible() + await expect.poll(async () => (await nav.boundingBox())?.width ?? 0).toBeLessThan(120) + await expect(nav.getByRole("button", { name: "Settings" })).toBeVisible() + await expect(nav.getByRole("button", { name: "Help" })).toBeVisible() + + await page.setViewportSize({ width: 1400, height: 900 }) + await expect(nav).toBeHidden() + + await page.setViewportSize({ width: 430, height: 900 }) + await expect(toggle).toBeVisible() + await expect(toggle).toHaveAttribute("aria-expanded", "false") + await expect(nav).toHaveClass(/-translate-x-full/) + + await toggle.click() + await expect(nav).toBeVisible() + + await nav.getByRole("button", { name: "Settings" }).click() + await expect(page.getByRole("dialog")).toBeVisible() +}) diff --git a/packages/app/src/components/titlebar.tsx b/packages/app/src/components/titlebar.tsx index 345903420c0..0b2ef4cd66e 100644 --- a/packages/app/src/components/titlebar.tsx +++ b/packages/app/src/components/titlebar.tsx @@ -58,6 +58,7 @@ export function Titlebar() { }) const path = () => `${location.pathname}${location.search}${location.hash}` + const home = createMemo(() => !params.dir) const creating = createMemo(() => { if (!params.dir) return false if (params.id) return false @@ -198,91 +199,93 @@ export function Titlebar() { /> -