diff dictation/webrtc_test.py @ 280:49e9e591c9bb

Add persistent dictation, prewarmed WebRTC speech input, Copilot SDK routing, animated conversation lifecycle controls, parking, and architecture coverage.
author MrJuneJune <me@mrjunejune.com>
date Tue, 18 Aug 2026 19:14:53 -0700
parents 78699f810817
children
line wrap: on
line diff
--- a/dictation/webrtc_test.py	Mon Aug 17 22:22:36 2026 -0700
+++ b/dictation/webrtc_test.py	Tue Aug 18 19:14:53 2026 -0700
@@ -60,6 +60,16 @@
 
 class WebRtcTest(unittest.IsolatedAsyncioTestCase):
     async def test_audio_track_returns_transcript_events(self):
+        loop_errors = []
+        loop = asyncio.get_running_loop()
+        previous_exception_handler = loop.get_exception_handler()
+        loop.set_exception_handler(
+            lambda _loop, context: loop_errors.append(context)
+        )
+        self.addCleanup(
+            loop.set_exception_handler,
+            previous_exception_handler,
+        )
         service = DictationService(test_config(), FakeTranscriber())
         await service.start()
         client = RTCPeerConnection()
@@ -131,11 +141,17 @@
             self.assertIn("speech.started", event_types)
             self.assertIn("transcript.partial", event_types)
             self.assertIn("transcript.final", event_types)
+            channel.send("commit")
+            await asyncio.sleep(0.2)
+            self.assertNotEqual(client.connectionState, "closed")
+            self.assertIn(answer["sessionId"], service.sessions)
         finally:
             await client.close()
             await service.close()
+            await asyncio.sleep(0.6)
             Path(audio_file.name).unlink(missing_ok=True)
         self.assertEqual(service.sessions, {})
+        self.assertEqual(loop_errors, [])
 
 
 if __name__ == "__main__":