import { test, expect } from "@playwright/test"; const BASE_URL = process.env.PLAYWRIGHT_BASE_URL || "http://localhost:3000"; test.setTimeout(300000); test("graph-backed start flow smoke test", async ({ page }) => { await page.goto(BASE_URL); // Page should load without error await expect(page.getByText(/Confidence Engine/i)).toBeVisible(); // Type the scenario const textarea = page.locator("textarea[placeholder*='Describe']"); await textarea.fill( "Complaints increased by 35% while production increased by 40%.", ); await expect(textarea).toHaveValue( "Complaints increased by 35% while production increased by 40%.", ); // Button should be enabled await expect(page.getByRole("button", { name: /Analyse/i })).toBeEnabled(); // Click Analyse and wait for graph-backed result await page.getByRole("button", { name: /Analyse/i }).click(); await expect( page.getByRole("heading", { name: /Selected Question/i }), ).toBeVisible({ timeout: 180000 }); await expect( page.getByRole("heading", { name: /Situation Graph/i }), ).toBeVisible({ timeout: 180000 }); await expect(page.getByText(/Central statement/i)).toBeVisible(); await expect(page.getByText(/Active unknown/i)).toBeVisible(); await expect(page.getByText(/Error:/i)).toHaveCount(0); const rawJsonToggle = page.getByText(/Raw graph JSON/i); await expect(rawJsonToggle).toBeVisible(); await rawJsonToggle.click(); await expect(page.getByText(/centralStatement/i)).toBeVisible(); // Get full body text for verification const bodyText = await page.locator("body").innerText(); console.log("\n=== UI Smoke Test Results ==="); console.log("Page title:", await page.title()); console.log("Body content length:", bodyText.length); // Check key content indicators const hasSelectedQuestion = bodyText.includes("Selected Question"); const hasComplaints = bodyText.includes("Complaint") || bodyText.includes("complaint"); const hasProduction = bodyText.includes("production") || bodyText.includes("Production"); const hasRateContext = bodyText.toLowerCase().includes("rate") || bodyText.toLowerCase().includes("unit") || bodyText.toLowerCase().includes("denominator") || bodyText.toLowerCase().includes("per-unit"); console.log("Has selected question heading:", hasSelectedQuestion); console.log("Has complaints reference:", hasComplaints); console.log("Has production reference:", hasProduction); console.log("Has rate context (rate/unit/denominator):", hasRateContext); // Basic structural checks expect(bodyText.length).toBeGreaterThan(200); expect(hasSelectedQuestion).toBe(true); });