diff --git a/packages/benchpress/src/metric/perflog_metric.ts b/packages/benchpress/src/metric/perflog_metric.ts index a56bb856cc1..cf22d63905b 100644 --- a/packages/benchpress/src/metric/perflog_metric.ts +++ b/packages/benchpress/src/metric/perflog_metric.ts @@ -238,13 +238,25 @@ export class PerflogMetric extends Metric { events.forEach((event) => { const ph = event['ph']; const name = event['name']; - if (ph === 'B' && name === markName) { + + // Here we are determining if this is the event signaling the start or end of our performance + // testing (this is triggered by us calling #timeBegin and #timeEnd). + // + // Previously, this was done by checking that the event name matched our mark name and that + // the phase was either "B" or "E" ("begin" or "end"). However, for some reason now this is + // showing up as "-bpstart" and "-bpend" ("benchpress start/end"), which is what one would + // actually expect since that is the mark name used in ChromeDriverExtension - see the + // #timeBegin and #timeEnd implementations in chrome_driver_extension.ts. We are not sure why + // the markName didn't show up with the "-bp(start/end)" suffix before. + const isStartEvent = (ph === 'B' && name === markName) || name === markName + '-bpstart'; + const isEndEvent = (ph === 'E' && name === markName) || name === markName + '-bpend'; + if (isStartEvent) { markStartEvent = event; } else if (ph === 'I' && name === 'navigationStart' && !this._ignoreNavigation) { // if a benchmark measures reload of a page, use the last // navigationStart as begin event markStartEvent = event; - } else if (ph === 'E' && name === markName) { + } else if (isEndEvent) { markEndEvent = event; } });