-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
settings.d.ts
131 lines (119 loc) · 6.94 KB
/
settings.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
* @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;
}