60 lines
1.7 KiB
JavaScript
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);
|
|
});
|