From dbc4780a082e87ee9408e19722e49e3db25944fa Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Thu, 24 Sep 2026 19:56:33 +0530 Subject: [PATCH] test(desktop): poll for 'listening' after re-arm in voice rearm tests status flips to 'listening' only after handle.start() resolves, so the synchronous assertion right after waitFor(start x2) raced (2/9 flakes on 'speaks completed fallback sentences before the response finishes'). Wrap it in waitFor; same assertion, no longer timing-dependent. --- .../composer/hooks/use-voice-conversation-rearm.test.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/desktop/src/app/chat/composer/hooks/use-voice-conversation-rearm.test.tsx b/apps/desktop/src/app/chat/composer/hooks/use-voice-conversation-rearm.test.tsx index b5d3ee8f9c..f4b55824c7 100644 --- a/apps/desktop/src/app/chat/composer/hooks/use-voice-conversation-rearm.test.tsx +++ b/apps/desktop/src/app/chat/composer/hooks/use-voice-conversation-rearm.test.tsx @@ -235,7 +235,8 @@ describe('useVoiceConversation playback rearm', () => { }) await waitFor(() => expect(mocks.handle.start).toHaveBeenCalledTimes(2)) - expect(hook.result.current.status).toBe('listening') + // status flips to 'listening' only after start() resolves — poll for it. + await waitFor(() => expect(hook.result.current.status).toBe('listening')) }) it('honors Stop while streaming playback is still preparing', async () => { @@ -301,7 +302,8 @@ describe('useVoiceConversation playback rearm', () => { }) ) await waitFor(() => expect(mocks.handle.start).toHaveBeenCalledTimes(2)) - expect(hook.result.current.status).toBe('listening') + // status flips to 'listening' only after start() resolves — poll for it. + await waitFor(() => expect(hook.result.current.status).toBe('listening')) }) it('speaks completed fallback sentences before the response finishes', async () => { @@ -327,7 +329,8 @@ describe('useVoiceConversation playback rearm', () => { }) ) await waitFor(() => expect(mocks.handle.start).toHaveBeenCalledTimes(2)) - expect(hook.result.current.status).toBe('listening') + // status flips to 'listening' only after start() resolves — poll for it. + await waitFor(() => expect(hook.result.current.status).toBe('listening')) }) it('does not play the next fallback sentence or re-arm after Stop', async () => {