import { expect, test } from '@playwright/test'; const MOCKED_ASSISTANT_RESPONSE = '[mocked assistant] This is a deterministic mocked response from the gateway vertical slice.'; test('voice session shell supports the placeholder push-to-talk path', async ({ page }) => { await page.goto('/'); await expect(page.getByTestId('hydration-status')).toHaveText('ready'); await expect(page.getByTestId('connection-state')).toHaveText('not connected'); await expect(page.getByTestId('mic-control-button')).toBeDisabled(); await expect(page.getByTestId('mocked-turn-button')).toHaveCount(0); await page.getByTestId('connect-button').click(); await expect(page.getByTestId('connection-state')).toHaveText('connected'); await expect(page.getByTestId('gateway-session-state')).toHaveText('idle'); await expect(page.getByTestId('mic-control-button')).toBeEnabled(); await page.getByTestId('mic-control-button').dispatchEvent('mousedown'); await expect(page.getByTestId('mic-control-status')).toHaveText('holding'); await expect(page.getByTestId('gateway-session-state')).toHaveText('listening'); await expect(page.getByTestId('partial-transcript')).toHaveText( '[mocked partial] Placeholder push-to-talk transcript in progress.' ); await page.getByTestId('mic-control-button').dispatchEvent('mouseup'); await expect(page.getByTestId('mic-control-status')).toHaveText('idle'); await expect(page.getByTestId('user-transcript')).toHaveText( '[mocked final] Placeholder push-to-talk transcript completed from 1 appended chunk.' ); await expect(page.getByTestId('assistant-response')).toHaveText(MOCKED_ASSISTANT_RESPONSE); await expect(page.getByTestId('partial-transcript')).toHaveText('none'); await expect(page.getByTestId('gateway-session-state')).toHaveText('idle'); await expect(page.getByTestId('mic-control-button')).toBeEnabled(); }); test('voice session shell can cancel a push-to-talk mocked response and start another push-to-talk turn', async ({ page }) => { await page.goto('/'); await expect(page.getByTestId('hydration-status')).toHaveText('ready'); await page.getByTestId('connect-button').click(); await expect(page.getByTestId('connection-state')).toHaveText('connected'); await page.getByTestId('mic-control-button').dispatchEvent('mousedown'); await expect(page.getByTestId('gateway-session-state')).toHaveText('listening'); await page.getByTestId('mic-control-button').dispatchEvent('mouseup'); await expect(page.getByTestId('user-transcript')).toHaveText( '[mocked final] Placeholder push-to-talk transcript completed from 1 appended chunk.' ); await expect(page.getByTestId('cancel-turn-button')).toBeEnabled(); await expect(page.getByTestId('assistant-response')).toContainText('[mocked assistant]'); await page.getByTestId('cancel-turn-button').click(); await expect(page.getByTestId('gateway-session-state')).toHaveText('idle'); await expect(page.getByTestId('mocked-turn-status')).toHaveText('idle'); await expect(page.getByTestId('user-transcript')).toHaveText( '[mocked final] Placeholder push-to-talk transcript completed from 1 appended chunk.' ); await expect(page.getByTestId('assistant-response')).toContainText('[mocked assistant]'); await expect(page.getByTestId('mic-control-button')).toBeEnabled(); await page.getByTestId('mic-control-button').dispatchEvent('mousedown'); await expect(page.getByTestId('gateway-session-state')).toHaveText('listening'); await page.getByTestId('mic-control-button').dispatchEvent('mouseup'); await expect(page.getByTestId('assistant-response')).toHaveText(MOCKED_ASSISTANT_RESPONSE); await expect(page.getByTestId('mocked-turn-status')).toHaveText('idle'); });