diff options
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_navigate.js')
-rw-r--r-- | devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_navigate.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_navigate.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_navigate.js new file mode 100644 index 0000000000..946f5e9e43 --- /dev/null +++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_navigate.js @@ -0,0 +1,67 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"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")); +} |