forked from mirrors/gecko-dev
88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
const baseURL = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"http://example.com"
|
|
);
|
|
|
|
const testFileURL = `${baseURL}file_lazyload_telemetry.html`;
|
|
|
|
const { TelemetryTestUtils } = ChromeUtils.import(
|
|
"resource://testing-common/TelemetryTestUtils.jsm"
|
|
);
|
|
|
|
function pageLoadIsReported() {
|
|
const snapshot = Services.telemetry.getSnapshotForHistograms("main", false)
|
|
.parent;
|
|
return snapshot.FX_LAZYLOAD_IMAGE_PAGE_LOAD_MS;
|
|
}
|
|
|
|
function dataIsReported() {
|
|
const snapshot = Services.telemetry.getSnapshotForHistograms("main", false)
|
|
.content;
|
|
return (
|
|
snapshot.LAZYLOAD_IMAGE_STARTED && snapshot.LAZYLOAD_IMAGE_STARTED.values[4]
|
|
);
|
|
}
|
|
|
|
add_task(async function testTelemetryCollection() {
|
|
Services.telemetry.getHistogramById("LAZYLOAD_IMAGE_TOTAL").clear();
|
|
Services.telemetry.getHistogramById("LAZYLOAD_IMAGE_STARTED").clear();
|
|
Services.telemetry.getHistogramById("LAZYLOAD_IMAGE_NOT_VIEWPORT").clear();
|
|
Services.telemetry
|
|
.getHistogramById("LAZYLOAD_IMAGE_VIEWPORT_LOADING")
|
|
.clear();
|
|
Services.telemetry.getHistogramById("LAZYLOAD_IMAGE_VIEWPORT_LOADED").clear();
|
|
Services.telemetry.getHistogramById("FX_LAZYLOAD_IMAGE_PAGE_LOAD_MS").clear();
|
|
|
|
const testTab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
testFileURL,
|
|
true
|
|
);
|
|
|
|
await SpecialPowers.spawn(
|
|
testTab.linkedBrowser.browsingContext,
|
|
[],
|
|
async () => {
|
|
const image2 = content.document.getElementById("image2");
|
|
image2.scrollIntoView();
|
|
|
|
await new Promise(resolve => {
|
|
content.requestAnimationFrame(() => {
|
|
content.requestAnimationFrame(resolve);
|
|
});
|
|
});
|
|
}
|
|
);
|
|
|
|
await BrowserTestUtils.waitForCondition(pageLoadIsReported);
|
|
|
|
gBrowser.removeTab(testTab);
|
|
|
|
await BrowserTestUtils.waitForCondition(dataIsReported);
|
|
|
|
const snapshot = Services.telemetry.getSnapshotForHistograms("main", false);
|
|
|
|
// Ensures we have 4 lazyload images.
|
|
is(snapshot.content.LAZYLOAD_IMAGE_TOTAL.values[4], 1, "total images");
|
|
// All 4 images should be lazy-loaded.
|
|
is(snapshot.content.LAZYLOAD_IMAGE_STARTED.values[4], 1, "started to load");
|
|
// The last image didn't reach to the viewport.
|
|
is(
|
|
snapshot.content.LAZYLOAD_IMAGE_NOT_VIEWPORT.values[1],
|
|
1,
|
|
"images didn't reach viewport"
|
|
);
|
|
// The sum of the images that reached to the viewport
|
|
// should be three. This includes all images except
|
|
// the last one.
|
|
is(
|
|
snapshot.content.LAZYLOAD_IMAGE_VIEWPORT_LOADING.sum +
|
|
snapshot.content.LAZYLOAD_IMAGE_VIEWPORT_LOADED.sum,
|
|
3,
|
|
"images reached viewport"
|
|
);
|
|
ok(
|
|
snapshot.parent.FX_LAZYLOAD_IMAGE_PAGE_LOAD_MS.sum > 0,
|
|
"lazyload image page load telemetry"
|
|
);
|
|
});
|