forked from mirrors/gecko-dev
72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
"use strict";
|
|
|
|
/**
|
|
* Tests that timings for requests from the service workers are displayed correctly.
|
|
*/
|
|
add_task(async function testServiceWorkerTimings() {
|
|
// Service workers only work on https
|
|
const TEST_URL = HTTPS_EXAMPLE_URL + "service-workers/status-codes.html";
|
|
const { tab, monitor } = await initNetMonitor(TEST_URL, {
|
|
enableCache: true,
|
|
requestCount: 1,
|
|
});
|
|
info("Starting test... ");
|
|
|
|
const { document, store, windowRequire } = monitor.panelWin;
|
|
const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
|
|
|
|
store.dispatch(Actions.batchEnable(false));
|
|
|
|
info("Registering the service worker...");
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
|
|
await content.wrappedJSObject.registerServiceWorker();
|
|
});
|
|
|
|
info("Performing requests which are intercepted by service worker...");
|
|
await performRequests(monitor, tab, 1);
|
|
|
|
const timingsSelector =
|
|
"#timings-panel .tabpanel-summary-container.service-worker";
|
|
wait = waitForDOM(document, timingsSelector, 3);
|
|
|
|
AccessibilityUtils.setEnv({
|
|
// Keyboard users will will see the sidebar when the request row is
|
|
// selected. Accessibility is handled on the container level.
|
|
actionCountRule: false,
|
|
interactiveRule: false,
|
|
labelRule: false,
|
|
});
|
|
EventUtils.sendMouseEvent(
|
|
{ type: "click" },
|
|
document.querySelectorAll(".request-list-item")[0]
|
|
);
|
|
AccessibilityUtils.resetEnv();
|
|
|
|
store.dispatch(Actions.toggleNetworkDetails());
|
|
|
|
clickOnSidebarTab(document, "timings");
|
|
await wait;
|
|
|
|
const timings = document.querySelectorAll(timingsSelector, 3);
|
|
// Note: The specific timing numbers change so this only asserts that the
|
|
// timings are visible
|
|
ok(
|
|
timings[0].textContent.includes("Startup"),
|
|
"The service worker timing for launch of the service worker is visible"
|
|
);
|
|
ok(
|
|
timings[1].textContent.includes("Dispatch fetch:"),
|
|
"The service worker timing for dispatching the fetch event is visible"
|
|
);
|
|
ok(
|
|
timings[2].textContent.includes("Handle fetch:"),
|
|
"The service worker timing for handling the fetch event is visible"
|
|
);
|
|
|
|
info("Unregistering the service worker...");
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
|
|
await content.wrappedJSObject.unregisterServiceWorker();
|
|
});
|
|
|
|
await teardown(monitor);
|
|
});
|