Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
/* import-globals-from helper-telemetry.js */
Services.scriptloader.loadSubScript(
CHROME_URL_ROOT + "helper-telemetry.js",
this
);
/**
* Check that telemetry events are recorded when navigating between different
* about:debugging pages.
*/
add_task(async function () {
// enable USB devices mocks
const mocks = new Mocks();
setupTelemetryTest();
const { tab, document, window } = await openAboutDebugging();
await selectThisFirefoxPage(document, window.AboutDebugging.store);
const sessionId = getOpenEventSessionId();
ok(!isNaN(sessionId), "Open event has a valid session id");
info("Navigate to 'Connect' page");
document.location.hash = "#/connect";
await waitUntil(() => document.querySelector(".qa-connect-page"));
checkSelectPageEvent("connect", sessionId);
info("Navigate to 'USB device runtime' page");
await navigateToUSBRuntime(mocks, document);
checkSelectPageEvent("runtime", sessionId);
await waitForAboutDebuggingRequests(window.AboutDebugging.store);
await removeTab(tab);
});
function checkSelectPageEvent(expectedType, expectedSessionId) {
const evts = readAboutDebuggingEvents().filter(
e => e.method === "select_page"
);
is(evts.length, 1, "Exactly one select_page event recorded");
is(
evts[0].extras.page_type,
expectedType,
"Select page event has the expected type"
);
is(
evts[0].extras.session_id,
expectedSessionId,
"Select page event has the expected session"
);
}
async function navigateToUSBRuntime(mocks, doc) {
mocks.createUSBRuntime("1337id", {
deviceName: "Fancy Phone",
name: "Lorem ipsum",
});
mocks.emitUSBUpdate();
await connectToRuntime("Fancy Phone", doc);
// navigate to it via URL
doc.location.hash = "#/runtime/1337id";
await waitUntil(() => doc.querySelector(".qa-runtime-page"));
}