import { expect, test } from "@playwright/test"; import { handleRunStream, mockLangGraphAPI } from "./utils/mock-api"; test.describe("Chat workspace", () => { test.beforeEach(async ({ page }) => { mockLangGraphAPI(page); }); test("new chat page loads with input box", async ({ page }) => { await page.goto("/workspace/chats/new"); const textarea = page.getByPlaceholder(/how can i assist you/i); await expect(textarea).toBeVisible({ timeout: 15_000 }); }); test("can type a message in the input box", async ({ page }) => { await page.goto("/workspace/chats/new"); const textarea = page.getByPlaceholder(/how can i assist you/i); await expect(textarea).toBeVisible({ timeout: 15_000 }); await textarea.fill("Hello, DeerFlow!"); await expect(textarea).toHaveValue("Hello, DeerFlow!"); }); test("sending a message triggers API call and shows response", async ({ page, }) => { let streamCalled = false; await page.route("**/runs/stream", (route) => { streamCalled = true; return handleRunStream(route); }); await page.goto("/workspace/chats/new"); const textarea = page.getByPlaceholder(/how can i assist you/i); await expect(textarea).toBeVisible({ timeout: 15_000 }); await textarea.fill("Hello"); await textarea.press("Enter"); await expect.poll(() => streamCalled, { timeout: 10_000 }).toBeTruthy(); // The AI response should appear in the chat await expect(page.getByText("Hello from DeerFlow!")).toBeVisible({ timeout: 10_000, }); }); });