browser_aboutdebugging_telemetry_navigate.js (1961B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 /* import-globals-from helper-telemetry.js */ 6 Services.scriptloader.loadSubScript( 7 CHROME_URL_ROOT + "helper-telemetry.js", 8 this 9 ); 10 11 /** 12 * Check that telemetry events are recorded when navigating between different 13 * about:debugging pages. 14 */ 15 add_task(async function () { 16 // enable USB devices mocks 17 const mocks = new Mocks(); 18 19 setupTelemetryTest(); 20 21 const { tab, document, window } = await openAboutDebugging(); 22 await selectThisFirefoxPage(document, window.AboutDebugging.store); 23 24 const sessionId = getOpenEventSessionId(); 25 ok(!isNaN(sessionId), "Open event has a valid session id"); 26 27 info("Navigate to 'Connect' page"); 28 document.location.hash = "#/connect"; 29 await waitUntil(() => document.querySelector(".qa-connect-page")); 30 checkSelectPageEvent("connect", sessionId); 31 32 info("Navigate to 'USB device runtime' page"); 33 await navigateToUSBRuntime(mocks, document); 34 checkSelectPageEvent("runtime", sessionId); 35 await waitForAboutDebuggingRequests(window.AboutDebugging.store); 36 37 await removeTab(tab); 38 }); 39 40 function checkSelectPageEvent(expectedType, expectedSessionId) { 41 const evts = readAboutDebuggingEvents().filter( 42 e => e.method === "select_page" 43 ); 44 is(evts.length, 1, "Exactly one select_page event recorded"); 45 is( 46 evts[0].extras.page_type, 47 expectedType, 48 "Select page event has the expected type" 49 ); 50 is( 51 evts[0].extras.session_id, 52 expectedSessionId, 53 "Select page event has the expected session" 54 ); 55 } 56 57 async function navigateToUSBRuntime(mocks, doc) { 58 mocks.createUSBRuntime("1337id", { 59 deviceName: "Fancy Phone", 60 name: "Lorem ipsum", 61 }); 62 mocks.emitUSBUpdate(); 63 await connectToRuntime("Fancy Phone", doc); 64 // navigate to it via URL 65 doc.location.hash = "#/runtime/1337id"; 66 await waitUntil(() => doc.querySelector(".qa-runtime-page")); 67 }