@@ -511,6 +511,57 @@ describe('Integration | coreHandlers | handleGlobalEvent', () => {
511511 expect ( resetReplayIdSpy ) . toHaveBeenCalledTimes ( 1 ) ;
512512 } ) ;
513513
514+ it ( 'does not reset replayId on DSC for expired buffer session with segmentId 0' , ( ) => {
515+ const now = Date . now ( ) ;
516+
517+ replay . session = makeSession ( {
518+ id : 'test-session-id' ,
519+ segmentId : 0 ,
520+ lastActivity : now - SESSION_IDLE_EXPIRE_DURATION - 1 ,
521+ started : now - SESSION_IDLE_EXPIRE_DURATION - 1 ,
522+ sampled : 'buffer' ,
523+ } ) ;
524+
525+ replay [ '_isPaused' ] = true ;
526+
527+ const resetReplayIdSpy = vi . spyOn (
528+ resetReplayIdOnDynamicSamplingContextModule ,
529+ 'resetReplayIdOnDynamicSamplingContext' ,
530+ ) ;
531+
532+ const errorEvent = Error ( ) ;
533+ handleGlobalEventListener ( replay ) ( errorEvent , { } ) ;
534+
535+ // Should NOT reset DSC: buffer sessions with segmentId 0 are kept alive
536+ // even when time-expired (shouldRefreshSession carve-out)
537+ expect ( resetReplayIdSpy ) . not . toHaveBeenCalled ( ) ;
538+ } ) ;
539+
540+ it ( 'resets replayId on DSC for expired buffer session with segmentId > 0' , ( ) => {
541+ const now = Date . now ( ) ;
542+
543+ replay . session = makeSession ( {
544+ id : 'test-session-id' ,
545+ segmentId : 1 ,
546+ lastActivity : now - SESSION_IDLE_EXPIRE_DURATION - 1 ,
547+ started : now - SESSION_IDLE_EXPIRE_DURATION - 1 ,
548+ sampled : 'buffer' ,
549+ } ) ;
550+
551+ replay [ '_isPaused' ] = true ;
552+
553+ const resetReplayIdSpy = vi . spyOn (
554+ resetReplayIdOnDynamicSamplingContextModule ,
555+ 'resetReplayIdOnDynamicSamplingContext' ,
556+ ) ;
557+
558+ const errorEvent = Error ( ) ;
559+ handleGlobalEventListener ( replay ) ( errorEvent , { } ) ;
560+
561+ // Buffer session with segmentId > 0 that is expired SHOULD have DSC reset
562+ expect ( resetReplayIdSpy ) . toHaveBeenCalledTimes ( 1 ) ;
563+ } ) ;
564+
514565 it ( 'resets replayId on DSC when replay is disabled and session has expired' , ( ) => {
515566 const now = Date . now ( ) ;
516567
0 commit comments