53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
/* 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 { logTest } = require("./utils/profiling");
|
|
|
|
module.exports = logTest(
|
|
"dns lookup pageload",
|
|
async function (context, commands) {
|
|
context.log.info("Starting a pageload to measure DNS lookup time");
|
|
|
|
const testType = `${context.options.browsertime.test_type}`;
|
|
context.log.info("testType: " + testType);
|
|
|
|
const url = "https://httpstat.us/";
|
|
|
|
await commands.navigate("about:blank");
|
|
|
|
// Idle to allow for confirmation
|
|
await commands.wait.byTime(45000);
|
|
|
|
if (testType === "trr_warm") {
|
|
// Ensure the trr connection has been warmed up by making an arbitrary request
|
|
await commands.navigate("https://www.w3.org");
|
|
await commands.wait.byTime(2000);
|
|
}
|
|
|
|
// Start measuring
|
|
await commands.measure.start();
|
|
await commands.navigate(url);
|
|
await commands.measure.stop();
|
|
|
|
let dns_lookup_time = await commands.js.run(`
|
|
return (window.performance.timing.domainLookupEnd - window.performance.timing.domainLookupStart);
|
|
`);
|
|
|
|
let connect_time = await commands.js.run(`
|
|
return (window.performance.timing.connectEnd - window.performance.timing.navigationStart);
|
|
`);
|
|
|
|
context.log.info("dns_lookup_time: " + dns_lookup_time);
|
|
context.log.info("connect_time: " + connect_time);
|
|
|
|
await commands.measure.addObject({
|
|
custom_data: { dns_lookup_time, connect_time },
|
|
});
|
|
|
|
context.log.info("DNS lookup test finished.");
|
|
return true;
|
|
}
|
|
);
|