lighthouse
Version:
Automated auditing, performance metrics, and best practices for the web.
132 lines (119 loc) • 7.11 kB
TypeScript
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import type {Protocol as Crdp} from 'devtools-protocol/types/protocol.js';
export type Locale = 'en-US'|'en'|'en-AU'|'en-GB'|'en-IE'|'en-SG'|'en-ZA'|'en-IN'|'ar-XB'|'ar'|'bg'|'ca'|'cs'|'da'|'de'|'el'|'en-XA'|'en-XL'|'es'|'es-419'|'es-AR'|'es-BO'|'es-BR'|'es-BZ'|'es-CL'|'es-CO'|'es-CR'|'es-CU'|'es-DO'|'es-EC'|'es-GT'|'es-HN'|'es-MX'|'es-NI'|'es-PA'|'es-PE'|'es-PR'|'es-PY'|'es-SV'|'es-US'|'es-UY'|'es-VE'|'fi'|'fil'|'fr'|'he'|'hi'|'hr'|'hu'|'gsw'|'id'|'in'|'it'|'iw'|'ja'|'ko'|'lt'|'lv'|'mo'|'nl'|'nb'|'no'|'pl'|'pt'|'pt-PT'|'ro'|'ru'|'sk'|'sl'|'sr'|'sr-Latn'|'sv'|'ta'|'te'|'th'|'tl'|'tr'|'uk'|'vi'|'zh'|'zh-HK'|'zh-TW';
/** Simulation settings that control the amount of network & cpu throttling in the run. */
export interface ThrottlingSettings {
/** The round trip time in milliseconds. */
rttMs?: number;
/** The network throughput in kilobits per second. */
throughputKbps?: number;
// devtools settings
/** The network request latency in milliseconds. */
requestLatencyMs?: number;
/** The network download throughput in kilobits per second. */
downloadThroughputKbps?: number;
/** The network upload throughput in kilobits per second. */
uploadThroughputKbps?: number;
// used by both
/** The amount of slowdown applied to the cpu (1/<cpuSlowdownMultiplier>). */
cpuSlowdownMultiplier?: number
}
export interface PrecomputedLanternData {
additionalRttByOrigin: {[origin: string]: number};
serverResponseTimeByOrigin: {[origin: string]: number};
}
export type OutputMode = 'json' | 'html' | 'csv';
export type ScreenEmulationSettings = {
/** Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override. */
width: number;
/** Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override. */
height: number;
/** Overriding device scale factor value. 0 disables the override. */
deviceScaleFactor: number;
/** Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more. */
mobile: boolean;
/** Whether screen emulation is disabled. If true, the other emulation settings are ignored. */
disabled: boolean;
};
/**
* Options that are found in both the flags used by the Lighthouse module
* interface and the Config's `settings` object.
*/
export interface SharedFlagsSettings {
/** The type(s) of report output to be produced. */
output?: OutputMode|OutputMode[];
/** The locale to use for the output. */
locale?: Locale;
/** The maximum amount of time to wait for a page content render, in ms. If no content is rendered within this limit, the run is aborted with an error. */
maxWaitForFcp?: number;
/** The maximum amount of time to wait for a page to load, in ms. */
maxWaitForLoad?: number;
/** List of URL patterns to block. */
blockedUrlPatterns?: string[] | null;
/** Comma-delimited list of trace categories to include. */
additionalTraceCategories?: string | null;
/** Flag indicating the run should only audit. */
auditMode?: boolean | string;
/** Flag indicating the run should only gather. */
gatherMode?: boolean | string;
/** Flag indicating that the browser storage should not be reset for the audit. */
disableStorageReset?: boolean;
/**
* Flag indicating which kinds of browser storage should be reset for the audit.
* Cookies are not cleared by default, so the user isn't logged out.
* indexeddb, websql, and localstorage are not cleared by default to prevent
* loss of potentially important data.
* https://chromedevtools.github.io/debugger-protocol-viewer/tot/Storage/#type-StorageType
*/
clearStorageTypes?: Crdp.Storage.StorageType[];
/** Flag indicating that Lighthouse should pause after page load to wait for the user's permission to continue the audit. */
debugNavigation?: boolean;
/** If set to true, will skip the initial navigation to about:blank. */
skipAboutBlank?: boolean;
/** If set to true, gatherers should avoid any behavior that may be destructive to the page state. (e.g. extra navigations, resizing the viewport) */
usePassiveGathering?: boolean;
/** How Lighthouse should interpret this run in regards to scoring performance metrics and skipping mobile-only tests in desktop. Must be set even if throttling/emulation is being applied outside of Lighthouse. */
formFactor?: 'mobile'|'desktop';
/** Screen emulation properties (width, height, dpr, mobile viewport) to apply or an object of `{disabled: true}` if Lighthouse should avoid applying screen emulation. If either emulation is applied outside of Lighthouse, or it's being run on a mobile device, it typically should be set to disabled. For desktop, we recommend applying consistent desktop screen emulation. */
screenEmulation?: Partial<ScreenEmulationSettings>;
/** User Agent string to apply, `false` to not change the host's UA string, or `true` to use Lighthouse's default UA string. */
emulatedUserAgent?: string | boolean;
/** The method used to throttle the network. */
throttlingMethod?: 'devtools'|'simulate'|'provided';
/** The throttling config settings. */
throttling?: ThrottlingSettings;
/** If present, the run should only conduct this list of audits. */
onlyAudits?: string[] | null;
/** If present, the run should only conduct this list of categories. */
onlyCategories?: string[] | null;
/** If present, the run should skip this list of audits. */
skipAudits?: string[] | null;
/** List of extra HTTP Headers to include. */
extraHeaders?: Record<string, string> | null; // Matches `Protocol.Network.Headers`.
/** How Lighthouse was run, e.g. from the Chrome extension or from the npm module */
channel?: string
/** Precomputed lantern estimates to use instead of observed analysis. */
precomputedLanternData?: PrecomputedLanternData | null;
/** The number of milliseconds to wait after FCP until the page should be considered loaded. */
pauseAfterFcpMs?: number;
/** The number of milliseconds to wait after the load event until the page should be considered loaded. */
pauseAfterLoadMs?: number;
/** The number of milliseconds to wait between high priority network requests or 3 simulataneous requests before the page should be considered loaded. */
networkQuietThresholdMs?: number;
/** The number of milliseconds to wait between long tasks until the page should be considered loaded. */
cpuQuietThresholdMs?: number;
/** The URL to use for the "blank" neutral page in between navigations. Defaults to `about:blank`. */
blankPage?: string;
/** Disables collection of the full page screenshot, which can be rather large and possibly leave the page in an undesirable state. */
disableFullPageScreenshot?: boolean;
/** Disables failing on 404 status code, and instead issues a warning */
ignoreStatusCode?: boolean;
}
export interface ConfigSettings extends Required<SharedFlagsSettings> {
throttling: Required<ThrottlingSettings>;
screenEmulation: ScreenEmulationSettings;
}