Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
/**
* Tests if request cause is reported correctly when using source maps.
*/
const CAUSE_FILE_NAME = "html_maps-test-page.html";
const CAUSE_URL = HTTPS_EXAMPLE_URL + CAUSE_FILE_NAME;
const N_EXPECTED_REQUESTS = 4;
add_task(async function () {
// the initNetMonitor function clears the network request list after the
// page is loaded. That's why we first load a bogus page from SIMPLE_URL,
// and only then load the real thing from CAUSE_URL - we want to catch
// all the requests the page is making, not only the XHRs.
// We can't use about:blank here, because initNetMonitor checks that the
// page has actually made at least one request.
const { monitor } = await initNetMonitor(SIMPLE_URL, { requestCount: 1 });
const { document, store, windowRequire } = monitor.panelWin;
const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
store.dispatch(Actions.batchEnable(false));
let waitPromise = waitForNetworkEvents(monitor, N_EXPECTED_REQUESTS);
await navigateTo(CAUSE_URL);
await waitPromise;
info("Clicking item and waiting for details panel to open");
waitPromise = waitForDOM(document, ".network-details-bar");
const xhrRequestItem = document.querySelectorAll(".request-list-item")[3];
EventUtils.sendMouseEvent({ type: "mousedown" }, xhrRequestItem);
await waitPromise;
info("Clicking stack tab and waiting for stack panel to open");
waitPromise = waitForDOM(document, "#stack-trace-panel");
clickOnSidebarTab(document, "stack-trace");
await waitPromise;
info("Waiting for source maps to be applied");
await waitUntil(() => {
const frames = document.querySelectorAll(".frame-link");
return (
frames &&
frames.length >= 2 &&
frames[0].textContent.includes("xhr_original") &&
frames[1].textContent.includes("xhr_original")
);
});
const frames = document.querySelectorAll(".frame-link");
is(frames.length, 3, "should have 3 stack frames");
is(frames[0].textContent, `reallydoxhr xhr_original.js:6`);
is(frames[1].textContent, `doxhr xhr_original.js:10`);
await teardown(monitor);
});