browser_net_footer-summary.js (3531B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /** 7 * Test if the summary text displayed in the network requests menu footer is correct. 8 */ 9 10 add_task(async function () { 11 const { 12 getFormattedSize, 13 getFormattedTime, 14 } = require("resource://devtools/client/netmonitor/src/utils/format-utils.js"); 15 16 requestLongerTimeout(2); 17 18 const { tab, monitor } = await initNetMonitor(FILTERING_URL, { 19 requestCount: 1, 20 }); 21 info("Starting test... "); 22 23 const { document, store, windowRequire } = monitor.panelWin; 24 const Actions = windowRequire("devtools/client/netmonitor/src/actions/index"); 25 const { getDisplayedRequestsSummary } = windowRequire( 26 "devtools/client/netmonitor/src/selectors/index" 27 ); 28 const l10n = new Localization(["devtools/client/netmonitor.ftl"], true); 29 30 store.dispatch(Actions.batchEnable(false)); 31 testStatus(); 32 33 for (let i = 0; i < 2; i++) { 34 info(`Performing requests in batch #${i}`); 35 const wait = waitForNetworkEvents(monitor, 8); 36 await SpecialPowers.spawn(tab.linkedBrowser, [], async function () { 37 content.wrappedJSObject.performRequests( 38 '{ "getMedia": true, "getFlash": true }' 39 ); 40 }); 41 await wait; 42 43 testStatus(); 44 45 const buttons = ["html", "css", "js", "xhr", "fonts", "images", "media"]; 46 for (const button of buttons) { 47 const buttonEl = document.querySelector( 48 `.requests-list-filter-${button}-button` 49 ); 50 EventUtils.sendMouseEvent({ type: "click" }, buttonEl); 51 testStatus(); 52 } 53 } 54 55 await teardown(monitor); 56 57 function testStatus() { 58 const state = store.getState(); 59 const totalRequestsCount = state.requests.requests.length; 60 const requestsSummary = getDisplayedRequestsSummary(state); 61 info( 62 `Current requests: ${requestsSummary.count} of ${totalRequestsCount}.` 63 ); 64 65 const countEl = document.querySelector( 66 ".requests-list-network-summary-count" 67 ); 68 info(`Current summary count: ${countEl.textContent}`); 69 70 const expectedCount = l10n.formatValueSync( 71 "network-menu-summary-requests-count", 72 { requestCount: requestsSummary.count } 73 ); 74 75 is( 76 countEl.textContent, 77 expectedCount, 78 "The current summary count is correct." 79 ); 80 81 if (!totalRequestsCount || !requestsSummary.count) { 82 return; 83 } 84 85 const transferEl = document.querySelector( 86 ".requests-list-network-summary-transfer" 87 ); 88 info(`Current summary transfer: ${transferEl.textContent}`); 89 90 const expectedTransfer = l10n.formatValueSync( 91 "network-menu-summary-transferred", 92 { 93 formattedContentSize: getFormattedSize(requestsSummary.contentSize), 94 formattedTransferredSize: getFormattedSize( 95 requestsSummary.transferredSize 96 ), 97 } 98 ); 99 100 is( 101 transferEl.textContent, 102 expectedTransfer, 103 "The current summary transfer is correct." 104 ); 105 106 const finishEl = document.querySelector( 107 ".requests-list-network-summary-finish" 108 ); 109 info(`Current summary finish: ${finishEl.textContent}`); 110 111 const expectedFinish = l10n.formatValueSync("network-menu-summary-finish", { 112 formattedTime: getFormattedTime(requestsSummary.ms), 113 }); 114 115 info(`Computed total bytes: ${requestsSummary.bytes}`); 116 info(`Computed total ms: ${requestsSummary.ms}`); 117 118 is( 119 finishEl.textContent, 120 expectedFinish, 121 "The current summary finish is correct." 122 ); 123 } 124 });