diff --git a/frontend/e2e/l1-workspace.spec.ts b/frontend/e2e/l1-workspace.spec.ts index fdf7248d..7e5718e9 100644 --- a/frontend/e2e/l1-workspace.spec.ts +++ b/frontend/e2e/l1-workspace.spec.ts @@ -71,14 +71,19 @@ test.describe('L1 Workspace', () => { page.getByRole('heading', { name: /Good (morning|afternoon|evening)/i }), ).toBeVisible() - // Fill in problem statement textarea + // Fill in problem statement textarea. The problem must NOT keyword-match + // any DEFAULT_L1_CATEGORIES token (Phase 2A routes in-category problems to + // an AI-build walk, not ad-hoc) — a custom LOB app is out of scope. const problemTextarea = page.getByPlaceholder("What's the user calling about?") await expect(problemTextarea).toBeVisible() - await problemTextarea.fill('Customer says Outlook is broken after the latest update') + await problemTextarea.fill('Custom LOB billing app crashes on launch for one user') // Click "Start walk →" button await page.getByRole('button', { name: /Start walk/i }).click() + // Out-of-scope prompt offers the free-form fallback — take it + await page.getByRole('button', { name: /Walk it ad-hoc/i }).click() + // Should navigate to /l1/walk/ await expect(page).toHaveURL(/\/l1\/walk\//, { timeout: 10_000 })