diff options
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_throttle.js')
-rw-r--r-- | devtools/client/netmonitor/test/browser_net_throttle.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_throttle.js b/devtools/client/netmonitor/test/browser_net_throttle.js new file mode 100644 index 0000000000..dcdfde3ec7 --- /dev/null +++ b/devtools/client/netmonitor/test/browser_net_throttle.js @@ -0,0 +1,60 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Network throttling integration test. + +"use strict"; + +requestLongerTimeout(2); + +add_task(async function () { + await throttleTest({ throttle: true, addLatency: true }); + await throttleTest({ throttle: true, addLatency: false }); + await throttleTest({ throttle: false, addLatency: false }); +}); + +async function throttleTest(options) { + const { throttle, addLatency } = options; + const { monitor } = await initNetMonitor(SIMPLE_URL, { requestCount: 1 }); + const { store, windowRequire, connector } = monitor.panelWin; + const { ACTIVITY_TYPE } = windowRequire( + "devtools/client/netmonitor/src/constants" + ); + const { updateNetworkThrottling, triggerActivity } = connector; + const { getSortedRequests } = windowRequire( + "devtools/client/netmonitor/src/selectors/index" + ); + + info(`Starting test... (throttle = ${throttle}, addLatency = ${addLatency})`); + + // When throttling, must be smaller than the length of the content + // of SIMPLE_URL in bytes. + const size = throttle ? 200 : 0; + const latency = addLatency ? 100 : 0; + + const throttleProfile = { + latency, + download: size, + upload: 10000, + }; + + info("sending throttle request"); + + await updateNetworkThrottling(true, throttleProfile); + + const wait = waitForNetworkEvents(monitor, 1); + await triggerActivity(ACTIVITY_TYPE.RELOAD.WITH_CACHE_DISABLED); + await wait; + + await waitForRequestData(store, ["eventTimings"]); + + const requestItem = getSortedRequests(store.getState())[0]; + const reportedOneSecond = requestItem.eventTimings.timings.receive > 1000; + if (throttle) { + ok(reportedOneSecond, "download reported as taking more than one second"); + } else { + ok(!reportedOneSecond, "download reported as taking less than one second"); + } + + await teardown(monitor); +} |