forked from mirrors/gecko-dev
		
	waitForDispatch & waitForRequestsToSettle are both defined by the shared mochitest/helpers.js file from the debugger. Need to namespace the ones in aboutdebugging to avoid clashes Differential Revision: https://phabricator.services.mozilla.com/D107674
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 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"));
 | 
						|
}
 |