browser_webconsole_network_attach.js (2043B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const TEST_FILE = "test-network-request.html"; 7 const TEST_PATH = 8 "https://example.com/browser/devtools/client/webconsole/" + "test/browser/"; 9 const TEST_URI = TEST_PATH + TEST_FILE; 10 11 registerCleanupFunction(async function () { 12 await new Promise(resolve => { 13 Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, () => 14 resolve() 15 ); 16 }); 17 }); 18 19 add_task(async function task() { 20 await pushPref("devtools.webconsole.filter.net", false); 21 await pushPref("devtools.webconsole.filter.netxhr", true); 22 await openNewTabAndToolbox(TEST_URI, "netmonitor"); 23 24 const currentTab = gBrowser.selectedTab; 25 const toolbox = gDevTools.getToolboxForTab(currentTab); 26 const panel = toolbox.getCurrentPanel().panelWin; 27 28 const netReady = panel.api.once("NetMonitor:PayloadReady"); 29 30 // Fire an XHR POST request. 31 await SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () { 32 content.wrappedJSObject.testXhrGet(); 33 }); 34 35 info("XHR executed"); 36 37 await netReady; 38 39 info("NetMonitor:PayloadReady received"); 40 41 const { hud } = await toolbox.selectTool("webconsole"); 42 43 const xhrUrl = TEST_PATH + "test-data.json"; 44 const messageNode = await waitFor(() => 45 findMessageByType(hud, xhrUrl, ".network") 46 ); 47 const urlNode = messageNode.querySelector(".url"); 48 info("Network message found."); 49 50 const onReady = hud.ui.once("network-request-payload-ready"); 51 52 // Expand network log 53 urlNode.click(); 54 55 await onReady; 56 57 info("network-request-payload-ready received"); 58 59 await testNetworkMessage(messageNode); 60 await waitForLazyRequests(toolbox); 61 }); 62 63 async function testNetworkMessage(messageNode) { 64 const headersTab = messageNode.querySelector("#headers-tab"); 65 66 ok(headersTab, "Headers tab is available"); 67 68 // Headers tab should be selected by default, so just check its content. 69 await waitUntil(() => 70 messageNode.querySelector("#headers-panel .headers-overview") 71 ); 72 }