@@ -79,19 +79,22 @@ async function setupInspectorFrontendHostStub(devToolsPage: DevToolsPage) {
7979 await devToolsPage . reload ( ) ;
8080}
8181
82- function retrieveRecordedHistogramEvents ( page : puppeteer . Page ) : Promise < EnumHistogramEvent [ ] > {
82+ async function retrieveRecordedHistogramEvents ( devToolsPage : DevToolsPage ) : Promise < EnumHistogramEvent [ ] > {
8383 // @ts -expect-error
84- return page . evaluate ( ( ) => window . InspectorFrontendHost . recordedEnumeratedHistograms ) ;
84+ return await devToolsPage . page . evaluate ( ( ) => window . InspectorFrontendHost . recordedEnumeratedHistograms ) ;
8585}
8686
87- function retrieveRecordedPerformanceHistogramEvents ( page : puppeteer . Page ) : Promise < PerformanceHistogramEvent [ ] > {
87+ async function retrieveRecordedPerformanceHistogramEvents ( devToolsPage : DevToolsPage ) :
88+ Promise < PerformanceHistogramEvent [ ] > {
89+ // The reporting happens in a raf
90+ await devToolsPage . drainTaskQueue ( ) ;
8891 // @ts -expect-error
89- return page . evaluate ( ( ) => window . InspectorFrontendHost . recordedPerformanceHistograms ) ;
92+ return await devToolsPage . page . evaluate ( ( ) => window . InspectorFrontendHost . recordedPerformanceHistograms ) ;
9093}
9194
9295async function assertHistogramEventsInclude ( expected : EnumHistogramEvent [ ] , devToolsPage : DevToolsPage ) {
9396 await devToolsPage . waitForFunction ( async ( ) => {
94- const events = await retrieveRecordedHistogramEvents ( devToolsPage . page ) ;
97+ const events = await retrieveRecordedHistogramEvents ( devToolsPage ) ;
9598 try {
9699 assert . includeDeepMembers ( events , expected ) ;
97100 return true ;
@@ -101,10 +104,24 @@ async function assertHistogramEventsInclude(expected: EnumHistogramEvent[], devT
101104 } ) ;
102105}
103106
107+ async function assertHistogramPerformanceEventsInclude ( expected : string [ ] , devToolsPage : DevToolsPage ) {
108+ await devToolsPage . waitForFunction ( async ( ) => {
109+ const events = await retrieveRecordedPerformanceHistogramEvents ( devToolsPage ) ;
110+ try {
111+ for ( const expect of expected ) {
112+ assert . include ( events . map ( e => e . histogramName ) , expect ) ;
113+ }
114+ return true ;
115+ } catch {
116+ return false ;
117+ }
118+ } ) ;
119+ }
120+
104121async function waitForHistogramEvent (
105122 expected : EnumHistogramEventWithOptionalCode , expectedCount = 1 , devToolsPage : DevToolsPage ) {
106123 await devToolsPage . waitForFunction ( async ( ) => {
107- const events = await retrieveRecordedHistogramEvents ( devToolsPage . page ) ;
124+ const events = await retrieveRecordedHistogramEvents ( devToolsPage ) ;
108125 const matchedEvents = events . filter (
109126 e => e . actionName === expected . actionName &&
110127 ( ! ( 'actionCode' in expected ) || e . actionCode === expected . actionCode ) ) ;
@@ -400,11 +417,7 @@ describe('User Metrics', () => {
400417} ) ;
401418
402419describe ( 'User Metric with deferent initial panel' , ( ) => {
403- setup ( {
404- devToolsSettings : {
405- 'panel-selected-tab' : 'network' ,
406- } ,
407- } ) ;
420+ setup ( { panel : 'network' } ) ;
408421
409422 it ( 'dispatches events for view shown at launch' , async ( { devToolsPage} ) => {
410423 await setupInspectorFrontendHostStub ( devToolsPage ) ;
@@ -424,11 +437,9 @@ describe('User Metric with deferent initial panel', () => {
424437 // request that the resetPages helper sets the network as the target panel, and
425438 // we wait for the network in the test. This means, in turn, we get the PanelLoaded
426439 // event.
427- await devToolsPage . waitFor ( '.network' ) ;
428-
429- const events = await retrieveRecordedPerformanceHistogramEvents ( devToolsPage . page ) ;
440+ await devToolsPage . waitFor ( '.network .network-toolbar-container' ) ;
430441
431- assert . include ( events . map ( e => e . histogramName ) , 'DevTools.Launch.Network' ) ;
442+ await assertHistogramPerformanceEventsInclude ( [ 'DevTools.Launch.Network' ] , devToolsPage ) ;
432443 } ) ;
433444} ) ;
434445
0 commit comments