summaryrefslogtreecommitdiffstats
path: root/testing/raptor/browsertime/throttled_pageload.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/raptor/browsertime/throttled_pageload.js')
-rw-r--r--testing/raptor/browsertime/throttled_pageload.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/testing/raptor/browsertime/throttled_pageload.js b/testing/raptor/browsertime/throttled_pageload.js
new file mode 100644
index 0000000000..46701b9b59
--- /dev/null
+++ b/testing/raptor/browsertime/throttled_pageload.js
@@ -0,0 +1,56 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* eslint-env node */
+
+const fs = require("fs");
+const path = require("path");
+
+module.exports = async function (context, commands) {
+ context.log.info(
+ "Starting a pageload for which we will first enable the dev tools network throttler"
+ );
+
+ const url = "https://en.wikipedia.org/wiki/Barack_Obama";
+
+ await commands.navigate("about:blank");
+ await commands.wait.byTime(1000);
+
+ // Load the throttling script
+ let throttler_script = null;
+ let throttlerScriptPath = path.join(
+ `${path.resolve(__dirname)}`,
+ "utils",
+ "NetworkThrottlingUtils.js"
+ );
+ try {
+ throttler_script = fs.readFileSync(throttlerScriptPath, "utf8");
+ } catch (error) {
+ throw Error(
+ `Failed to load network throttler script ${throttlerScriptPath}`
+ );
+ }
+
+ // Create a throttler and configure the network
+ let usage = `
+ let networkThrottler = new NetworkThrottler();
+ let throttleData = {
+ latencyMean: 50,
+ latencyMax: 50,
+ downloadBPSMean: 250000,
+ downloadBPSMax: 250000,
+ uploadBPSMean: 250000,
+ uploadBPSMax: 250000
+ };
+ networkThrottler.start(throttleData);
+ `;
+
+ throttler_script += usage;
+ commands.js.runPrivileged(throttler_script);
+
+ await commands.measure.start(url);
+
+ context.log.info("Throttled pageload test finished.");
+ return true;
+};