summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_throttle.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_throttle.js')
-rw-r--r--devtools/client/netmonitor/test/browser_net_throttle.js60
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);
+}