lighthouse 13.2.0 → 13.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/cli-flags.js +2 -2
- package/cli/test/smokehouse/lighthouse-runners/bundle.js +7 -3
- package/cli/test/smokehouse/lighthouse-runners/cli.js +5 -1
- package/cli/test/smokehouse/lighthouse-runners/devtools-mcp.js +7 -3
- package/cli/test/smokehouse/lighthouse-runners/devtools.js +4 -1
- package/cli/test/smokehouse/smokehouse.js +7 -2
- package/core/audits/agentic/agent-accessibility-tree.js +1 -1
- package/core/audits/agentic/llms-txt.js +9 -9
- package/core/audits/webmcp-form-coverage.js +2 -2
- package/core/audits/webmcp-registered-tools.js +1 -1
- package/core/audits/webmcp-schema-validity.js +1 -1
- package/core/config/agentic-browsing-config.js +2 -2
- package/core/config/default-config.js +45 -0
- package/core/index.d.ts +0 -1
- package/core/index.js +0 -1
- package/core/lib/baseline/web-features-metadata.json +1 -1
- package/core/lib/deprecations-strings.d.ts +26 -20
- package/core/lib/deprecations-strings.js +7 -0
- package/package.json +9 -9
- package/shared/localization/locales/en-US.json +26 -8
- package/shared/localization/locales/en-XL.json +26 -8
- package/types/internal/smokehouse.d.ts +7 -1
package/cli/cli-flags.js
CHANGED
|
@@ -54,7 +54,7 @@ function getYargsParser(manualArgv) {
|
|
|
54
54
|
'Path to JSON file of HTTP Header key/value pairs to send in requests')
|
|
55
55
|
.example(
|
|
56
56
|
'lighthouse <url> --only-categories=performance,seo',
|
|
57
|
-
'Only run the specified categories. Available categories: accessibility, best-practices, performance, seo')
|
|
57
|
+
'Only run the specified categories. Available categories: accessibility, best-practices, performance, seo, agentic-browsing')
|
|
58
58
|
|
|
59
59
|
// We only have the single string positional argument, the url.
|
|
60
60
|
.option('_', {
|
|
@@ -188,7 +188,7 @@ function getYargsParser(manualArgv) {
|
|
|
188
188
|
array: true,
|
|
189
189
|
type: 'string',
|
|
190
190
|
coerce: splitCommaSeparatedValues,
|
|
191
|
-
describe: 'Only run the specified categories. Available categories: accessibility, best-practices, performance, seo',
|
|
191
|
+
describe: 'Only run the specified categories. Available categories: accessibility, best-practices, performance, seo, agentic-browsing',
|
|
192
192
|
},
|
|
193
193
|
'skip-audits': {
|
|
194
194
|
array: true,
|
|
@@ -80,11 +80,15 @@ async function runBundledLighthouse(url, config, testRunnerOptions) {
|
|
|
80
80
|
const thirdPartyWeb = global.thirdPartyWeb;
|
|
81
81
|
thirdPartyWeb.provideThirdPartyWeb(thirdPartyWebLib);
|
|
82
82
|
|
|
83
|
+
const chromeFlags = [];
|
|
84
|
+
if (testRunnerOptions?.headless) chromeFlags.push('--headless=new');
|
|
85
|
+
if (testRunnerOptions?.chromeFlags) {
|
|
86
|
+
chromeFlags.push(...testRunnerOptions.chromeFlags.split(' '));
|
|
87
|
+
}
|
|
88
|
+
|
|
83
89
|
// Launch and connect to Chrome.
|
|
84
90
|
const launchedChrome = await ChromeLauncher.launch({
|
|
85
|
-
chromeFlags
|
|
86
|
-
testRunnerOptions?.headless ? '--headless=new' : '',
|
|
87
|
-
],
|
|
91
|
+
chromeFlags,
|
|
88
92
|
});
|
|
89
93
|
const port = launchedChrome.port;
|
|
90
94
|
|
|
@@ -66,7 +66,11 @@ async function internalRun(url, tmpPath, config, logger, options) {
|
|
|
66
66
|
'--quiet',
|
|
67
67
|
];
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
let chromeFlags = '';
|
|
70
|
+
if (headless) chromeFlags += '--headless=new ';
|
|
71
|
+
if (options && options.chromeFlags) chromeFlags += options.chromeFlags;
|
|
72
|
+
|
|
73
|
+
if (chromeFlags) args.push(`--chrome-flags="${chromeFlags.trim()}"`);
|
|
70
74
|
|
|
71
75
|
// Config can be optionally provided.
|
|
72
76
|
if (config) {
|
|
@@ -56,11 +56,15 @@ async function runBundledLighthouse(url, config, testRunnerOptions) {
|
|
|
56
56
|
// Load bundle.
|
|
57
57
|
const {navigation} = await import(LH_ROOT + '/dist/lighthouse-devtools-mcp-bundle.js');
|
|
58
58
|
|
|
59
|
+
const chromeFlags = [];
|
|
60
|
+
if (testRunnerOptions?.headless) chromeFlags.push('--headless=new');
|
|
61
|
+
if (testRunnerOptions?.chromeFlags) {
|
|
62
|
+
chromeFlags.push(...testRunnerOptions.chromeFlags.split(' '));
|
|
63
|
+
}
|
|
64
|
+
|
|
59
65
|
// Launch and connect to Chrome.
|
|
60
66
|
const launchedChrome = await ChromeLauncher.launch({
|
|
61
|
-
chromeFlags
|
|
62
|
-
testRunnerOptions?.headless ? '--headless=new' : '',
|
|
63
|
-
],
|
|
67
|
+
chromeFlags,
|
|
64
68
|
});
|
|
65
69
|
const port = launchedChrome.port;
|
|
66
70
|
|
|
@@ -46,9 +46,12 @@ async function setup() {
|
|
|
46
46
|
*/
|
|
47
47
|
async function runLighthouse(url, config, logger, testRunnerOptions) {
|
|
48
48
|
const chromeFlags = [
|
|
49
|
-
testRunnerOptions?.headless ? '--headless=new' : '',
|
|
50
49
|
`--custom-devtools-frontend=file://${devtoolsDir}/out/LighthouseIntegration/gen/front_end`,
|
|
51
50
|
];
|
|
51
|
+
if (testRunnerOptions?.headless) chromeFlags.push('--headless=new');
|
|
52
|
+
if (testRunnerOptions?.chromeFlags) {
|
|
53
|
+
chromeFlags.push(...testRunnerOptions.chromeFlags.split(' '));
|
|
54
|
+
}
|
|
52
55
|
// TODO: `testUrlFromDevtools` should accept a logger, so we get some output even for time outs.
|
|
53
56
|
const {lhr, artifacts, logs} = await testUrlFromDevtools(url, {
|
|
54
57
|
config,
|
|
@@ -136,7 +136,7 @@ function purpleify(str) {
|
|
|
136
136
|
* @return {Promise<SmokehouseResult>}
|
|
137
137
|
*/
|
|
138
138
|
async function runSmokeTest(smokeTestDefn, testOptions) {
|
|
139
|
-
const {id, expectations, config} = smokeTestDefn;
|
|
139
|
+
const {id, expectations, config, testRunnerOptions: customTestRunnerOptions} = smokeTestDefn;
|
|
140
140
|
const {
|
|
141
141
|
lighthouseRunner,
|
|
142
142
|
retries,
|
|
@@ -145,6 +145,11 @@ async function runSmokeTest(smokeTestDefn, testOptions) {
|
|
|
145
145
|
} = testOptions;
|
|
146
146
|
const requestedUrl = expectations.lhr.requestedUrl;
|
|
147
147
|
|
|
148
|
+
const mergedTestRunnerOptions = {
|
|
149
|
+
...testRunnerOptions,
|
|
150
|
+
...customTestRunnerOptions,
|
|
151
|
+
};
|
|
152
|
+
|
|
148
153
|
console.log(`${purpleify(id)} smoketest starting…`);
|
|
149
154
|
|
|
150
155
|
// Rerun test until there's a passing result or retries are exhausted to prevent flakes.
|
|
@@ -170,7 +175,7 @@ async function runSmokeTest(smokeTestDefn, testOptions) {
|
|
|
170
175
|
reject(new Error('Timed out waiting for provided lighthouseRunner')), 1000 * 120);
|
|
171
176
|
});
|
|
172
177
|
const timedResult = await Promise.race([
|
|
173
|
-
lighthouseRunner(requestedUrl, config, logger,
|
|
178
|
+
lighthouseRunner(requestedUrl, config, logger, mergedTestRunnerOptions),
|
|
174
179
|
timeoutPromise,
|
|
175
180
|
]);
|
|
176
181
|
result = {
|
|
@@ -13,7 +13,7 @@ const UIStrings = {
|
|
|
13
13
|
/** Title shown when one or more agent accessibility checks fail. */
|
|
14
14
|
failureTitle: 'Accessibility tree is not well-formed',
|
|
15
15
|
/** Description of a Lighthouse audit that tells the user *why* they need a well-formed accessibility tree. */
|
|
16
|
-
description: 'A well-formed accessibility tree helps AI agents to ' +
|
|
16
|
+
description: 'A well-formed [accessibility tree](http://goo.gle/lighthouse-agentic-a11y) helps AI agents to ' +
|
|
17
17
|
'navigate and interact with the page.',
|
|
18
18
|
/** Label of a table column that identifies the accessibility rule that failed. */
|
|
19
19
|
columnRule: 'Failing Rule',
|
|
@@ -11,15 +11,15 @@ const HTTP_CLIENT_ERROR_CODE_LOW = 400;
|
|
|
11
11
|
const HTTP_SERVER_ERROR_CODE_LOW = 500;
|
|
12
12
|
|
|
13
13
|
const UIStrings = {
|
|
14
|
-
/** Title of a Lighthouse audit that provides detail on the site's llms.txt file. Note: "llms.txt" is a canonical filename and should not be translated. This descriptive title is shown when the llms.txt file
|
|
15
|
-
title: 'llms.txt
|
|
16
|
-
/** Title of a Lighthouse audit that provides detail on the site's llms.txt file. Note: "llms.txt" is a canonical filename and should not be translated. This descriptive title is shown when the llms.txt file
|
|
17
|
-
failureTitle: 'llms.txt
|
|
18
|
-
/** Description of a Lighthouse audit that tells the user *why* they
|
|
19
|
-
description: 'If your llms.txt file
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'[
|
|
14
|
+
/** Title of a Lighthouse audit that provides detail on the site's llms.txt file. Note: "llms.txt" is a canonical filename and should not be translated. This descriptive title is shown when the llms.txt file follows community recommendations. */
|
|
15
|
+
title: 'llms.txt follows recommendations',
|
|
16
|
+
/** Title of a Lighthouse audit that provides detail on the site's llms.txt file. Note: "llms.txt" is a canonical filename and should not be translated. This descriptive title is shown when the llms.txt file does not follow community recommendations. */
|
|
17
|
+
failureTitle: 'llms.txt does not follow recommendations',
|
|
18
|
+
/** Description of a Lighthouse audit that tells the user *why* they should have an llms.txt file. Note: "llms.txt" is a canonical filename and should not be translated. This is displayed after a user expands the section to see more. No character length limits. */
|
|
19
|
+
description: 'If your llms.txt file does not follow recommendations, ' +
|
|
20
|
+
'large language models may not be able to ' +
|
|
21
|
+
'understand how you want your website to be crawled or used for training. The ' +
|
|
22
|
+
'[llms.txt](https://llmstxt.org/) file should be a Markdown file containing at least one H1 header.',
|
|
23
23
|
/**
|
|
24
24
|
* @description Label for the audit identifying that the request failed with a specific HTTP status code.
|
|
25
25
|
* @example {500} statusCode
|
|
@@ -11,8 +11,8 @@ const UIStrings = {
|
|
|
11
11
|
/** Title of a Lighthouse audit that lists forms found in the page for WebMCP coverage. "WebMCP" stands for "Web Model Context Protocol" and should not be translated. */
|
|
12
12
|
title: 'WebMCP form coverage',
|
|
13
13
|
/** Description of a Lighthouse audit that lists forms found in the page and indicates whether they have WebMCP declarative tool annotations. This is displayed after a user expands the section to see more. No character length limits. "WebMCP" stands for "Web Model Context Protocol" and should not be translated. */
|
|
14
|
-
description: 'Consider adding WebMCP annotations to the forms listed below. This helps AI ' +
|
|
15
|
-
'agents identify and interact with these forms more reliably.',
|
|
14
|
+
description: 'Consider adding [WebMCP](http://goo.gle/webmcp-docs) annotations to the forms listed below. This helps AI ' +
|
|
15
|
+
'agents identify and interact with these forms more reliably.',
|
|
16
16
|
/** [ICU Syntax] Label for the audit identifying the number of forms missing annotations. "WebMCP" stands for "Web Model Context Protocol" and should not be translated. */
|
|
17
17
|
displayValue: `{itemCount, plural,
|
|
18
18
|
=1 {1 form missing annotations}
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
/** Title of a Lighthouse audit that lists registered WebMCP tools. "WebMCP" stands for "Web Model Context Protocol" and should not be translated. */
|
|
16
16
|
title: 'WebMCP tools registered',
|
|
17
17
|
/** Description of a Lighthouse audit that lists registered WebMCP tools. This is displayed after a user expands the section to see more. No character length limits. "WebMCP" stands for "Web Model Context Protocol", neither should be translated. */
|
|
18
|
-
description: 'Lists the WebMCP tools registered at the time of analysis.
|
|
18
|
+
description: 'Lists the [WebMCP tools](http://goo.gle/webmcp-docs) registered at the time of analysis.',
|
|
19
19
|
/** Label for a column in a data table; entries will be the name of a WebMCP tool. */
|
|
20
20
|
columnTool: 'Tool name',
|
|
21
21
|
/** Label for a column in a data table; entries will be the description of a WebMCP tool. */
|
|
@@ -13,7 +13,7 @@ const UIStrings = {
|
|
|
13
13
|
/** Title of a Lighthouse audit that provides detail on WebMCP schema validity. This descriptive title is shown to users when there are schema validity issues. "WebMCP" stands for "Web Model Context Protocol" and should not be translated. */
|
|
14
14
|
failureTitle: 'WebMCP schemas are invalid',
|
|
15
15
|
/** Description of a Lighthouse audit that tells the user why they should ensure WebMCP schemas are valid. This is displayed after a user expands the section to see more. No character length limits. "WebMCP" stands for "Web Model Context Protocol" and should not be translated. */
|
|
16
|
-
description: 'Valid WebMCP schemas are required for AI agents to ' +
|
|
16
|
+
description: 'Valid [WebMCP schemas](http://goo.gle/webmcp-docs) are required for AI agents to ' +
|
|
17
17
|
' understand and interact with tools correctly. ' +
|
|
18
18
|
'Please fix any errors or warnings reported by the browser.',
|
|
19
19
|
/** Header of the table column which displays the element. */
|
|
@@ -10,8 +10,8 @@ const UIStrings = {
|
|
|
10
10
|
/** Title of the Agentic Browsing category of audits. */
|
|
11
11
|
agenticBrowsingCategoryTitle: 'Agentic Browsing',
|
|
12
12
|
/** Description of the Agentic Browsing category. */
|
|
13
|
-
agenticBrowsingCategoryDescription: 'These checks ensure high-quality, browsable ' +
|
|
14
|
-
'
|
|
13
|
+
agenticBrowsingCategoryDescription: 'These checks ensure high-quality, [browsable websites for AI agents](https://goo.gle/lighthouse-agentic-web) ' +
|
|
14
|
+
'and validate the correctness of WebMCP integrations. ' +
|
|
15
15
|
'This category is still under development and subject to change.',
|
|
16
16
|
/** Title of the WebMCP group of audits. */
|
|
17
17
|
webmcpGroupTitle: 'WebMCP',
|
|
@@ -100,6 +100,21 @@ const UIStrings = {
|
|
|
100
100
|
bestPracticesBrowserCompatGroupTitle: 'Browser Compatibility',
|
|
101
101
|
/** Title of the General group of the Best Practices category. Within this section are the audits that don't belong to a specific group but are of general interest. */
|
|
102
102
|
bestPracticesGeneralGroupTitle: 'General',
|
|
103
|
+
/** Title of the Agentic Browsing category of audits. */
|
|
104
|
+
agenticBrowsingCategoryTitle: 'Agentic Browsing',
|
|
105
|
+
/** Description of the Agentic Browsing category. */
|
|
106
|
+
agenticBrowsingCategoryDescription: 'These checks ensure high-quality, [browsable websites for AI agents](https://goo.gle/lighthouse-agentic-web) ' +
|
|
107
|
+
'and validate the correctness of WebMCP integrations. ' +
|
|
108
|
+
'This category is still under development and subject to change.',
|
|
109
|
+
/** Title of the WebMCP group of audits. */
|
|
110
|
+
webmcpGroupTitle: 'WebMCP',
|
|
111
|
+
/** Description of the WebMCP group. */
|
|
112
|
+
webmcpGroupDescription: 'Audits validating WebMCP integration.',
|
|
113
|
+
/** Title of the Agent Accessibility group of audits. */
|
|
114
|
+
agentAccessibilityGroupTitle: 'Agent Accessibility',
|
|
115
|
+
/** Description of the Agent Accessibility group of audits. */
|
|
116
|
+
agentAccessibilityGroupDescription: 'These audits highlight best practices for improving the ' +
|
|
117
|
+
'accessibility of the website for AI agents.',
|
|
103
118
|
};
|
|
104
119
|
|
|
105
120
|
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
@@ -108,6 +123,9 @@ const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
|
108
123
|
const defaultConfig = {
|
|
109
124
|
settings: constants.defaultSettings,
|
|
110
125
|
artifacts: [
|
|
126
|
+
{id: 'WebMCP', gatherer: 'webmcp'},
|
|
127
|
+
{id: 'WebMcpSchemaIssues', gatherer: 'webmcp-schema'},
|
|
128
|
+
{id: 'LlmsTxt', gatherer: 'agentic/llms-txt'},
|
|
111
129
|
// Artifacts which can be depended on come first.
|
|
112
130
|
{id: 'DevtoolsLog', gatherer: 'devtools-log'},
|
|
113
131
|
{id: 'Trace', gatherer: 'trace'},
|
|
@@ -279,6 +297,11 @@ const defaultConfig = {
|
|
|
279
297
|
'seo/hreflang',
|
|
280
298
|
'seo/canonical',
|
|
281
299
|
'seo/manual/structured-data',
|
|
300
|
+
'agentic/agent-accessibility-tree',
|
|
301
|
+
'webmcp-registered-tools',
|
|
302
|
+
'webmcp-form-coverage',
|
|
303
|
+
'webmcp-schema-validity',
|
|
304
|
+
'agentic/llms-txt',
|
|
282
305
|
'bf-cache',
|
|
283
306
|
'insights/cache-insight',
|
|
284
307
|
'insights/cls-culprits-insight',
|
|
@@ -366,6 +389,14 @@ const defaultConfig = {
|
|
|
366
389
|
'best-practices-general': {
|
|
367
390
|
title: str_(UIStrings.bestPracticesGeneralGroupTitle),
|
|
368
391
|
},
|
|
392
|
+
'webmcp': {
|
|
393
|
+
title: str_(UIStrings.webmcpGroupTitle),
|
|
394
|
+
description: str_(UIStrings.webmcpGroupDescription),
|
|
395
|
+
},
|
|
396
|
+
'agent-accessibility': {
|
|
397
|
+
title: str_(UIStrings.agentAccessibilityGroupTitle),
|
|
398
|
+
description: str_(UIStrings.agentAccessibilityGroupDescription),
|
|
399
|
+
},
|
|
369
400
|
// Group for audits that should not be displayed.
|
|
370
401
|
'hidden': {title: ''},
|
|
371
402
|
},
|
|
@@ -601,6 +632,20 @@ const defaultConfig = {
|
|
|
601
632
|
{id: 'structured-data', weight: 0},
|
|
602
633
|
],
|
|
603
634
|
},
|
|
635
|
+
'agentic-browsing': {
|
|
636
|
+
title: str_(UIStrings.agenticBrowsingCategoryTitle),
|
|
637
|
+
description: str_(UIStrings.agenticBrowsingCategoryDescription),
|
|
638
|
+
supportedModes: ['navigation', 'snapshot'],
|
|
639
|
+
categoryScoreDisplayMode: 'fraction',
|
|
640
|
+
auditRefs: [
|
|
641
|
+
{id: 'agent-accessibility-tree', weight: 1, group: 'agent-accessibility'},
|
|
642
|
+
{id: 'webmcp-form-coverage', weight: 1, group: 'webmcp'},
|
|
643
|
+
{id: 'webmcp-registered-tools', weight: 1, group: 'webmcp'},
|
|
644
|
+
{id: 'webmcp-schema-validity', weight: 1, group: 'webmcp'},
|
|
645
|
+
{id: 'cumulative-layout-shift', weight: 1, acronym: 'CLS'},
|
|
646
|
+
{id: 'llms-txt', weight: 1, group: 'agent-accessibility'},
|
|
647
|
+
],
|
|
648
|
+
},
|
|
604
649
|
},
|
|
605
650
|
};
|
|
606
651
|
|
package/core/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export { default as Gatherer } from "./gather/base-gatherer.js";
|
|
|
4
4
|
export { NetworkRecords } from "./computed/network-records.js";
|
|
5
5
|
export { default as defaultConfig } from "./config/default-config.js";
|
|
6
6
|
export { default as desktopConfig } from "./config/desktop-config.js";
|
|
7
|
-
export { default as agenticBrowsingConfig } from "./config/agentic-browsing-config.js";
|
|
8
7
|
export * from "../types/lh.js";
|
|
9
8
|
/**
|
|
10
9
|
* Run Lighthouse.
|
package/core/index.js
CHANGED
|
@@ -121,7 +121,6 @@ export {default as Gatherer} from './gather/base-gatherer.js';
|
|
|
121
121
|
export {NetworkRecords} from './computed/network-records.js';
|
|
122
122
|
export {default as defaultConfig} from './config/default-config.js';
|
|
123
123
|
export {default as desktopConfig} from './config/desktop-config.js';
|
|
124
|
-
export {default as agenticBrowsingConfig} from './config/agentic-browsing-config.js';
|
|
125
124
|
export * from '../types/lh.js';
|
|
126
125
|
export {
|
|
127
126
|
startFlow,
|
|
@@ -50,6 +50,7 @@ export namespace UIStrings {
|
|
|
50
50
|
let PrefixedVideoExitFullScreen: string;
|
|
51
51
|
let PrefixedVideoExitFullscreen: string;
|
|
52
52
|
let PrefixedVideoSupportsFullscreen: string;
|
|
53
|
+
let PreventSvgFilterPaint: string;
|
|
53
54
|
let RangeExpand: string;
|
|
54
55
|
let RelatedWebsiteSets: string;
|
|
55
56
|
let RequestedSubresourceWithEmbeddedCredentials: string;
|
|
@@ -237,6 +238,11 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
237
238
|
export { milestone_12 as milestone };
|
|
238
239
|
}
|
|
239
240
|
export { PersistentQuotaType_1 as PersistentQuotaType };
|
|
241
|
+
export namespace PreventSvgFilterPaint_1 {
|
|
242
|
+
let chromeStatusFeature_25: number;
|
|
243
|
+
export { chromeStatusFeature_25 as chromeStatusFeature };
|
|
244
|
+
}
|
|
245
|
+
export { PreventSvgFilterPaint_1 as PreventSvgFilterPaint };
|
|
240
246
|
export namespace RTCConstraintEnableDtlsSrtpFalse_1 {
|
|
241
247
|
let milestone_13: number;
|
|
242
248
|
export { milestone_13 as milestone };
|
|
@@ -248,25 +254,25 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
248
254
|
}
|
|
249
255
|
export { RTCConstraintEnableDtlsSrtpTrue_1 as RTCConstraintEnableDtlsSrtpTrue };
|
|
250
256
|
export namespace RTCPeerConnectionGetStatsLegacyNonCompliant_1 {
|
|
251
|
-
let
|
|
252
|
-
export {
|
|
257
|
+
let chromeStatusFeature_26: number;
|
|
258
|
+
export { chromeStatusFeature_26 as chromeStatusFeature };
|
|
253
259
|
let milestone_15: number;
|
|
254
260
|
export { milestone_15 as milestone };
|
|
255
261
|
}
|
|
256
262
|
export { RTCPeerConnectionGetStatsLegacyNonCompliant_1 as RTCPeerConnectionGetStatsLegacyNonCompliant };
|
|
257
263
|
export namespace RelatedWebsiteSets_1 {
|
|
258
|
-
let
|
|
259
|
-
export {
|
|
264
|
+
let chromeStatusFeature_27: number;
|
|
265
|
+
export { chromeStatusFeature_27 as chromeStatusFeature };
|
|
260
266
|
}
|
|
261
267
|
export { RelatedWebsiteSets_1 as RelatedWebsiteSets };
|
|
262
268
|
export namespace RequestedSubresourceWithEmbeddedCredentials_1 {
|
|
263
|
-
let
|
|
264
|
-
export {
|
|
269
|
+
let chromeStatusFeature_28: number;
|
|
270
|
+
export { chromeStatusFeature_28 as chromeStatusFeature };
|
|
265
271
|
}
|
|
266
272
|
export { RequestedSubresourceWithEmbeddedCredentials_1 as RequestedSubresourceWithEmbeddedCredentials };
|
|
267
273
|
export namespace RtcpMuxPolicyNegotiate_1 {
|
|
268
|
-
let
|
|
269
|
-
export {
|
|
274
|
+
let chromeStatusFeature_29: number;
|
|
275
|
+
export { chromeStatusFeature_29 as chromeStatusFeature };
|
|
270
276
|
let milestone_16: number;
|
|
271
277
|
export { milestone_16 as milestone };
|
|
272
278
|
}
|
|
@@ -277,25 +283,25 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
277
283
|
}
|
|
278
284
|
export { SharedArrayBufferConstructedWithoutIsolation_1 as SharedArrayBufferConstructedWithoutIsolation };
|
|
279
285
|
export namespace SharedStorage_1 {
|
|
280
|
-
let
|
|
281
|
-
export {
|
|
286
|
+
let chromeStatusFeature_30: number;
|
|
287
|
+
export { chromeStatusFeature_30 as chromeStatusFeature };
|
|
282
288
|
}
|
|
283
289
|
export { SharedStorage_1 as SharedStorage };
|
|
284
290
|
export namespace StorageAccessAPI_requestStorageAccessFor_Method_1 {
|
|
285
|
-
let
|
|
286
|
-
export {
|
|
291
|
+
let chromeStatusFeature_31: number;
|
|
292
|
+
export { chromeStatusFeature_31 as chromeStatusFeature };
|
|
287
293
|
}
|
|
288
294
|
export { StorageAccessAPI_requestStorageAccessFor_Method_1 as StorageAccessAPI_requestStorageAccessFor_Method };
|
|
289
295
|
export namespace TextToSpeech_DisallowedByAutoplay_1 {
|
|
290
|
-
let
|
|
291
|
-
export {
|
|
296
|
+
let chromeStatusFeature_32: number;
|
|
297
|
+
export { chromeStatusFeature_32 as chromeStatusFeature };
|
|
292
298
|
let milestone_18: number;
|
|
293
299
|
export { milestone_18 as milestone };
|
|
294
300
|
}
|
|
295
301
|
export { TextToSpeech_DisallowedByAutoplay_1 as TextToSpeech_DisallowedByAutoplay };
|
|
296
302
|
export namespace UnloadHandler_1 {
|
|
297
|
-
let
|
|
298
|
-
export {
|
|
303
|
+
let chromeStatusFeature_33: number;
|
|
304
|
+
export { chromeStatusFeature_33 as chromeStatusFeature };
|
|
299
305
|
}
|
|
300
306
|
export { UnloadHandler_1 as UnloadHandler };
|
|
301
307
|
export namespace V8SharedArrayBufferConstructedInExtensionWithoutIsolation_1 {
|
|
@@ -304,8 +310,8 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
304
310
|
}
|
|
305
311
|
export { V8SharedArrayBufferConstructedInExtensionWithoutIsolation_1 as V8SharedArrayBufferConstructedInExtensionWithoutIsolation };
|
|
306
312
|
export namespace WebBluetoothRemoteCharacteristicWriteValue_1 {
|
|
307
|
-
let
|
|
308
|
-
export {
|
|
313
|
+
let chromeStatusFeature_34: number;
|
|
314
|
+
export { chromeStatusFeature_34 as chromeStatusFeature };
|
|
309
315
|
}
|
|
310
316
|
export { WebBluetoothRemoteCharacteristicWriteValue_1 as WebBluetoothRemoteCharacteristicWriteValue };
|
|
311
317
|
export namespace XHRJSONEncodingDetection_1 {
|
|
@@ -314,8 +320,8 @@ export namespace DEPRECATIONS_METADATA {
|
|
|
314
320
|
}
|
|
315
321
|
export { XHRJSONEncodingDetection_1 as XHRJSONEncodingDetection };
|
|
316
322
|
export namespace XSLT_1 {
|
|
317
|
-
let
|
|
318
|
-
export {
|
|
323
|
+
let chromeStatusFeature_35: number;
|
|
324
|
+
export { chromeStatusFeature_35 as chromeStatusFeature };
|
|
319
325
|
let milestone_21: number;
|
|
320
326
|
export { milestone_21 as milestone };
|
|
321
327
|
}
|
|
@@ -212,6 +212,10 @@ export const UIStrings = {
|
|
|
212
212
|
* @description Standard message when one web API is deprecated in favor of another.
|
|
213
213
|
*/
|
|
214
214
|
PrefixedVideoSupportsFullscreen: "HTMLVideoElement.webkitSupportsFullscreen is deprecated. Please use Document.fullscreenEnabled instead.",
|
|
215
|
+
/**
|
|
216
|
+
* @description Warning displayed to developers when an SVG filter is applied to a disallowed content type.
|
|
217
|
+
*/
|
|
218
|
+
PreventSvgFilterPaint: "SVG filters cannot be applied to cross-origin iframes, restricted iframes (e.g., sandboxed), or plugins.",
|
|
215
219
|
/**
|
|
216
220
|
* @description Standard message when one web API is deprecated in favor of another.
|
|
217
221
|
*/
|
|
@@ -391,6 +395,9 @@ export const DEPRECATIONS_METADATA = {
|
|
|
391
395
|
"chromeStatusFeature": 5176235376246784,
|
|
392
396
|
"milestone": 106
|
|
393
397
|
},
|
|
398
|
+
"PreventSvgFilterPaint": {
|
|
399
|
+
"chromeStatusFeature": 5117170452398080
|
|
400
|
+
},
|
|
394
401
|
"RTCConstraintEnableDtlsSrtpFalse": {
|
|
395
402
|
"milestone": 97
|
|
396
403
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lighthouse",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "13.
|
|
4
|
+
"version": "13.3.0",
|
|
5
5
|
"description": "Automated auditing, performance metrics, and best practices for the web.",
|
|
6
6
|
"main": "./core/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"builtin-modules": "^3.3.0",
|
|
142
142
|
"c8": "^7.11.3",
|
|
143
143
|
"chalk": "^2.4.1",
|
|
144
|
-
"chrome-devtools-frontend": "1.0.
|
|
144
|
+
"chrome-devtools-frontend": "1.0.1625854",
|
|
145
145
|
"colors": "^1.4.0",
|
|
146
146
|
"concurrently": "^9.2.1",
|
|
147
147
|
"conventional-changelog-cli": "^2.1.1",
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
"pako": "^2.1.0",
|
|
171
171
|
"preact": "^10.7.2",
|
|
172
172
|
"pretty-json-stringify": "^0.0.2",
|
|
173
|
-
"puppeteer": "^24.
|
|
173
|
+
"puppeteer": "^24.43.0",
|
|
174
174
|
"resolve": "^1.22.10",
|
|
175
175
|
"rollup-plugin-polyfill-node": "^0.12.0",
|
|
176
176
|
"source-map-support": "^0.5.21",
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"chrome-launcher": "^1.2.1",
|
|
189
189
|
"configstore": "^7.0.0",
|
|
190
190
|
"csp_evaluator": "1.1.5",
|
|
191
|
-
"devtools-protocol": "0.0.
|
|
191
|
+
"devtools-protocol": "0.0.1625959",
|
|
192
192
|
"enquirer": "^2.3.6",
|
|
193
193
|
"http-link-header": "^1.1.1",
|
|
194
194
|
"intl-messageformat": "^10.5.3",
|
|
@@ -199,19 +199,19 @@
|
|
|
199
199
|
"lodash-es": "^4.17.21",
|
|
200
200
|
"lookup-closest-locale": "6.2.0",
|
|
201
201
|
"open": "^8.4.0",
|
|
202
|
-
"puppeteer-core": "^24.
|
|
202
|
+
"puppeteer-core": "^24.43.0",
|
|
203
203
|
"robots-parser": "^3.0.1",
|
|
204
204
|
"speedline-core": "^1.4.3",
|
|
205
205
|
"third-party-web": "^0.29.0",
|
|
206
|
-
"tldts-icann": "^7.0.
|
|
207
|
-
"web-features": "^3.
|
|
206
|
+
"tldts-icann": "^7.0.30",
|
|
207
|
+
"web-features": "^3.26.0",
|
|
208
208
|
"ws": "^7.0.0",
|
|
209
209
|
"yargs": "^17.3.1",
|
|
210
210
|
"yargs-parser": "^21.0.0"
|
|
211
211
|
},
|
|
212
212
|
"resolutions": {
|
|
213
|
-
"puppeteer/**/devtools-protocol": "0.0.
|
|
214
|
-
"puppeteer-core/**/devtools-protocol": "0.0.
|
|
213
|
+
"puppeteer/**/devtools-protocol": "0.0.1625959",
|
|
214
|
+
"puppeteer-core/**/devtools-protocol": "0.0.1625959"
|
|
215
215
|
},
|
|
216
216
|
"repository": "GoogleChrome/lighthouse",
|
|
217
217
|
"keywords": [
|
|
@@ -603,7 +603,7 @@
|
|
|
603
603
|
"message": "Failing Rule"
|
|
604
604
|
},
|
|
605
605
|
"core/audits/agentic/agent-accessibility-tree.js | description": {
|
|
606
|
-
"message": "A well-formed accessibility tree helps AI agents to navigate and interact with the page."
|
|
606
|
+
"message": "A well-formed [accessibility tree](http://goo.gle/lighthouse-agentic-a11y) helps AI agents to navigate and interact with the page."
|
|
607
607
|
},
|
|
608
608
|
"core/audits/agentic/agent-accessibility-tree.js | displayValuePassed": {
|
|
609
609
|
"message": "All audits passed"
|
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
"message": "Accessibility tree is well-formed"
|
|
619
619
|
},
|
|
620
620
|
"core/audits/agentic/llms-txt.js | description": {
|
|
621
|
-
"message": "If your llms.txt file
|
|
621
|
+
"message": "If your llms.txt file does not follow recommendations, large language models may not be able to understand how you want your website to be crawled or used for training. The [llms.txt](https://llmstxt.org/) file should be a Markdown file containing at least one H1 header."
|
|
622
622
|
},
|
|
623
623
|
"core/audits/agentic/llms-txt.js | displayValueHttpBadCode": {
|
|
624
624
|
"message": "Failed with HTTP status {statusCode}"
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
"message": "Fetch of llms.txt failed"
|
|
628
628
|
},
|
|
629
629
|
"core/audits/agentic/llms-txt.js | failureTitle": {
|
|
630
|
-
"message": "llms.txt
|
|
630
|
+
"message": "llms.txt does not follow recommendations"
|
|
631
631
|
},
|
|
632
632
|
"core/audits/agentic/llms-txt.js | missingH1": {
|
|
633
633
|
"message": "File is missing a required H1 header (e.g., \"# Title\")."
|
|
@@ -636,7 +636,7 @@
|
|
|
636
636
|
"message": "File does not appear to contain any links."
|
|
637
637
|
},
|
|
638
638
|
"core/audits/agentic/llms-txt.js | title": {
|
|
639
|
-
"message": "llms.txt
|
|
639
|
+
"message": "llms.txt follows recommendations"
|
|
640
640
|
},
|
|
641
641
|
"core/audits/agentic/llms-txt.js | tooShort": {
|
|
642
642
|
"message": "File is suspiciously short."
|
|
@@ -1350,7 +1350,7 @@
|
|
|
1350
1350
|
"message": "Form"
|
|
1351
1351
|
},
|
|
1352
1352
|
"core/audits/webmcp-form-coverage.js | description": {
|
|
1353
|
-
"message": "Consider adding WebMCP annotations to the forms listed below. This helps AI agents identify and interact with these forms more reliably."
|
|
1353
|
+
"message": "Consider adding [WebMCP](http://goo.gle/webmcp-docs) annotations to the forms listed below. This helps AI agents identify and interact with these forms more reliably."
|
|
1354
1354
|
},
|
|
1355
1355
|
"core/audits/webmcp-form-coverage.js | displayValue": {
|
|
1356
1356
|
"message": "{itemCount, plural,\n =1 {1 form missing annotations}\n other {# forms missing annotations}\n }"
|
|
@@ -1374,7 +1374,7 @@
|
|
|
1374
1374
|
"message": "Tool name"
|
|
1375
1375
|
},
|
|
1376
1376
|
"core/audits/webmcp-registered-tools.js | description": {
|
|
1377
|
-
"message": "Lists the WebMCP tools registered at the time of analysis.
|
|
1377
|
+
"message": "Lists the [WebMCP tools](http://goo.gle/webmcp-docs) registered at the time of analysis."
|
|
1378
1378
|
},
|
|
1379
1379
|
"core/audits/webmcp-registered-tools.js | title": {
|
|
1380
1380
|
"message": "WebMCP tools registered"
|
|
@@ -1392,7 +1392,7 @@
|
|
|
1392
1392
|
"message": "Issue"
|
|
1393
1393
|
},
|
|
1394
1394
|
"core/audits/webmcp-schema-validity.js | description": {
|
|
1395
|
-
"message": "Valid WebMCP schemas are required for AI agents to understand and interact with tools correctly. Please fix any errors or warnings reported by the browser."
|
|
1395
|
+
"message": "Valid [WebMCP schemas](http://goo.gle/webmcp-docs) are required for AI agents to understand and interact with tools correctly. Please fix any errors or warnings reported by the browser."
|
|
1396
1396
|
},
|
|
1397
1397
|
"core/audits/webmcp-schema-validity.js | failureTitle": {
|
|
1398
1398
|
"message": "WebMCP schemas are invalid"
|
|
@@ -1422,7 +1422,7 @@
|
|
|
1422
1422
|
"message": "Agent Accessibility"
|
|
1423
1423
|
},
|
|
1424
1424
|
"core/config/agentic-browsing-config.js | agenticBrowsingCategoryDescription": {
|
|
1425
|
-
"message": "These checks ensure high-quality, browsable websites for AI agents and validate the correctness of WebMCP integrations. This category is still under development and subject to change."
|
|
1425
|
+
"message": "These checks ensure high-quality, [browsable websites for AI agents](https://goo.gle/lighthouse-agentic-web) and validate the correctness of WebMCP integrations. This category is still under development and subject to change."
|
|
1426
1426
|
},
|
|
1427
1427
|
"core/config/agentic-browsing-config.js | agenticBrowsingCategoryTitle": {
|
|
1428
1428
|
"message": "Agentic Browsing"
|
|
@@ -1490,6 +1490,18 @@
|
|
|
1490
1490
|
"core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
|
|
1491
1491
|
"message": "Tables and lists"
|
|
1492
1492
|
},
|
|
1493
|
+
"core/config/default-config.js | agentAccessibilityGroupDescription": {
|
|
1494
|
+
"message": "These audits highlight best practices for improving the accessibility of the website for AI agents."
|
|
1495
|
+
},
|
|
1496
|
+
"core/config/default-config.js | agentAccessibilityGroupTitle": {
|
|
1497
|
+
"message": "Agent Accessibility"
|
|
1498
|
+
},
|
|
1499
|
+
"core/config/default-config.js | agenticBrowsingCategoryDescription": {
|
|
1500
|
+
"message": "These checks ensure high-quality, [browsable websites for AI agents](https://goo.gle/lighthouse-agentic-web) and validate the correctness of WebMCP integrations. This category is still under development and subject to change."
|
|
1501
|
+
},
|
|
1502
|
+
"core/config/default-config.js | agenticBrowsingCategoryTitle": {
|
|
1503
|
+
"message": "Agentic Browsing"
|
|
1504
|
+
},
|
|
1493
1505
|
"core/config/default-config.js | bestPracticesBrowserCompatGroupTitle": {
|
|
1494
1506
|
"message": "Browser Compatibility"
|
|
1495
1507
|
},
|
|
@@ -1562,6 +1574,12 @@
|
|
|
1562
1574
|
"core/config/default-config.js | seoMobileGroupTitle": {
|
|
1563
1575
|
"message": "Mobile Friendly"
|
|
1564
1576
|
},
|
|
1577
|
+
"core/config/default-config.js | webmcpGroupDescription": {
|
|
1578
|
+
"message": "Audits validating WebMCP integration."
|
|
1579
|
+
},
|
|
1580
|
+
"core/config/default-config.js | webmcpGroupTitle": {
|
|
1581
|
+
"message": "WebMCP"
|
|
1582
|
+
},
|
|
1565
1583
|
"core/gather/driver/environment.js | warningSlowHostCpu": {
|
|
1566
1584
|
"message": "The tested device appears to have a slower CPU than Lighthouse expects. This can negatively affect your performance score. Learn more about [calibrating an appropriate CPU slowdown multiplier](https://github.com/GoogleChrome/lighthouse/blob/main/docs/throttling.md#cpu-throttling)."
|
|
1567
1585
|
},
|
|
@@ -603,7 +603,7 @@
|
|
|
603
603
|
"message": "F̂áîĺîńĝ Ŕûĺê"
|
|
604
604
|
},
|
|
605
605
|
"core/audits/agentic/agent-accessibility-tree.js | description": {
|
|
606
|
-
"message": "Â ẃêĺl̂-f́ôŕm̂éd̂ áĉćêśŝíb̂íl̂ít̂ý t̂ŕêé ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ t́ô ńâv́îǵât́ê án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́ê ṕâǵê."
|
|
606
|
+
"message": "Â ẃêĺl̂-f́ôŕm̂éd̂ [áĉćêśŝíb̂íl̂ít̂ý t̂ŕêé](http://goo.gle/lighthouse-agentic-a11y) ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ t́ô ńâv́îǵât́ê án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́ê ṕâǵê."
|
|
607
607
|
},
|
|
608
608
|
"core/audits/agentic/agent-accessibility-tree.js | displayValuePassed": {
|
|
609
609
|
"message": "Âĺl̂ áûd́ît́ŝ ṕâśŝéd̂"
|
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
"message": "Âćĉéŝśîb́îĺît́ŷ t́r̂éê íŝ ẃêĺl̂-f́ôŕm̂éd̂"
|
|
619
619
|
},
|
|
620
620
|
"core/audits/agentic/llms-txt.js | description": {
|
|
621
|
-
"message": "Îf́ ŷóûŕ l̂ĺm̂ś.t̂x́t̂ f́îĺê
|
|
621
|
+
"message": "Îf́ ŷóûŕ l̂ĺm̂ś.t̂x́t̂ f́îĺê d́ôéŝ ńôt́ f̂ól̂ĺôẃ r̂éĉóm̂ḿêńd̂át̂íôńŝ, ĺâŕĝé l̂án̂ǵûáĝé m̂ód̂él̂ś m̂áŷ ńôt́ b̂é âb́l̂é t̂ó ûńd̂ér̂śt̂án̂d́ ĥóŵ ýôú ŵán̂t́ ŷóûŕ ŵéb̂śît́ê t́ô b́ê ćr̂áŵĺêd́ ôŕ ûśêd́ f̂ór̂ t́r̂áîńîńĝ. T́ĥé [l̂ĺm̂ś.t̂x́t̂](https://llmstxt.org/) f́îĺê śĥóûĺd̂ b́ê á M̂ár̂ḱd̂óŵń f̂íl̂é ĉón̂t́âín̂ín̂ǵ ât́ l̂éâśt̂ ón̂é Ĥ1 h́êád̂ér̂."
|
|
622
622
|
},
|
|
623
623
|
"core/audits/agentic/llms-txt.js | displayValueHttpBadCode": {
|
|
624
624
|
"message": "F̂áîĺêd́ ŵít̂h́ ĤT́T̂Ṕ ŝt́ât́ûś {statusCode}"
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
"message": "F̂ét̂ćĥ óf̂ ĺl̂ḿŝ.t́x̂t́ f̂áîĺêd́"
|
|
628
628
|
},
|
|
629
629
|
"core/audits/agentic/llms-txt.js | failureTitle": {
|
|
630
|
-
"message": "l̂ĺm̂ś.t̂x́t̂
|
|
630
|
+
"message": "l̂ĺm̂ś.t̂x́t̂ d́ôéŝ ńôt́ f̂ól̂ĺôẃ r̂éĉóm̂ḿêńd̂át̂íôńŝ"
|
|
631
631
|
},
|
|
632
632
|
"core/audits/agentic/llms-txt.js | missingH1": {
|
|
633
633
|
"message": "F̂íl̂é îś m̂íŝśîńĝ á r̂éq̂úîŕêd́ Ĥ1 h́êád̂ér̂ (é.ĝ., \"# T́ît́l̂é\")."
|
|
@@ -636,7 +636,7 @@
|
|
|
636
636
|
"message": "F̂íl̂é d̂óêś n̂ót̂ áp̂ṕêár̂ t́ô ćôńt̂áîń âńŷ ĺîńk̂ś."
|
|
637
637
|
},
|
|
638
638
|
"core/audits/agentic/llms-txt.js | title": {
|
|
639
|
-
"message": "l̂ĺm̂ś.t̂x́t̂
|
|
639
|
+
"message": "l̂ĺm̂ś.t̂x́t̂ f́ôĺl̂óŵś r̂éĉóm̂ḿêńd̂át̂íôńŝ"
|
|
640
640
|
},
|
|
641
641
|
"core/audits/agentic/llms-txt.js | tooShort": {
|
|
642
642
|
"message": "F̂íl̂é îś ŝúŝṕîćîóûśl̂ý ŝh́ôŕt̂."
|
|
@@ -1350,7 +1350,7 @@
|
|
|
1350
1350
|
"message": "F̂ór̂ḿ"
|
|
1351
1351
|
},
|
|
1352
1352
|
"core/audits/webmcp-form-coverage.js | description": {
|
|
1353
|
-
"message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ Ŵéb̂ḾĈṔ âńn̂ót̂át̂íôńŝ t́ô t́ĥé f̂ór̂ḿŝ ĺîśt̂éd̂ b́êĺôẃ. T̂h́îś ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ íd̂én̂t́îf́ŷ án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́êśê f́ôŕm̂ś m̂ór̂é r̂él̂íâb́l̂ý."
|
|
1353
|
+
"message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ [Ŵéb̂ḾĈṔ](http://goo.gle/webmcp-docs) âńn̂ót̂át̂íôńŝ t́ô t́ĥé f̂ór̂ḿŝ ĺîśt̂éd̂ b́êĺôẃ. T̂h́îś ĥél̂ṕŝ ÁÎ áĝén̂t́ŝ íd̂én̂t́îf́ŷ án̂d́ îńt̂ér̂áĉt́ ŵít̂h́ t̂h́êśê f́ôŕm̂ś m̂ór̂é r̂él̂íâb́l̂ý."
|
|
1354
1354
|
},
|
|
1355
1355
|
"core/audits/webmcp-form-coverage.js | displayValue": {
|
|
1356
1356
|
"message": "{itemCount, plural,\n =1 {1 f̂ór̂ḿ m̂íŝśîńĝ án̂ńôt́ât́îón̂ś}\n other {# f̂ór̂ḿŝ ḿîśŝín̂ǵ âńn̂ót̂át̂íôńŝ}\n }"
|
|
@@ -1374,7 +1374,7 @@
|
|
|
1374
1374
|
"message": "T̂óôĺ n̂ám̂é"
|
|
1375
1375
|
},
|
|
1376
1376
|
"core/audits/webmcp-registered-tools.js | description": {
|
|
1377
|
-
"message": "L̂íŝt́ŝ t́ĥé Ŵéb̂ḾĈṔ t̂óôĺŝ ŕêǵîśt̂ér̂éd̂ át̂ t́ĥé t̂ím̂é ôf́ âńâĺŷśîś.
|
|
1377
|
+
"message": "L̂íŝt́ŝ t́ĥé [Ŵéb̂ḾĈṔ t̂óôĺŝ](http://goo.gle/webmcp-docs) ŕêǵîśt̂ér̂éd̂ át̂ t́ĥé t̂ím̂é ôf́ âńâĺŷśîś."
|
|
1378
1378
|
},
|
|
1379
1379
|
"core/audits/webmcp-registered-tools.js | title": {
|
|
1380
1380
|
"message": "Ŵéb̂ḾĈṔ t̂óôĺŝ ŕêǵîśt̂ér̂éd̂"
|
|
@@ -1392,7 +1392,7 @@
|
|
|
1392
1392
|
"message": "Îśŝúê"
|
|
1393
1393
|
},
|
|
1394
1394
|
"core/audits/webmcp-schema-validity.js | description": {
|
|
1395
|
-
"message": "V̂ál̂íd̂ Ẃêb́M̂ĆP̂ śĉh́êḿâś âŕê ŕêq́ûír̂éd̂ f́ôŕ ÂÍ âǵêńt̂ś t̂ó ûńd̂ér̂śt̂án̂d́ âńd̂ ín̂t́êŕâćt̂ ẃît́ĥ t́ôól̂ś ĉór̂ŕêćt̂ĺŷ. Ṕl̂éâśê f́îx́ âńŷ ér̂ŕôŕŝ ór̂ ẃâŕn̂ín̂ǵŝ ŕêṕôŕt̂éd̂ b́ŷ t́ĥé b̂ŕôẃŝér̂."
|
|
1395
|
+
"message": "V̂ál̂íd̂ [Ẃêb́M̂ĆP̂ śĉh́êḿâś](http://goo.gle/webmcp-docs) âŕê ŕêq́ûír̂éd̂ f́ôŕ ÂÍ âǵêńt̂ś t̂ó ûńd̂ér̂śt̂án̂d́ âńd̂ ín̂t́êŕâćt̂ ẃît́ĥ t́ôól̂ś ĉór̂ŕêćt̂ĺŷ. Ṕl̂éâśê f́îx́ âńŷ ér̂ŕôŕŝ ór̂ ẃâŕn̂ín̂ǵŝ ŕêṕôŕt̂éd̂ b́ŷ t́ĥé b̂ŕôẃŝér̂."
|
|
1396
1396
|
},
|
|
1397
1397
|
"core/audits/webmcp-schema-validity.js | failureTitle": {
|
|
1398
1398
|
"message": "Ŵéb̂ḾĈṔ ŝćĥém̂áŝ ár̂é îńv̂ál̂íd̂"
|
|
@@ -1422,7 +1422,7 @@
|
|
|
1422
1422
|
"message": "Âǵêńt̂ Áĉćêśŝíb̂íl̂ít̂ý"
|
|
1423
1423
|
},
|
|
1424
1424
|
"core/config/agentic-browsing-config.js | agenticBrowsingCategoryDescription": {
|
|
1425
|
-
"message": "T̂h́êśê ćĥéĉḱŝ én̂śûŕê h́îǵĥ-q́ûál̂ít̂ý, b̂ŕôẃŝáb̂ĺê ẃêb́ŝít̂éŝ f́ôŕ ÂÍ âǵêńt̂ś âńd̂ v́âĺîd́ât́ê t́ĥé ĉór̂ŕêćt̂ńêśŝ óf̂ Ẃêb́M̂ĆP̂ ín̂t́êǵr̂át̂íôńŝ. T́ĥíŝ ćât́êǵôŕŷ íŝ śt̂íl̂ĺ ûńd̂ér̂ d́êv́êĺôṕm̂én̂t́ âńd̂ śûb́ĵéĉt́ t̂ó ĉh́âńĝé."
|
|
1425
|
+
"message": "T̂h́êśê ćĥéĉḱŝ én̂śûŕê h́îǵĥ-q́ûál̂ít̂ý, [b̂ŕôẃŝáb̂ĺê ẃêb́ŝít̂éŝ f́ôŕ ÂÍ âǵêńt̂ś](https://goo.gle/lighthouse-agentic-web) âńd̂ v́âĺîd́ât́ê t́ĥé ĉór̂ŕêćt̂ńêśŝ óf̂ Ẃêb́M̂ĆP̂ ín̂t́êǵr̂át̂íôńŝ. T́ĥíŝ ćât́êǵôŕŷ íŝ śt̂íl̂ĺ ûńd̂ér̂ d́êv́êĺôṕm̂én̂t́ âńd̂ śûb́ĵéĉt́ t̂ó ĉh́âńĝé."
|
|
1426
1426
|
},
|
|
1427
1427
|
"core/config/agentic-browsing-config.js | agenticBrowsingCategoryTitle": {
|
|
1428
1428
|
"message": "Âǵêńt̂íĉ B́r̂óŵśîńĝ"
|
|
@@ -1490,6 +1490,18 @@
|
|
|
1490
1490
|
"core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
|
|
1491
1491
|
"message": "T̂áb̂ĺêś âńd̂ ĺîśt̂ś"
|
|
1492
1492
|
},
|
|
1493
|
+
"core/config/default-config.js | agentAccessibilityGroupDescription": {
|
|
1494
|
+
"message": "T̂h́êśê áûd́ît́ŝ h́îǵĥĺîǵĥt́ b̂éŝt́ p̂ŕâćt̂íĉéŝ f́ôŕ îḿp̂ŕôv́îńĝ t́ĥé âćĉéŝśîb́îĺît́ŷ óf̂ t́ĥé ŵéb̂śît́ê f́ôŕ ÂÍ âǵêńt̂ś."
|
|
1495
|
+
},
|
|
1496
|
+
"core/config/default-config.js | agentAccessibilityGroupTitle": {
|
|
1497
|
+
"message": "Âǵêńt̂ Áĉćêśŝíb̂íl̂ít̂ý"
|
|
1498
|
+
},
|
|
1499
|
+
"core/config/default-config.js | agenticBrowsingCategoryDescription": {
|
|
1500
|
+
"message": "T̂h́êśê ćĥéĉḱŝ én̂śûŕê h́îǵĥ-q́ûál̂ít̂ý, [b̂ŕôẃŝáb̂ĺê ẃêb́ŝít̂éŝ f́ôŕ ÂÍ âǵêńt̂ś](https://goo.gle/lighthouse-agentic-web) âńd̂ v́âĺîd́ât́ê t́ĥé ĉór̂ŕêćt̂ńêśŝ óf̂ Ẃêb́M̂ĆP̂ ín̂t́êǵr̂át̂íôńŝ. T́ĥíŝ ćât́êǵôŕŷ íŝ śt̂íl̂ĺ ûńd̂ér̂ d́êv́êĺôṕm̂én̂t́ âńd̂ śûb́ĵéĉt́ t̂ó ĉh́âńĝé."
|
|
1501
|
+
},
|
|
1502
|
+
"core/config/default-config.js | agenticBrowsingCategoryTitle": {
|
|
1503
|
+
"message": "Âǵêńt̂íĉ B́r̂óŵśîńĝ"
|
|
1504
|
+
},
|
|
1493
1505
|
"core/config/default-config.js | bestPracticesBrowserCompatGroupTitle": {
|
|
1494
1506
|
"message": "B̂ŕôẃŝér̂ Ćôḿp̂át̂íb̂íl̂ít̂ý"
|
|
1495
1507
|
},
|
|
@@ -1562,6 +1574,12 @@
|
|
|
1562
1574
|
"core/config/default-config.js | seoMobileGroupTitle": {
|
|
1563
1575
|
"message": "M̂ób̂íl̂é F̂ŕîén̂d́l̂ý"
|
|
1564
1576
|
},
|
|
1577
|
+
"core/config/default-config.js | webmcpGroupDescription": {
|
|
1578
|
+
"message": "Âúd̂ít̂ś v̂ál̂íd̂át̂ín̂ǵ Ŵéb̂ḾĈṔ îńt̂éĝŕât́îón̂."
|
|
1579
|
+
},
|
|
1580
|
+
"core/config/default-config.js | webmcpGroupTitle": {
|
|
1581
|
+
"message": "Ŵéb̂ḾĈṔ"
|
|
1582
|
+
},
|
|
1565
1583
|
"core/gather/driver/environment.js | warningSlowHostCpu": {
|
|
1566
1584
|
"message": "T̂h́ê t́êśt̂éd̂ d́êv́îćê áp̂ṕêár̂ś t̂ó ĥáv̂é â śl̂óŵér̂ ĆP̂Ú t̂h́âń L̂íĝh́t̂h́ôúŝé êx́p̂éĉt́ŝ. T́ĥíŝ ćâń n̂éĝát̂ív̂él̂ý âf́f̂éĉt́ ŷóûŕ p̂ér̂f́ôŕm̂án̂ćê śĉór̂é. L̂éâŕn̂ ḿôŕê áb̂óût́ [ĉál̂íb̂ŕât́îńĝ án̂ áp̂ṕr̂óp̂ŕîát̂é ĈṔÛ śl̂óŵd́ôẃn̂ ḿûĺt̂íp̂ĺîér̂](https://github.com/GoogleChrome/lighthouse/blob/main/docs/throttling.md#cpu-throttling)."
|
|
1567
1585
|
},
|
|
@@ -42,6 +42,10 @@ declare global {
|
|
|
42
42
|
config?: Config;
|
|
43
43
|
/** If test is performance sensitive, set to true so that it won't be run parallel to other tests. */
|
|
44
44
|
runSerially?: boolean;
|
|
45
|
+
/** Custom options for the test runner (e.g., custom Chrome flags). */
|
|
46
|
+
testRunnerOptions?: {
|
|
47
|
+
chromeFlags?: string;
|
|
48
|
+
};
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
/**
|
|
@@ -54,7 +58,7 @@ declare global {
|
|
|
54
58
|
{expectations: Smokehouse.ExpectedRunnerResult | Array<Smokehouse.ExpectedRunnerResult>}
|
|
55
59
|
|
|
56
60
|
export type LighthouseRunner =
|
|
57
|
-
{runnerName?: string} & ((url: string, config?: Config, logger?: LocalConsole, runnerOptions?:
|
|
61
|
+
{runnerName?: string} & ((url: string, config?: Config, logger?: LocalConsole, runnerOptions?: SmokehouseOptions['testRunnerOptions']) => Promise<{lhr: LHResult, artifacts: Artifacts}>);
|
|
58
62
|
|
|
59
63
|
export interface SmokehouseOptions {
|
|
60
64
|
/** Options to pass to the specific Lighthouse runner. */
|
|
@@ -63,6 +67,8 @@ declare global {
|
|
|
63
67
|
isDebug?: boolean;
|
|
64
68
|
/** Launch Chrome in the new headless mode (`--headless=new`), rather than the typical desktop headful mode. */
|
|
65
69
|
headless?: boolean;
|
|
70
|
+
/** Custom Chrome flags to pass to the launched browser. */
|
|
71
|
+
chromeFlags?: string;
|
|
66
72
|
};
|
|
67
73
|
/** Manually set the number of jobs to run at once. `1` runs all tests serially. */
|
|
68
74
|
jobs: number;
|