@@ -58,3 +58,61 @@ index 5918e8f7665b3e796ef88283fc40c2b3286a564f..b9927ba8f639c0a9ecc70144362da439
5858 }
5959 return categories;
6060 }
61+ diff --git a/dist/metrics/extract-navigation-sample.js b/dist/metrics/extract-navigation-sample.js
62+ index 58a0330d018d00223d9cfe0cc353ee3903837df1..fa75690cd7c0f951a9106a9926caa288f6110143 100644
63+ --- a/dist/metrics/extract-navigation-sample.js
64+ +++ b/dist/metrics/extract-navigation-sample.js
65+ @@ -40,6 +40,13 @@ function findPhases(events, markers) {
66+ }
67+ }
68+ else {
69+ + // In headless Chrome on macOS, an initial navigationStart with an empty
70+ + // documentLoaderURL may precede the real page navigation. Update
71+ + // navigationStartArgs if we encounter a navigationStart with a real URL
72+ + // so subsequent markers match the correct navigationId.
73+ + if (event.name === 'navigationStart' && event.args?.data?.documentLoaderURL) {
74+ + navigationStartArgs = event.args;
75+ + }
76+ if (event.name === marker.start) {
77+ const { args } = event;
78+ // ensure this belongs to this navigation
79+ diff --git a/dist/util/inject-mark-observer.js b/dist/util/inject-mark-observer.js
80+ index 0444c9911387202e156d3901e16e1ff092399f75..f7385765297aff2ff6ece7c6164dd1d3de2b0047 100644
81+ --- a/dist/util/inject-mark-observer.js
82+ +++ b/dist/util/inject-mark-observer.js
83+ @@ -54,8 +54,6 @@ function lcpObserver(variable, priorMarker) {
84+ function markObserver(mark, variable) {
85+ return `"use strict";
86+ var ${variable} =
87+ - self === top &&
88+ - opener === null &&
89+ new Promise((resolve) =>
90+ new PerformanceObserver((records, observer) => {
91+ if (records.getEntriesByName(${JSON.stringify(mark)}).length > 0) {
92+ @@ -66,7 +64,7 @@ function markObserver(mark, variable) {
93+ });
94+ observer.disconnect();
95+ }
96+ - }).observe({ type: 'mark' })
97+ + }).observe({ type: 'mark', buffered: true })
98+ );`;
99+ }
100+ function navigationObserver(variable) {
101+ diff --git a/dist/util/run-trace.js b/dist/util/run-trace.js
102+ index 0f49cd51cf789117dd3ad9aea8754293f50a51ff..e428000306cc6553d094441ad5e17660962e06d6 100644
103+ --- a/dist/util/run-trace.js
104+ +++ b/dist/util/run-trace.js
105+ @@ -10,7 +10,12 @@ async function runTrace(page, categories, raceCancellation, usingTracing, path)
106+ page.on('Tracing.tracingComplete', complete);
107+ try {
108+ await performTrace(page, {
109+ - categories: categories.join(','),
110+ + // Use traceConfig instead of deprecated categories string; use
111+ + // recordAsMuchAsPossible to avoid dropping events on ring-buffer overflow.
112+ + traceConfig: {
113+ + recordMode: 'recordAsMuchAsPossible',
114+ + includedCategories: categories,
115+ + },
116+ transferMode: 'ReturnAsStream'
117+ }, usingTracing, (0, race_cancellation_1.combineRaceCancellation)(raceEarlyComplete, raceCancellation));
118+ stream = await waitForTraceStream(completed, raceCancellation);
0 commit comments