UNPKG

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
"use strict"; 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;