browser_net_overrides_with_debugger.js (5209B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /* import-globals-from network-overrides-test-helpers.js */ 7 Services.scriptloader.loadSubScript( 8 CHROME_URL_ROOT + "network-overrides-test-helpers.js", 9 this 10 ); 11 12 Services.scriptloader.loadSubScript( 13 "chrome://mochitests/content/browser/devtools/client/debugger/test/mochitest/shared-head.js", 14 this 15 ); 16 17 /** 18 * Test network override updates between the network monitor and the debugger. 19 */ 20 21 // From Debugger to Netmonitor: 22 // - add override in the debugger 23 // - switch to netmonitor 24 // - check override is displayed and remove it 25 // - switch back to debugger and check the override is removed 26 add_task(async function setOverrideInDebugger_removeOverrideInNetmonitor() { 27 const { monitor, document } = await setupNetworkOverridesTest(); 28 const toolbox = monitor.toolbox; 29 30 info("Switch to debugger and setup an override for a script"); 31 await toolbox.selectTool("jsdebugger"); 32 const dbg = createDebuggerContext(toolbox); 33 34 await waitForSourcesInSourceTree(dbg, ["script.js"], { 35 noExpand: false, 36 }); 37 38 let overrides = [ 39 ...findAllElementsWithSelector(dbg, ".has-network-override"), 40 ]; 41 is(overrides.length, 0, "No override is displayed in the debugger"); 42 43 info("Select script.js tree node, and add override"); 44 await selectSourceFromSourceTree(dbg, "script.js"); 45 46 const path = prepareFilePicker("script-override.js", window); 47 await triggerSourceTreeContextMenu( 48 dbg, 49 findSourceNodeWithText(dbg, "script.js"), 50 "#node-menu-overrides" 51 ); 52 await writeTextContentToPath(OVERRIDDEN_SCRIPT, path); 53 54 overrides = [...findAllElementsWithSelector(dbg, ".has-network-override")]; 55 is(overrides.length, 1, "An override is now displayed in the debugger"); 56 57 info("Switch back to netmonitor and check if the script is overridden"); 58 await toolbox.selectTool("netmonitor"); 59 const scriptRequest = document.querySelectorAll(".request-list-item")[1]; 60 61 // Assert override column is checked but disabled in context menu 62 await assertOverrideColumnStatus(monitor, { visible: true }); 63 assertOverrideCellStatus(scriptRequest, { overridden: true }); 64 const overrideCell = scriptRequest.querySelector(".requests-list-override"); 65 ok( 66 overrideCell.getAttribute("title").includes("script-override.js"), 67 "The override icon's title contains the overridden path" 68 ); 69 70 // Remove Network override 71 await removeNetworkOverride(monitor, scriptRequest); 72 ok( 73 !scriptRequest.querySelector(".requests-list-override"), 74 "There is no override cell" 75 ); 76 77 info("Switch back to debugger and check the override was removed"); 78 await toolbox.selectTool("jsdebugger"); 79 overrides = [...findAllElementsWithSelector(dbg, ".has-network-override")]; 80 is(overrides.length, 0, "No override is displayed in the debugger"); 81 82 info("Switch back to netmonitor and tear down the test"); 83 await toolbox.selectTool("netmonitor"); 84 85 return teardown(monitor); 86 }); 87 88 // From Netmonitor to Debugger: 89 // - add override in the netmonitor 90 // - switch to debugger 91 // - check override is displayed and remove it 92 // - switch back to netmonitor and check the override is removed 93 add_task(async function setOverrideInNetmonitor_removeOverrideInDebugger() { 94 const { monitor, document } = await setupNetworkOverridesTest(); 95 const toolbox = monitor.toolbox; 96 97 let scriptRequest = document.querySelectorAll(".request-list-item")[1]; 98 99 info("Set a network override for the script request"); 100 const overrideFileName = "script-override.js"; 101 await setNetworkOverride( 102 monitor, 103 scriptRequest, 104 overrideFileName, 105 OVERRIDDEN_SCRIPT 106 ); 107 108 info("Check that the script request is displayed as overridden"); 109 // Assert override column is checked but disabled in context menu 110 await assertOverrideColumnStatus(monitor, { visible: true }); 111 assertOverrideCellStatus(scriptRequest, { overridden: true }); 112 113 info("Switch to debugger and check the override for a script"); 114 await toolbox.selectTool("jsdebugger"); 115 const dbg = createDebuggerContext(toolbox); 116 117 await waitForSourcesInSourceTree(dbg, ["script.js"], { 118 noExpand: false, 119 }); 120 121 let overrides = [ 122 ...findAllElementsWithSelector(dbg, ".has-network-override"), 123 ]; 124 is(overrides.length, 1, "An override is displayed in the debugger"); 125 126 info("Select script.js tree node, and remove the override"); 127 await selectSourceFromSourceTree(dbg, "script.js"); 128 129 const removed = waitForDispatch(dbg.toolbox.store, "REMOVE_NETWORK_OVERRIDE"); 130 await triggerSourceTreeContextMenu( 131 dbg, 132 findSourceNodeWithText(dbg, "script.js"), 133 "#node-menu-overrides" 134 ); 135 await removed; 136 137 overrides = [...findAllElementsWithSelector(dbg, ".has-network-override")]; 138 is( 139 overrides.length, 140 0, 141 "The override is no longer displayed in the debugger" 142 ); 143 144 info("Switch back to netmonitor and check if the script is overridden"); 145 await toolbox.selectTool("netmonitor"); 146 scriptRequest = document.querySelectorAll(".request-list-item")[1]; 147 148 // Assert override column is now hidden 149 await assertOverrideColumnStatus(monitor, { visible: false }); 150 151 return teardown(monitor); 152 });