@@ -93,7 +93,31 @@ describe('SessionTracker test', () => {
9393 const session = sessionTracker . session ;
9494 expect ( session . sessionIndex ) . toBe ( 1 ) ;
9595 expect ( session . sessionId ) . not . toBeUndefined ( ) ;
96- expect ( session . isNewSession ( ) ) . toBeTruthy ( ) ;
96+ expect ( session . isNewSession ( ) ) . toBeFalsy ( ) ;
97+ } ) ;
98+
99+ test ( 'test page appear without page hide will not record session start twice' , ( ) => {
100+ const pageAppearMock = jest . spyOn ( sessionTracker , 'onPageAppear' ) ;
101+ sessionTracker . setUp ( ) ;
102+ expect ( pageAppearMock ) . toBeCalledWith ( true ) ;
103+ expect ( recordMethodMock ) . toBeCalledWith ( {
104+ name : Event . PresetEvent . SESSION_START ,
105+ } ) ;
106+ const session = sessionTracker . session ;
107+ expect ( session . sessionIndex ) . toBe ( 1 ) ;
108+ expect ( session . sessionId ) . not . toBeUndefined ( ) ;
109+ expect ( session . isRecorded ) . toBeTruthy ( ) ;
110+ expect ( session . isNewSession ( ) ) . toBeFalsy ( ) ;
111+
112+ sessionTracker . onPageAppear ( false ) ;
113+ sessionTracker . onPageAppear ( false ) ;
114+ expect ( pageAppearMock ) . toBeCalledWith ( false ) ;
115+ const allCalls = recordMethodMock . mock . calls ;
116+ const sessionStartCalls = allCalls . filter ( ( call : [ any ] ) => {
117+ const [ arg ] = call ;
118+ return arg && arg . name === Event . PresetEvent . SESSION_START ;
119+ } ) ;
120+ expect ( sessionStartCalls . length ) . toBe ( 1 ) ;
97121 } ) ;
98122
99123 test ( 'test first open and session start event has the same sessionId' , ( ) => {
0 commit comments