1
0
Fork 0
firefox/dom/base/test/browser_page_load_event_telemetry.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

60 lines
1.7 KiB
JavaScript

"use strict";
const { TelemetryTestUtils } = ChromeUtils.importESModule(
"resource://testing-common/TelemetryTestUtils.sys.mjs"
);
const ALL_CHANNELS = Ci.nsITelemetry.DATASET_ALL_CHANNELS;
add_task(async function () {
if (Services.prefs.getBoolPref("telemetry.fog.artifact_build", false)) {
Assert.ok(true, "Test skipped in artifact builds. See bug 1836686.");
return;
}
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
waitForLoad: true,
});
let browser = tab.linkedBrowser;
// Reset event counts.
Services.telemetry.clearEvents();
TelemetryTestUtils.assertNumberOfEvents(0);
// Check for pageload ping and pageload event
await GleanPings.pageload.testSubmission(
reason => {
Assert.equal(reason, "threshold");
let record = Glean.perf.pageLoad.testGetValue();
Assert.greaterOrEqual(
record.length,
30,
"Should have at least 30 page load events"
);
// Ensure the events in the pageload ping are reasonable.
record.forEach(entry => {
Assert.equal(entry.name, "page_load");
Assert.greater(parseInt(entry.extra.load_time), 0);
Assert.ok(
entry.extra.using_webdriver,
"Webdriver field should be set to true."
);
});
},
async () => {
// Perform page load 30 times to trigger the ping being sent
for (let i = 0; i < 30; i++) {
BrowserTestUtils.startLoadingURIString(browser, "https://example.com");
await BrowserTestUtils.browserLoaded(browser);
}
},
// The ping itself is submitted via idle dispatch, so we need to specify a
// timeout.
1000
);
BrowserTestUtils.removeTab(tab);
});