From 4995b66b93a03c5367ffc5d4c85bac471f3e2493 Mon Sep 17 00:00:00 2001 From: cynarAI <155274210+cynarAI@users.noreply.github.com> Date: Fri, 2 Oct 2026 19:16:42 +0200 Subject: [PATCH] fix(e2e): wait for shell-ready before reaction assertions after reload (#95) * fix(e2e): wait for shell-ready before reaction assertions after reload Bootstrap can still be in flight after domcontentloaded on reload; match #94/#87 by waiting on data-ready and the composer before asserting persisted message reactions. Co-authored-by: cynarAI * fix(e2e): shell-ready waits on transport reload and /app redirect Apply waitForChatComposer after messaging-transport reload and allow more time for /app to redirect before asserting the composer. Co-authored-by: cynarAI * ci: retrigger Product CI after team-computer flake Co-authored-by: cynarAI * ci: retrigger Web E2E after runner OOM (exit 137) Co-authored-by: cynarAI --------- Co-authored-by: Cursor Agent Co-authored-by: cynarAI (cherry picked from commit 6248b6c0c9b2dd07563dbac981bd43032d324989) --- apps/web/e2e/composer-paste.spec.ts | 2 +- apps/web/e2e/message-hover-actions.spec.ts | 4 +++- apps/web/e2e/messaging-transport.spec.ts | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/web/e2e/composer-paste.spec.ts b/apps/web/e2e/composer-paste.spec.ts index 6574fdf..aa607b0 100644 --- a/apps/web/e2e/composer-paste.spec.ts +++ b/apps/web/e2e/composer-paste.spec.ts @@ -6,7 +6,7 @@ async function openComposer(page: Page) { await signup(page, `composer-paste-${stamp}@rakazo.test`, "password12", "Paste Test"); await completeOnboarding(page); await page.goto("/app", { waitUntil: "domcontentloaded" }); - await page.waitForURL(/\/app\/[^/]+$/); + await page.waitForURL(/\/app\/[^/]+$/, { timeout: 60_000 }); await waitForChatComposer(page); return page.getByRole("combobox", { name: /Message/ }); } diff --git a/apps/web/e2e/message-hover-actions.spec.ts b/apps/web/e2e/message-hover-actions.spec.ts index 47b5caf..6fd480e 100644 --- a/apps/web/e2e/message-hover-actions.spec.ts +++ b/apps/web/e2e/message-hover-actions.spec.ts @@ -1,5 +1,5 @@ import { expect, type Locator, type Page, type Route, test } from "@playwright/test"; -import { captureScreenshot, completeOnboarding, signup } from "./helpers"; +import { captureScreenshot, completeOnboarding, signup, waitForChatComposer } from "./helpers"; /** Submit from the Send control so an in-flight prior send cannot swallow Enter. */ async function sendComposerMessage(page: Page, composer: Locator, text: string) { @@ -254,6 +254,8 @@ test("message hover shows beside-bubble actions; reply links to parent", async ( await expect(parentRow.getByTestId("message-reactions")).toContainText("❤️ 2"); await captureScreenshot(page, testInfo, "message-multiple-reactions"); await page.reload({ waitUntil: "domcontentloaded" }); + await waitForChatComposer(page); + await expect(parentRow).toBeVisible({ timeout: 20_000 }); await expect(parentRow.getByTestId("message-reactions")).toContainText("❤️ 2"); await expect(parentRow.getByTestId("message-reactions")).toContainText("👍"); diff --git a/apps/web/e2e/messaging-transport.spec.ts b/apps/web/e2e/messaging-transport.spec.ts index 48273a4..b070384 100644 --- a/apps/web/e2e/messaging-transport.spec.ts +++ b/apps/web/e2e/messaging-transport.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from "@playwright/test"; -import { captureScreenshot, completeOnboarding, signup } from "./helpers"; +import { captureScreenshot, completeOnboarding, signup, waitForChatComposer } from "./helpers"; type ThreadPayload = { json?: { @@ -68,7 +68,7 @@ test("labels a Sendblue group message with its actual transport", async ({ page await page.route("**/rpc/threads/get", fulfillWithInjection); await page.reload({ waitUntil: "domcontentloaded" }); - await expect(page.getByRole("combobox", { name: /^Message/ })).toBeVisible({ timeout: 20_000 }); + await waitForChatComposer(page); const transportMessage = page.getByText("SMS · Alice: Dinner is at seven."); await expect(transportMessage).toBeVisible({ timeout: 20_000 }); await captureScreenshot(page, testInfo, "sendblue-sms-transport");