import { expect, test } from '@playwright/test' import { createAuthenticatedApiContext, createProceduralTree, disposeApiContext, uniqueName, } from './helpers/api' test.describe('procedural session smoke tests', () => { test('auto-starts a procedural session and shows first step', async ({ page }) => { const api = await createAuthenticatedApiContext() const tree = await createProceduralTree(api, { name: uniqueName('PW Procedural Session Flow'), }) try { // Procedural sessions auto-start on page load — no intake form screen or Start button await page.goto(`/flows/${tree.id}/navigate`) // Should see the first step immediately (session auto-creates) await expect(page.getByRole('heading', { name: 'Verify the server is reachable' })).toBeVisible({ timeout: 15000 }) // Should see the Mark Complete & Next button await expect(page.getByRole('button', { name: 'Mark Complete & Next' })).toBeVisible() // Should show step checklist in sidebar await expect(page.getByText('Check the service status')).toBeVisible() await expect(page.getByText('Restart the service if needed')).toBeVisible() } finally { await disposeApiContext(api) } }) test('can advance through steps with Mark Complete & Next', async ({ page }) => { const api = await createAuthenticatedApiContext() const tree = await createProceduralTree(api, { name: uniqueName('PW Step Advance Flow'), steps: [ { id: 'step-1', type: 'procedure_step', title: 'First step to complete', description: 'Do the first thing.', content_type: 'action', }, { id: 'step-2', type: 'procedure_step', title: 'Second step to verify', description: 'Now verify it worked.', content_type: 'verification', }, { id: 'step-end', type: 'procedure_end', title: 'End' }, ], intake_form: [], }) try { await page.goto(`/flows/${tree.id}/navigate`) // First step should be visible (auto-started) await expect(page.getByRole('heading', { name: 'First step to complete' })).toBeVisible({ timeout: 15000 }) // Complete the first step await page.getByRole('button', { name: 'Mark Complete & Next' }).click() // Should advance to second step await expect(page.getByRole('heading', { name: 'Second step to verify' })).toBeVisible({ timeout: 5000 }) } finally { await disposeApiContext(api) } }) })