@@ -28,7 +28,14 @@ jest.mock('@sentry/utils', () => {
2828 } ;
2929} ) ;
3030
31- jest . mock ( '../../src/browser/metrics' ) ;
31+ const mockStartTrackingWebVitals = jest . fn ( ) . mockReturnValue ( ( ) => ( ) => { } ) ;
32+
33+ jest . mock ( '../../src/browser/metrics' , ( ) => ( {
34+ addPerformanceEntries : jest . fn ( ) ,
35+ startTrackingInteractions : jest . fn ( ) ,
36+ startTrackingLongTasks : jest . fn ( ) ,
37+ startTrackingWebVitals : ( ) => mockStartTrackingWebVitals ( ) ,
38+ } ) ) ;
3239
3340const instrumentOutgoingRequestsMock = jest . fn ( ) ;
3441jest . mock ( './../../src/browser/request' , ( ) => {
@@ -57,6 +64,8 @@ describe('BrowserTracing', () => {
5764 hub = new Hub ( new BrowserClient ( options ) ) ;
5865 makeMain ( hub ) ;
5966 document . head . innerHTML = '' ;
67+
68+ mockStartTrackingWebVitals . mockClear ( ) ;
6069 } ) ;
6170
6271 afterEach ( ( ) => {
@@ -371,6 +380,17 @@ describe('BrowserTracing', () => {
371380 jest . advanceTimersByTime ( 2000 ) ;
372381 expect ( mockFinish ) . toHaveBeenCalledTimes ( 1 ) ;
373382 } ) ;
383+
384+ it ( 'calls `_collectWebVitals` if enabled' , ( ) => {
385+ createBrowserTracing ( true , { routingInstrumentation : customInstrumentRouting } ) ;
386+ const transaction = getActiveTransaction ( hub ) as IdleTransaction ;
387+
388+ const span = transaction . startChild ( ) ; // activities = 1
389+ span . finish ( ) ; // activities = 0
390+
391+ jest . advanceTimersByTime ( TRACING_DEFAULTS . idleTimeout ) ;
392+ expect ( mockStartTrackingWebVitals ) . toHaveBeenCalledTimes ( 1 ) ;
393+ } ) ;
374394 } ) ;
375395
376396 describe ( 'heartbeatInterval' , ( ) => {
0 commit comments