@@ -143,6 +143,11 @@ describe("runDiscordGatewayLifecycle", () => {
143143 return { emitter, gateway } ;
144144 }
145145
146+ async function emitGatewayOpenAndWait ( emitter : EventEmitter , delayMs = 30000 ) : Promise < void > {
147+ emitter . emit ( "debug" , "WebSocket connection opened" ) ;
148+ await vi . advanceTimersByTimeAsync ( delayMs ) ;
149+ }
150+
146151 it ( "cleans up thread bindings when exec approvals startup fails" , async ( ) => {
147152 const { runDiscordGatewayLifecycle } = await import ( "./provider.lifecycle.js" ) ;
148153 const { lifecycleParams, start, stop, threadStop, releaseEarlyGatewayErrorGuard } =
@@ -260,12 +265,9 @@ describe("runDiscordGatewayLifecycle", () => {
260265 } ) ;
261266 getDiscordGatewayEmitterMock . mockReturnValueOnce ( emitter ) ;
262267 waitForDiscordGatewayStopMock . mockImplementationOnce ( async ( ) => {
263- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
264- await vi . advanceTimersByTimeAsync ( 30000 ) ;
265- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
266- await vi . advanceTimersByTimeAsync ( 30000 ) ;
267- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
268- await vi . advanceTimersByTimeAsync ( 30000 ) ;
268+ await emitGatewayOpenAndWait ( emitter ) ;
269+ await emitGatewayOpenAndWait ( emitter ) ;
270+ await emitGatewayOpenAndWait ( emitter ) ;
269271 } ) ;
270272
271273 const { lifecycleParams } = createLifecycleHarness ( { gateway } ) ;
@@ -299,22 +301,17 @@ describe("runDiscordGatewayLifecycle", () => {
299301 } ) ;
300302 getDiscordGatewayEmitterMock . mockReturnValueOnce ( emitter ) ;
301303 waitForDiscordGatewayStopMock . mockImplementationOnce ( async ( ) => {
302- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
303- await vi . advanceTimersByTimeAsync ( 30000 ) ;
304+ await emitGatewayOpenAndWait ( emitter ) ;
304305
305306 // Successful reconnect (READY/RESUMED sets isConnected=true), then
306307 // quick drop before the HELLO timeout window finishes.
307308 gateway . isConnected = true ;
308- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
309- await vi . advanceTimersByTimeAsync ( 10 ) ;
309+ await emitGatewayOpenAndWait ( emitter , 10 ) ;
310310 emitter . emit ( "debug" , "WebSocket connection closed with code 1006" ) ;
311311 gateway . isConnected = false ;
312312
313- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
314- await vi . advanceTimersByTimeAsync ( 30000 ) ;
315-
316- emitter . emit ( "debug" , "WebSocket connection opened" ) ;
317- await vi . advanceTimersByTimeAsync ( 30000 ) ;
313+ await emitGatewayOpenAndWait ( emitter ) ;
314+ await emitGatewayOpenAndWait ( emitter ) ;
318315 } ) ;
319316
320317 const { lifecycleParams } = createLifecycleHarness ( { gateway } ) ;
0 commit comments