@@ -2885,11 +2885,14 @@ describe("google-meet plugin", () => {
28852885 } ) => Promise < void > )
28862886 | undefined ;
28872887 const respond = vi . fn ( ) ;
2888+ vi . useFakeTimers ( ) ;
28882889
2889- await handler ?.( {
2890+ const run = handler ?.( {
28902891 params : { url : "https://meet.google.com/abc-defg-hij" } ,
28912892 respond,
28922893 } ) ;
2894+ await vi . advanceTimersByTimeAsync ( 2_000 ) ;
2895+ await run ;
28932896
28942897 expect ( respond . mock . calls [ 0 ] ?. [ 1 ] ) . toMatchObject ( {
28952898 spoken : false ,
@@ -2905,6 +2908,7 @@ describe("google-meet plugin", () => {
29052908 } ) ;
29062909 expect ( inspectCount ) . toBeGreaterThanOrEqual ( 2 ) ;
29072910 } finally {
2911+ vi . useRealTimers ( ) ;
29082912 Object . defineProperty ( process , "platform" , { value : originalPlatform } ) ;
29092913 }
29102914 } ) ;
@@ -4831,6 +4835,7 @@ describe("google-meet plugin", () => {
48314835 } ) ;
48324836
48334837 it ( "stops paired-node realtime audio after repeated input pull failures" , async ( ) => {
4838+ vi . useFakeTimers ( ) ;
48344839 const bridge = {
48354840 connect : vi . fn ( async ( ) => { } ) ,
48364841 sendAudio : vi . fn ( ) ,
@@ -4860,38 +4865,42 @@ describe("google-meet plugin", () => {
48604865 } ,
48614866 } ;
48624867
4863- const handle = await startNodeRealtimeAudioBridge ( {
4864- config : resolveGoogleMeetConfig ( {
4865- realtime : { provider : "openai" , model : "gpt-realtime" } ,
4866- } ) ,
4867- fullConfig : { } as never ,
4868- runtime : runtime as never ,
4869- meetingSessionId : "meet-1" ,
4870- nodeId : "node-1" ,
4871- bridgeId : "bridge-1" ,
4872- logger : noopLogger ,
4873- providers : [ provider ] ,
4874- } ) ;
4875-
4876- await vi . waitFor (
4877- ( ) => {
4878- expect ( bridge . close ) . toHaveBeenCalled ( ) ;
4879- } ,
4880- { timeout : 3_000 } ,
4881- ) ;
4882- expect ( handle . getHealth ( ) ) . toMatchObject ( {
4883- bridgeClosed : true ,
4884- consecutiveInputErrors : 5 ,
4885- lastInputError : "node invoke timeout" ,
4886- } ) ;
4887- expect ( runtime . nodes . invoke ) . toHaveBeenCalledWith (
4888- expect . objectContaining ( {
4868+ try {
4869+ const handle = await startNodeRealtimeAudioBridge ( {
4870+ config : resolveGoogleMeetConfig ( {
4871+ realtime : { provider : "openai" , model : "gpt-realtime" } ,
4872+ } ) ,
4873+ fullConfig : { } as never ,
4874+ runtime : runtime as never ,
4875+ meetingSessionId : "meet-1" ,
48894876 nodeId : "node-1" ,
4890- command : "googlemeet.chrome" ,
4891- params : { action : "stop" , bridgeId : "bridge-1" } ,
4892- timeoutMs : 5_000 ,
4893- } ) ,
4894- ) ;
4877+ bridgeId : "bridge-1" ,
4878+ logger : noopLogger ,
4879+ providers : [ provider ] ,
4880+ } ) ;
4881+
4882+ await vi . waitFor (
4883+ ( ) => {
4884+ expect ( bridge . close ) . toHaveBeenCalled ( ) ;
4885+ } ,
4886+ { timeout : 3_000 } ,
4887+ ) ;
4888+ expect ( handle . getHealth ( ) ) . toMatchObject ( {
4889+ bridgeClosed : true ,
4890+ consecutiveInputErrors : 5 ,
4891+ lastInputError : "node invoke timeout" ,
4892+ } ) ;
4893+ expect ( runtime . nodes . invoke ) . toHaveBeenCalledWith (
4894+ expect . objectContaining ( {
4895+ nodeId : "node-1" ,
4896+ command : "googlemeet.chrome" ,
4897+ params : { action : "stop" , bridgeId : "bridge-1" } ,
4898+ timeoutMs : 5_000 ,
4899+ } ) ,
4900+ ) ;
4901+ } finally {
4902+ vi . useRealTimers ( ) ;
4903+ }
48954904 } ) ;
48964905
48974906 it ( "exposes node-host list and stop-by-url bridge actions" , async ( ) => {
0 commit comments