michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: /** michael@0: * Test if the summary text displayed in the network requests menu footer michael@0: * is correct. michael@0: */ michael@0: michael@0: function test() { michael@0: requestLongerTimeout(2); michael@0: let { PluralForm } = Cu.import("resource://gre/modules/PluralForm.jsm", {}); michael@0: michael@0: initNetMonitor(FILTERING_URL).then(([aTab, aDebuggee, aMonitor]) => { michael@0: info("Starting test... "); michael@0: michael@0: let { $, L10N, NetMonitorView } = aMonitor.panelWin; michael@0: let { RequestsMenu } = NetMonitorView; michael@0: michael@0: RequestsMenu.lazyUpdate = false; michael@0: testStatus(); michael@0: michael@0: waitForNetworkEvents(aMonitor, 8).then(() => { michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-html-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-css-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-js-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-xhr-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-fonts-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-images-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-media-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-flash-button")); michael@0: testStatus(); michael@0: michael@0: info("Performing more requests."); michael@0: aDebuggee.performRequests('{ "getMedia": true, "getFlash": true }'); michael@0: return waitForNetworkEvents(aMonitor, 8); michael@0: }) michael@0: .then(() => { michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-html-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-css-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-js-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-xhr-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-fonts-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-images-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-media-button")); michael@0: testStatus(); michael@0: michael@0: EventUtils.sendMouseEvent({ type: "click" }, $("#requests-menu-filter-flash-button")); michael@0: testStatus(); michael@0: michael@0: teardown(aMonitor).then(finish); michael@0: }) michael@0: michael@0: function testStatus() { michael@0: let summary = $("#requests-menu-network-summary-label"); michael@0: let value = summary.getAttribute("value"); michael@0: info("Current summary: " + value); michael@0: michael@0: let visibleItems = RequestsMenu.visibleItems; michael@0: let visibleRequestsCount = visibleItems.length; michael@0: let totalRequestsCount = RequestsMenu.itemCount; michael@0: info("Current requests: " + visibleRequestsCount + " of " + totalRequestsCount + "."); michael@0: michael@0: if (!totalRequestsCount || !visibleRequestsCount) { michael@0: is(value, L10N.getStr("networkMenu.empty"), michael@0: "The current summary text is incorrect, expected an 'empty' label."); michael@0: return; michael@0: } michael@0: michael@0: let totalBytes = RequestsMenu._getTotalBytesOfRequests(visibleItems); michael@0: let totalMillis = michael@0: RequestsMenu._getNewestRequest(visibleItems).attachment.endedMillis - michael@0: RequestsMenu._getOldestRequest(visibleItems).attachment.startedMillis; michael@0: michael@0: info("Computed total bytes: " + totalBytes); michael@0: info("Computed total millis: " + totalMillis); michael@0: michael@0: is(value, PluralForm.get(visibleRequestsCount, L10N.getStr("networkMenu.summary")) michael@0: .replace("#1", visibleRequestsCount) michael@0: .replace("#2", L10N.numberWithDecimals((totalBytes || 0) / 1024, 2)) michael@0: .replace("#3", L10N.numberWithDecimals((totalMillis || 0) / 1000, 2)) michael@0: , "The current summary text is incorrect.") michael@0: } michael@0: michael@0: aDebuggee.performRequests('{ "getMedia": true, "getFlash": true }'); michael@0: }); michael@0: }