1818import { expect } from 'chai' ;
1919import { LoggerProvider } from '@opentelemetry/sdk-logs' ;
2020import { Logger , LogRecord } from '@opentelemetry/api-logs' ;
21- import { startNewSession } from './helpers' ;
21+ import { isNode } from '@firebase/util' ;
22+ import { registerListeners , startNewSession } from './helpers' ;
2223import {
2324 LOG_ENTRY_ATTRIBUTE_KEYS ,
2425 TELEMETRY_SESSION_ID_KEY
@@ -34,6 +35,7 @@ describe('helpers', () => {
3435 let originalCrypto : Crypto | undefined ;
3536 let storage : Record < string , string > = { } ;
3637 let emittedLogs : LogRecord [ ] = [ ] ;
38+ let flushed = false ;
3739
3840 const fakeLoggerProvider = {
3941 getLogger : ( ) : Logger => {
@@ -43,7 +45,10 @@ describe('helpers', () => {
4345 }
4446 } ;
4547 } ,
46- forceFlush : ( ) => Promise . resolve ( ) ,
48+ forceFlush : ( ) => {
49+ flushed = true ;
50+ return Promise . resolve ( ) ;
51+ } ,
4752 shutdown : ( ) => Promise . resolve ( )
4853 } as unknown as LoggerProvider ;
4954
@@ -96,6 +101,12 @@ describe('helpers', () => {
96101 value : originalCrypto ,
97102 writable : true
98103 } ) ;
104+ if ( ! isNode ( ) ) {
105+ Object . defineProperty ( document , 'visibilityState' , {
106+ value : 'visible' ,
107+ writable : true
108+ } ) ;
109+ }
99110 delete AUTO_CONSTANTS . appVersion ;
100111 } ) ;
101112
@@ -136,4 +147,26 @@ describe('helpers', () => {
136147 } ) ;
137148 } ) ;
138149 } ) ;
150+
151+ describe ( 'registerListeners' , ( ) => {
152+ if ( isNode ( ) ) {
153+ it ( 'should do nothing in node' , ( ) => {
154+ registerListeners ( fakeTelemetry ) ;
155+ } ) ;
156+ } else {
157+ it ( 'should flush logs when the page is hidden' , ( ) => {
158+ registerListeners ( fakeTelemetry ) ;
159+
160+ expect ( flushed ) . to . be . false ;
161+
162+ Object . defineProperty ( document , 'visibilityState' , {
163+ value : 'hidden' ,
164+ writable : true
165+ } ) ;
166+ window . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
167+
168+ expect ( flushed ) . to . be . true ;
169+ } ) ;
170+ }
171+ } ) ;
139172} ) ;
0 commit comments