perfrunner-core
Version:
Automated UI performance test tool to measure performance changes for the web apps and sites
61 lines (60 loc) • 3.21 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setpPerformanceConditions = void 0;
const logger_1 = require("../logger");
const performance_observers_1 = require("./performance-observers");
function setupNetworkConditions(network, pageSession) {
return __awaiter(this, void 0, void 0, function* () {
(0, logger_1.debug)('setting network conditions');
yield pageSession.send('Network.enable');
yield pageSession.send('Network.emulateNetworkConditions', Object.assign(Object.assign({}, network), { offline: false })); // https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-emulateNetworkConditions
});
}
function setupCpuConditions(throttlingRate, pageSession) {
return __awaiter(this, void 0, void 0, function* () {
(0, logger_1.debug)(`setting CPU throttlingRate to ${throttlingRate}X`);
yield pageSession.send('Emulation.setCPUThrottlingRate', { rate: throttlingRate });
});
}
function setupPerformanceObservers(page) {
return __awaiter(this, void 0, void 0, function* () {
(0, logger_1.debug)('setting performanceObservers');
yield page.evaluateOnNewDocument(performance_observers_1.setupObserversStorage);
yield page.evaluateOnNewDocument(performance_observers_1.measureLCP);
});
}
function setupCachePolicy(noCache, page, pageSession) {
return __awaiter(this, void 0, void 0, function* () {
if (noCache) {
(0, logger_1.debug)('setting cache policy...');
yield page.setCacheEnabled(false);
yield pageSession.send('Network.setCacheDisabled', { cacheDisabled: true });
}
});
}
function enablePerformance(pageSession) {
return __awaiter(this, void 0, void 0, function* () {
(0, logger_1.debug)('enabling performance measures');
yield pageSession.send('Performance.enable');
});
}
function setpPerformanceConditions(page, { network, throttlingRate, useCache }) {
return __awaiter(this, void 0, void 0, function* () {
const pageSession = yield page.target().createCDPSession();
yield setupPerformanceObservers(page);
yield setupCachePolicy(!useCache, page, pageSession);
yield setupNetworkConditions(network, pageSession);
yield setupCpuConditions(throttlingRate, pageSession);
yield enablePerformance(pageSession);
});
}
exports.setpPerformanceConditions = setpPerformanceConditions;