UNPKG

pagespeed-quest

Version:

A framework for efficient web front-end speed improvement

73 lines 7.55 kB
import Path from 'path'; import { defaultConfig, desktopConfig } from 'lighthouse'; function execSpecToCommandArgs(spec) { const args = []; // layout if (spec.columns !== undefined) args.push('-u', `layout.columns=${spec.columns}`); // recording if (spec.viewportWidth !== undefined) args.push('-u', `recording.viewportWidth=${spec.viewportWidth}`); if (spec.cpuThrottling !== undefined) args.push('-u', `recording.cpuThrottling=${spec.cpuThrottling}`); if (spec.networkLatencyMs !== undefined) args.push('-u', `recording.network.latencyMs=${spec.networkLatencyMs}`); if (spec.networkThroughputMbps !== undefined) { args.push('-u', `recording.network.uploadThroughputMbps=${spec.networkThroughputMbps}`); args.push('-u', `recording.network.downloadThroughputMbps=${spec.networkThroughputMbps}`); } if (spec.timeoutMs !== undefined) args.push('-u', `recording.timeoutMs=${spec.timeoutMs}`); if (spec.userAgent !== undefined) args.push('-u', `recording.headers.User-Agent=${spec.userAgent}`); // recording.puppeteer const chromeArgs = ['--ignore-certificate-errors']; if (spec.proxyPort !== undefined) { chromeArgs.push(`--proxy-server=http://localhost:${spec.proxyPort}`); } args.push('-u', 'recording.puppeteer.args=' + chromeArgs.join(',')); // credit if (spec.credit) args.push('-u', `banner.vars.credit=${spec.credit}`); return args; } export async function execLoadshow(input, dependency) { const artifactsDir = input.artifactsDir || './artifacts'; const loadshowDir = Path.join(artifactsDir, 'loadshow'); const outputPath = Path.join(artifactsDir, 'loadshow.mp4'); await dependency.mkdirp(loadshowDir); // By form factor const lighthouseByDevice = input.deviceType === 'desktop' ? desktopConfig : defaultConfig; const customByDevice = input.deviceType === 'desktop' ? { columns: 2 } : { columns: 3 }; // Basic spec const userAgent = lighthouseByDevice.settings?.emulatedUserAgent; const spec = { proxyPort: input.proxyPort, columns: customByDevice.columns, viewportWidth: lighthouseByDevice.settings?.screenEmulation?.width, cpuThrottling: lighthouseByDevice.settings?.throttling?.cpuSlowdownMultiplier, userAgent: typeof userAgent === 'string' ? userAgent : undefined, timeoutMs: input.timeout, }; // Sync network conditions with Lighthouse if (input.syncLighthouseSpec) { if (lighthouseByDevice.settings?.throttling?.rttMs) spec.networkLatencyMs = lighthouseByDevice.settings?.throttling?.rttMs; if (lighthouseByDevice.settings?.throttling?.throughputKbps) spec.networkThroughputMbps = lighthouseByDevice.settings?.throttling?.throughputKbps / 1024; } // No throttling if (input.noThrottling) { spec.networkLatencyMs = 0; spec.networkThroughputMbps = 999999; } // Credit spec.credit = input.credit; const args = []; args.push('record'); args.push('-a', loadshowDir); args.push(...execSpecToCommandArgs(spec)); args.push(input.url, outputPath); await dependency.executeLoadshow(args); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZHNob3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9hZHNob3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBMkJ6RCxTQUFTLHFCQUFxQixDQUFDLElBQXNCO0lBQ25ELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQTtJQUV6QixTQUFTO0lBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFakYsWUFBWTtJQUNaLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQ3RHLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO1FBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQ3RHLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSwrQkFBK0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtJQUNoSCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUU7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsMENBQTBDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsNENBQTRDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUE7S0FD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