From c5b2ebc2b32aa23bbbf0b3aa8f6dd8b4afe95eaf Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 6 Oct 2026 12:20:29 +0000 Subject: [PATCH] Fix German signup E2E, Escape menu stacking, and Heute rhythm click Co-authored-by: cynarAI --- apps/web/e2e/bot-organization.spec.ts | 4 ++++ apps/web/e2e/helpers.ts | 12 +++++++----- apps/web/e2e/heute-brief.spec.ts | 8 ++++++-- apps/web/src/pages/shell/use-mobile-sidebar.ts | 1 - 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/web/e2e/bot-organization.spec.ts b/apps/web/e2e/bot-organization.spec.ts index c32a4cd..d9176bf 100644 --- a/apps/web/e2e/bot-organization.spec.ts +++ b/apps/web/e2e/bot-organization.spec.ts @@ -307,6 +307,10 @@ test("group chats share every context-menu action", async ({ page }, testInfo) = await group.click({ button: "right" }); await captureScreenshot(page, testInfo, "group-context-menu-mobile"); await page.keyboard.press("Escape"); + if ((await page.getByRole("menu").count()) > 0) { + await page.keyboard.press("Escape"); + } + await expect(page.getByRole("menu")).toHaveCount(0); await page.setViewportSize({ width: 1280, height: 800 }); await group.click({ button: "right" }); diff --git a/apps/web/e2e/helpers.ts b/apps/web/e2e/helpers.ts index 5a73e7a..355869d 100644 --- a/apps/web/e2e/helpers.ts +++ b/apps/web/e2e/helpers.ts @@ -186,15 +186,17 @@ export async function signup( ) { await expect(async () => { await page.goto("/sign-up", { waitUntil: "domcontentloaded" }); - await expect(page.getByRole("heading", { name: "Create your evOo" })).toBeVisible({ + await expect( + page.getByRole("heading", { name: /Create your evOo|Dein evOo erstellen/i }), + ).toBeVisible({ timeout: 5_000, }); }).toPass({ timeout: 45_000 }); if (testInfo) await captureScreenshot(page, testInfo, "01-sign-up"); - await page.getByPlaceholder("Your name").fill(name); - await page.getByPlaceholder("Your email address").fill(email); - await page.getByPlaceholder("Password").fill(password); - await page.getByRole("button", { name: "Create account" }).click(); + await page.getByPlaceholder(/Your name|Dein Name/i).fill(name); + await page.getByPlaceholder(/Your email address|Deine E-Mail-Adresse/i).fill(email); + await page.getByPlaceholder(/^Password$|^Passwort$/i).fill(password); + await page.getByRole("button", { name: /Create account|Konto erstellen/i }).click(); } export async function captureScreenshot(page: Page, testInfo: TestInfo, name: string) { diff --git a/apps/web/e2e/heute-brief.spec.ts b/apps/web/e2e/heute-brief.spec.ts index 8b1e001..5fa278b 100644 --- a/apps/web/e2e/heute-brief.spec.ts +++ b/apps/web/e2e/heute-brief.spec.ts @@ -90,9 +90,13 @@ test("Heute shows the coach's brief, habits and goals, checks habits off and set await expect(page.getByTestId(`heute-habit-${habit.id}`).getByRole("checkbox")).toBeChecked(); // Check-in times live behind one compact control. - await page.getByTestId("heute-rhythm").click(); + const rhythm = page.getByTestId("heute-rhythm"); + await expect(rhythm).toBeVisible(); + await expect(async () => { + await rhythm.click(); + await expect(page.getByTestId("heute-rhythm-panel")).toBeVisible(); + }).toPass({ timeout: 15_000 }); const panel = page.getByTestId("heute-rhythm-panel"); - await expect(panel).toBeVisible(); const morning = panel.getByTestId("heute-rhythm-morning"); await expect(morning.getByRole("switch")).not.toBeChecked(); const enabled = page.waitForResponse( diff --git a/apps/web/src/pages/shell/use-mobile-sidebar.ts b/apps/web/src/pages/shell/use-mobile-sidebar.ts index f022181..16847db 100644 --- a/apps/web/src/pages/shell/use-mobile-sidebar.ts +++ b/apps/web/src/pages/shell/use-mobile-sidebar.ts @@ -22,7 +22,6 @@ export function useMobileSidebar() { function onKeyDown(event: KeyboardEvent) { if (event.key !== "Escape" || window.matchMedia("(min-width: 768px)").matches) return; event.preventDefault(); - event.stopPropagation(); setMobileSidebarOpen(false); queueMicrotask(() => { document.querySelector('[data-testid="open-navigation"]')?.focus();