import { test, expect } from "@playwright/test"; // QA reference: qa/readonly-state-agent-context.md // Demo source: src/app/demos/readonly-state-agent-context/page.tsx // // The demo publishes three frontend-only values to the agent via // `useAgentContext`: `userName` (default "Atai"), `userTimezone` // (default "America/Los_Angeles"), and `recentActivity` (defaults to // ACTIVITIES[0] "Viewed the pricing page" + ACTIVITIES[2] "Watched the // product demo video"). Suggestion pills render verbatim message bodies: // - "Who am I?" → "What do you know about me from my context?" // - "Suggest next steps" → "Based on my recent activity, what should I try next?" // Both prompts are pinned to deterministic aimock fixtures (see // showcase/aimock/d5-all.json) so the assistant's leading phrase is // stable in CI. On Railway, the same prompts produce a real LLM reply // that mentions the published context fields — proving end-to-end // `useAgentContext` wiring. test.describe("Readonly Agent Context (useAgentContext)", () => { test.setTimeout(90_000); test.beforeEach(async ({ page }) => { await page.goto("/demos/readonly-state-agent-context"); }); test("page loads: context-card + composer render", async ({ page }) => { await expect(page.getByTestId("context-card")).toBeVisible({ timeout: 15_000, }); await expect( page.getByPlaceholder("Ask about your context..."), ).toBeVisible(); }); test("editing name + timezone updates the published JSON preview", async ({ page, }) => { const json = page.getByTestId("ctx-state-json"); // Edit name → "Jamie". await page.getByTestId("ctx-name").fill("Jamie"); await expect(json).toContainText('"name": "Jamie"'); // Change timezone via