diff --git a/tests/runner-e2e/chat-flow.ts b/tests/runner-e2e/chat-flow.ts index e9e8422cb9b..f45fca22476 100644 --- a/tests/runner-e2e/chat-flow.ts +++ b/tests/runner-e2e/chat-flow.ts @@ -341,12 +341,7 @@ export function assertChatHandoff( export async function sendChatMessage(page: Page, message: string, remainingBudget?: () => number) { const options = () => remainingBudget ? { timeout: remainingBudget() } : {}; const composer = page.getByTestId("task-chat-composer-input").last(); - const takeover = page.getByTestId("task-chat-composer-takeover").last(); - await expect(composer.or(takeover).first()).toBeVisible(options()); - if (await takeover.isVisible()) { - // Close the card's composer view without answering, skipping, or approving it. - await takeover.getByRole("button", { name: /^Dismiss / }).click(options()); - } + await expect(composer).toBeVisible(options()); await composer .locator('[contenteditable="true"], textarea') .first() diff --git a/tests/runner-e2e/chat-message-ui.test.ts b/tests/runner-e2e/chat-message-ui.test.ts new file mode 100644 index 00000000000..590de178ed1 --- /dev/null +++ b/tests/runner-e2e/chat-message-ui.test.ts @@ -0,0 +1,22 @@ +import { expect, it } from "vitest"; +import { chromium } from "@playwright/test"; +import { sendChatMessage } from "./chat-flow.js"; + +it.skipIf(process.env.PAPERCLIP_CHAT_EVAL_MESSAGE_CANARY !== "1")("sends ordinary chat without dismissing a current form on desktop and mobile", async () => { + const browser = await chromium.launch({ headless: true, ...(process.env.PAPERCLIP_RUNNER_E2E_CHROMIUM_EXECUTABLE ? { executablePath: process.env.PAPERCLIP_RUNNER_E2E_CHROMIUM_EXECUTABLE } : {}) }); + try { + for (const viewport of [{ width: 1280, height: 900 }, { width: 390, height: 844 }]) { + const page = await browser.newPage({ viewport }); + await page.setContent(`

Launch page details

`); + const message = "Walk me through the existing form before building anything."; + await sendChatMessage(page, message, () => 5000); + expect(await page.evaluate(() => (window as unknown as { formState: unknown }).formState)).toEqual({ status: "pending", dismissedAt: null, messages: [message] }); + expect(await page.getByTestId("task-chat-composer-takeover").isVisible()).toBe(true); + await page.close(); + } + } finally { await browser.close(); } +});