lighthouse 13.2.0 → 13.4.0-dev.20260625
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/.agents/skills/lighthouse-verification/SKILL.md +23 -0
- package/cli/cli-flags.d.ts +8 -9
- package/cli/cli-flags.js +2 -2
- package/cli/test/smokehouse/config/exclusions.js +2 -0
- 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/cli/test/smokehouse/version-check.d.ts +1 -1
- package/core/audits/accessibility/accesskeys.js +1 -1
- package/core/audits/accessibility/aria-allowed-attr.js +1 -1
- package/core/audits/accessibility/aria-allowed-role.js +1 -1
- package/core/audits/accessibility/aria-command-name.js +1 -1
- package/core/audits/accessibility/aria-conditional-attr.js +1 -1
- package/core/audits/accessibility/aria-deprecated-role.js +1 -1
- package/core/audits/accessibility/aria-dialog-name.js +1 -1
- package/core/audits/accessibility/aria-hidden-body.js +1 -1
- package/core/audits/accessibility/aria-hidden-focus.js +1 -1
- package/core/audits/accessibility/aria-input-field-name.js +1 -1
- package/core/audits/accessibility/aria-meter-name.js +1 -1
- package/core/audits/accessibility/aria-progressbar-name.js +1 -1
- package/core/audits/accessibility/aria-prohibited-attr.js +1 -1
- package/core/audits/accessibility/aria-required-attr.js +1 -1
- package/core/audits/accessibility/aria-required-children.js +1 -1
- package/core/audits/accessibility/aria-required-parent.js +1 -1
- package/core/audits/accessibility/aria-roles.js +1 -1
- package/core/audits/accessibility/aria-text.js +1 -1
- package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
- package/core/audits/accessibility/aria-tooltip-name.js +1 -1
- package/core/audits/accessibility/aria-treeitem-name.js +1 -1
- package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
- package/core/audits/accessibility/aria-valid-attr.js +1 -1
- package/core/audits/accessibility/autocomplete-valid.js +1 -1
- package/core/audits/accessibility/button-name.js +1 -1
- package/core/audits/accessibility/bypass.js +1 -1
- package/core/audits/accessibility/color-contrast.js +1 -1
- package/core/audits/accessibility/definition-list.js +1 -1
- package/core/audits/accessibility/dlitem.js +1 -1
- package/core/audits/accessibility/document-title.js +1 -1
- package/core/audits/accessibility/duplicate-id-aria.js +1 -1
- package/core/audits/accessibility/empty-heading.js +1 -1
- package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
- package/core/audits/accessibility/frame-title.js +1 -1
- package/core/audits/accessibility/heading-order.js +1 -1
- package/core/audits/accessibility/html-has-lang.js +1 -1
- package/core/audits/accessibility/html-lang-valid.js +1 -1
- package/core/audits/accessibility/html-xml-lang-mismatch.js +1 -1
- package/core/audits/accessibility/identical-links-same-purpose.js +1 -1
- package/core/audits/accessibility/image-alt.js +1 -1
- package/core/audits/accessibility/image-redundant-alt.js +1 -1
- package/core/audits/accessibility/input-button-name.js +1 -1
- package/core/audits/accessibility/input-image-alt.js +1 -1
- package/core/audits/accessibility/label-content-name-mismatch.js +1 -1
- package/core/audits/accessibility/label.js +1 -1
- package/core/audits/accessibility/landmark-one-main.js +1 -1
- package/core/audits/accessibility/link-in-text-block.js +1 -1
- package/core/audits/accessibility/link-name.js +1 -1
- package/core/audits/accessibility/list.js +1 -1
- package/core/audits/accessibility/listitem.js +1 -1
- package/core/audits/accessibility/meta-refresh.js +1 -1
- package/core/audits/accessibility/meta-viewport.js +1 -1
- package/core/audits/accessibility/object-alt.js +1 -1
- package/core/audits/accessibility/presentation-role-conflict.js +1 -1
- package/core/audits/accessibility/select-name.js +1 -1
- package/core/audits/accessibility/skip-link.js +1 -1
- package/core/audits/accessibility/svg-img-alt.js +1 -1
- package/core/audits/accessibility/tabindex.js +1 -1
- package/core/audits/accessibility/table-duplicate-name.js +1 -1
- package/core/audits/accessibility/table-fake-caption.js +1 -1
- package/core/audits/accessibility/target-size.js +1 -1
- package/core/audits/accessibility/td-has-header.js +1 -1
- package/core/audits/accessibility/td-headers-attr.js +1 -1
- package/core/audits/accessibility/th-has-data-cells.js +1 -1
- package/core/audits/accessibility/valid-lang.js +1 -1
- package/core/audits/accessibility/video-caption.js +1 -1
- package/core/audits/agentic/agent-accessibility-tree.js +1 -1
- package/core/audits/agentic/llms-txt.d.ts +1 -0
- package/core/audits/agentic/llms-txt.js +23 -10
- package/core/audits/baseline.js +10 -12
- package/core/audits/dobetterweb/geolocation-on-start.js +2 -1
- package/core/audits/network-requests.js +2 -0
- package/core/audits/seo/canonical.js +19 -7
- package/core/audits/seo/robots-txt.d.ts +1 -0
- package/core/audits/seo/robots-txt.js +22 -8
- 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/computed/js-bundles.d.ts +1 -1
- package/core/computed/load-simulator.d.ts +1 -1
- package/core/computed/metrics/first-contentful-paint-all-frames.d.ts +1 -1
- package/core/computed/metrics/first-contentful-paint.d.ts +1 -1
- package/core/computed/metrics/interactive.d.ts +1 -1
- package/core/computed/metrics/lantern-metric.d.ts +6 -6
- package/core/computed/metrics/largest-contentful-paint-all-frames.d.ts +1 -1
- package/core/computed/metrics/largest-contentful-paint.d.ts +1 -1
- package/core/computed/metrics/max-potential-fid.d.ts +1 -1
- package/core/computed/metrics/speed-index.d.ts +1 -1
- package/core/computed/metrics/time-to-first-byte.d.ts +1 -1
- package/core/computed/metrics/total-blocking-time.d.ts +1 -1
- package/core/computed/module-duplication.d.ts +1 -1
- package/core/computed/page-dependency-graph.d.ts +1 -1
- package/core/computed/unused-css.d.ts +1 -1
- package/core/config/agentic-browsing-config.d.ts +1 -0
- package/core/config/agentic-browsing-config.js +3 -2
- package/core/config/config-helpers.d.ts +1 -0
- package/core/config/config-helpers.js +1 -1
- package/core/config/config-plugin.d.ts +1 -0
- package/core/config/config-plugin.js +1 -0
- package/core/config/config.d.ts +1 -0
- package/core/config/config.js +1 -0
- package/core/config/constants.d.ts +1 -0
- package/core/config/constants.js +1 -0
- package/core/config/default-config.js +45 -0
- package/core/config/experimental-config.d.ts +1 -9
- package/core/config/experimental-config.js +2 -0
- package/core/config/filters.d.ts +1 -0
- package/core/config/filters.js +1 -0
- package/core/config/full-config.d.ts +1 -5
- package/core/config/full-config.js +2 -0
- package/core/config/lr-desktop-config.d.ts +1 -0
- package/core/config/lr-desktop-config.js +1 -0
- package/core/config/lr-mobile-config.d.ts +1 -5
- package/core/config/lr-mobile-config.js +2 -0
- package/core/config/perf-config.d.ts +1 -5
- package/core/config/perf-config.js +2 -0
- package/core/config/validation.d.ts +1 -0
- package/core/config/validation.js +1 -0
- package/core/gather/driver/execution-context.d.ts +23 -0
- package/core/gather/driver/execution-context.js +86 -1
- package/core/gather/driver/storage.js +13 -0
- package/core/gather/driver.d.ts +1 -1
- package/core/gather/gatherers/accessibility.js +1 -0
- package/core/gather/gatherers/agentic/llms-txt.js +5 -1
- package/core/gather/gatherers/seo/robots-txt.js +6 -1
- package/core/gather/gatherers/trace-elements.d.ts +4 -1
- package/core/gather/gatherers/trace-elements.js +24 -28
- package/core/gather/gatherers/webmcp-schema.js +9 -16
- package/core/gather/gatherers/webmcp.d.ts +5 -0
- package/core/gather/gatherers/webmcp.js +34 -27
- package/core/index.d.ts +0 -1
- package/core/index.js +0 -1
- package/core/lib/baseline/web-features-data.json +1179 -0
- package/core/lib/baseline/web-features-metadata.json +1 -1
- package/core/lib/deprecations-strings.d.ts +117 -87
- package/core/lib/deprecations-strings.js +31 -0
- package/core/lib/script-helpers.js +13 -1
- package/core/scoring.d.ts +58 -58
- package/dist/report/bundle.esm.js +4 -7
- package/dist/report/flow.js +6 -9
- package/dist/report/standalone.js +20 -12
- package/flow-report/types/flow-report.d.ts +2 -2
- package/package.json +31 -31
- package/report/assets/styles.css +1 -4
- package/report/renderer/components.js +1 -1
- package/report/renderer/details-renderer.d.ts +6 -1
- package/report/renderer/details-renderer.js +11 -3
- package/report/renderer/explodey-gauge.js +9 -7
- package/report/renderer/i18n-formatter.d.ts +1 -1
- package/report/renderer/logger.js +18 -4
- package/report/renderer/text-encoding.js +1 -1
- package/report/types/html-renderer.d.ts +2 -2
- package/shared/localization/locales/ar-XB.json +290 -65
- package/shared/localization/locales/ar.json +290 -65
- package/shared/localization/locales/bg.json +290 -65
- package/shared/localization/locales/ca.json +295 -70
- package/shared/localization/locales/cs.json +290 -65
- package/shared/localization/locales/da.json +294 -69
- package/shared/localization/locales/de.json +295 -70
- package/shared/localization/locales/el.json +290 -65
- package/shared/localization/locales/en-GB.json +290 -65
- package/shared/localization/locales/en-US.json +112 -76
- package/shared/localization/locales/en-XA.json +253 -64
- package/shared/localization/locales/en-XL.json +112 -76
- package/shared/localization/locales/es-419.json +290 -65
- package/shared/localization/locales/es.json +298 -73
- package/shared/localization/locales/fi.json +290 -65
- package/shared/localization/locales/fil.json +290 -65
- package/shared/localization/locales/fr.json +294 -69
- package/shared/localization/locales/he.json +293 -68
- package/shared/localization/locales/hi.json +291 -66
- package/shared/localization/locales/hr.json +290 -65
- package/shared/localization/locales/hu.json +290 -65
- package/shared/localization/locales/id.json +290 -65
- package/shared/localization/locales/it.json +294 -69
- package/shared/localization/locales/ja.json +290 -65
- package/shared/localization/locales/ko.json +290 -65
- package/shared/localization/locales/lt.json +290 -65
- package/shared/localization/locales/lv.json +290 -65
- package/shared/localization/locales/nl.json +290 -65
- package/shared/localization/locales/no.json +290 -65
- package/shared/localization/locales/pl.json +290 -65
- package/shared/localization/locales/pt-PT.json +291 -66
- package/shared/localization/locales/pt.json +290 -65
- package/shared/localization/locales/ro.json +290 -65
- package/shared/localization/locales/ru.json +301 -76
- package/shared/localization/locales/sk.json +291 -66
- package/shared/localization/locales/sl.json +290 -65
- package/shared/localization/locales/sr-Latn.json +290 -65
- package/shared/localization/locales/sr.json +290 -65
- package/shared/localization/locales/sv.json +297 -72
- package/shared/localization/locales/ta.json +291 -66
- package/shared/localization/locales/te.json +293 -68
- package/shared/localization/locales/th.json +291 -66
- package/shared/localization/locales/tr.json +290 -65
- package/shared/localization/locales/uk.json +290 -65
- package/shared/localization/locales/vi.json +291 -66
- package/shared/localization/locales/zh-HK.json +292 -67
- package/shared/localization/locales/zh-TW.json +291 -66
- package/shared/localization/locales/zh.json +291 -66
- package/shared/types/shared.d.ts +1 -1
- package/tsconfig-base.json +2 -1
- package/tsconfig.json +2 -0
- package/types/artifacts.d.ts +1 -1
- package/types/internal/rxjs.d.ts +1 -1
- package/types/internal/smokehouse.d.ts +8 -2
- package/types.d.ts +2 -0
- package/types.js +11 -0
|
@@ -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. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { JSBundlesComputed as JSBundles };
|
|
2
2
|
declare const JSBundlesComputed: typeof JSBundles & {
|
|
3
|
-
request: (dependencies: Pick<import("../index.js").Artifacts, "
|
|
3
|
+
request: (dependencies: Pick<import("../index.js").Artifacts, "SourceMaps" | "Scripts">, context: LH.Artifacts.ComputedContext) => Promise<import("../index.js").Artifacts.Bundle[]>;
|
|
4
4
|
};
|
|
5
5
|
declare class JSBundles {
|
|
6
6
|
/**
|
|
@@ -3,7 +3,7 @@ declare const LoadSimulatorComputed: typeof LoadSimulator & {
|
|
|
3
3
|
request: (dependencies: {
|
|
4
4
|
devtoolsLog: LH.DevtoolsLog;
|
|
5
5
|
settings: LH.Audit.Context["settings"];
|
|
6
|
-
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types
|
|
6
|
+
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types.js").Gatherer.Simulation.Simulator>;
|
|
7
7
|
};
|
|
8
8
|
declare class LoadSimulator {
|
|
9
9
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { FirstContentfulPaintAllFramesComputed as FirstContentfulPaintAllFrames };
|
|
2
2
|
declare const FirstContentfulPaintAllFramesComputed: typeof FirstContentfulPaintAllFrames & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class FirstContentfulPaintAllFrames extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { FirstContentfulPaintComputed as FirstContentfulPaint };
|
|
2
2
|
declare const FirstContentfulPaintComputed: typeof FirstContentfulPaint & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class FirstContentfulPaint extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -10,7 +10,7 @@ export type TimePeriod = {
|
|
|
10
10
|
end: number;
|
|
11
11
|
};
|
|
12
12
|
declare const InteractiveComputed: typeof Interactive & {
|
|
13
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
13
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* @fileoverview Computes "Time To Interactive", the time at which the page has loaded critical
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* @param {LH.Artifacts.ComputedContext} context
|
|
4
4
|
*/
|
|
5
5
|
export function getComputationDataParamsFromTrace(data: LH.Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext): Promise<{
|
|
6
|
-
simulator: import("../../../types
|
|
7
|
-
graph: import("../../../types
|
|
6
|
+
simulator: import("../../../types.js").Gatherer.Simulation.Simulator;
|
|
7
|
+
graph: import("../../../types.js").Gatherer.Simulation.GraphNode;
|
|
8
8
|
processedNavigation: Lantern.Types.Simulation.ProcessedNavigation;
|
|
9
9
|
}>;
|
|
10
10
|
/**
|
|
@@ -12,8 +12,8 @@ export function getComputationDataParamsFromTrace(data: LH.Artifacts.MetricCompu
|
|
|
12
12
|
* @param {LH.Artifacts.ComputedContext} context
|
|
13
13
|
*/
|
|
14
14
|
export function getComputationDataParamsFromDevtoolsLog(data: LH.Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext): Promise<{
|
|
15
|
-
simulator: import("../../../types
|
|
16
|
-
graph: import("../../../types
|
|
15
|
+
simulator: import("../../../types.js").Gatherer.Simulation.Simulator;
|
|
16
|
+
graph: import("../../../types.js").Gatherer.Simulation.GraphNode;
|
|
17
17
|
processedNavigation: import("../../index.js").Artifacts.ProcessedNavigation;
|
|
18
18
|
}>;
|
|
19
19
|
/**
|
|
@@ -21,8 +21,8 @@ export function getComputationDataParamsFromDevtoolsLog(data: LH.Artifacts.Metri
|
|
|
21
21
|
* @param {LH.Artifacts.ComputedContext} context
|
|
22
22
|
*/
|
|
23
23
|
export function getComputationDataParams(data: LH.Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext): Promise<{
|
|
24
|
-
simulator: import("../../../types
|
|
25
|
-
graph: import("../../../types
|
|
24
|
+
simulator: import("../../../types.js").Gatherer.Simulation.Simulator;
|
|
25
|
+
graph: import("../../../types.js").Gatherer.Simulation.GraphNode;
|
|
26
26
|
processedNavigation: Lantern.Types.Simulation.ProcessedNavigation;
|
|
27
27
|
}>;
|
|
28
28
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { LargestContentfulPaintAllFramesComputed as LargestContentfulPaintAllFrames };
|
|
2
2
|
declare const LargestContentfulPaintAllFramesComputed: typeof LargestContentfulPaintAllFrames & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class LargestContentfulPaintAllFrames extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { LargestContentfulPaintComputed as LargestContentfulPaint };
|
|
2
2
|
declare const LargestContentfulPaintComputed: typeof LargestContentfulPaint & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class LargestContentfulPaint extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { MaxPotentialFIDComputed as MaxPotentialFID };
|
|
2
2
|
declare const MaxPotentialFIDComputed: typeof MaxPotentialFID & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class MaxPotentialFID extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { SpeedIndexComputed as SpeedIndex };
|
|
2
2
|
declare const SpeedIndexComputed: typeof SpeedIndex & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class SpeedIndex extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { TimeToFirstByteComputed as TimeToFirstByte };
|
|
2
2
|
declare const TimeToFirstByteComputed: typeof TimeToFirstByte & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
declare class TimeToFirstByte extends NavigationMetric {
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { TotalBlockingTimeComputed as TotalBlockingTime };
|
|
2
2
|
declare const TotalBlockingTimeComputed: typeof TotalBlockingTime & {
|
|
3
|
-
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.
|
|
3
|
+
request: (dependencies: import("../../index.js").Artifacts.MetricComputationDataInput, context: LH.Artifacts.ComputedContext) => Promise<import("../../index.js").Artifacts.LanternMetric | import("../../index.js").Artifacts.Metric>;
|
|
4
4
|
};
|
|
5
5
|
/**
|
|
6
6
|
* @fileoverview This audit determines Total Blocking Time.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ModuleDuplicationComputed as ModuleDuplication };
|
|
2
2
|
declare const ModuleDuplicationComputed: typeof ModuleDuplication & {
|
|
3
|
-
request: (dependencies: Pick<import("../index.js").Artifacts, "
|
|
3
|
+
request: (dependencies: Pick<import("../index.js").Artifacts, "SourceMaps" | "Scripts">, context: LH.Artifacts.ComputedContext) => Promise<Map<string, {
|
|
4
4
|
scriptId: string;
|
|
5
5
|
scriptUrl: string;
|
|
6
6
|
resourceSize: number;
|
|
@@ -8,7 +8,7 @@ declare const PageDependencyGraphComputed: typeof PageDependencyGraph & {
|
|
|
8
8
|
SourceMaps: LH.Artifacts["SourceMaps"];
|
|
9
9
|
HostDPR: LH.Artifacts["HostDPR"];
|
|
10
10
|
fromTrace: boolean;
|
|
11
|
-
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types
|
|
11
|
+
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types.js").Gatherer.Simulation.GraphNode>;
|
|
12
12
|
};
|
|
13
13
|
declare class PageDependencyGraph {
|
|
14
14
|
/**
|
|
@@ -8,7 +8,7 @@ declare const UnusedCSSComputed: typeof UnusedCSS & {
|
|
|
8
8
|
Stylesheets: LH.Artifacts["Stylesheets"];
|
|
9
9
|
CSSUsage: LH.Artifacts["CSSUsage"];
|
|
10
10
|
devtoolsLog: LH.DevtoolsLog;
|
|
11
|
-
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types
|
|
11
|
+
}, context: LH.Artifacts.ComputedContext) => Promise<import("../../types.js").Audit.ByteEfficiencyItem[]>;
|
|
12
12
|
};
|
|
13
13
|
/** @typedef {LH.Artifacts.CSSStyleSheetInfo & {networkRecord: LH.Artifacts.NetworkRequest, usedRules: Array<LH.Crdp.CSS.RuleUsage>}} StyleSheetInfo */
|
|
14
14
|
declare class UnusedCSS {
|
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import * as LH from '../../types/lh.js';
|
|
7
8
|
import * as i18n from '../lib/i18n/i18n.js';
|
|
8
9
|
|
|
9
10
|
const UIStrings = {
|
|
10
11
|
/** Title of the Agentic Browsing category of audits. */
|
|
11
12
|
agenticBrowsingCategoryTitle: 'Agentic Browsing',
|
|
12
13
|
/** Description of the Agentic Browsing category. */
|
|
13
|
-
agenticBrowsingCategoryDescription: 'These checks ensure high-quality, browsable ' +
|
|
14
|
-
'
|
|
14
|
+
agenticBrowsingCategoryDescription: 'These checks ensure high-quality, [browsable websites for AI agents](https://goo.gle/lighthouse-agentic-web) ' +
|
|
15
|
+
'and validate the correctness of WebMCP integrations. ' +
|
|
15
16
|
'This category is still under development and subject to change.',
|
|
16
17
|
/** Title of the WebMCP group of audits. */
|
|
17
18
|
webmcpGroupTitle: 'WebMCP',
|
|
@@ -91,4 +91,5 @@ export function resolveModulePath(moduleIdentifier: string, configDir?: string |
|
|
|
91
91
|
* @return {LH.Config.Settings}
|
|
92
92
|
*/
|
|
93
93
|
export function resolveSettings(settingsJson?: LH.SharedFlagsSettings, overrides?: LH.Flags | undefined): LH.Config.Settings;
|
|
94
|
+
import * as LH from '../../types/lh.js';
|
|
94
95
|
//# sourceMappingURL=config-helpers.d.ts.map
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Copyright 2019 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
6
|
import path from 'path';
|
|
8
7
|
import {createRequire} from 'module';
|
|
9
8
|
import url from 'url';
|
|
10
9
|
|
|
11
10
|
import {isEqual} from 'lodash-es';
|
|
12
11
|
|
|
12
|
+
import * as LH from '../../types/lh.js';
|
|
13
13
|
import * as constants from './constants.js';
|
|
14
14
|
import ConfigPlugin from './config-plugin.js';
|
|
15
15
|
import {Runner} from '../runner.js';
|
package/core/config/config.d.ts
CHANGED
|
@@ -24,4 +24,5 @@ export function initializeConfig(gatherMode: LH.Gatherer.GatherMode, config?: LH
|
|
|
24
24
|
* @return {string}
|
|
25
25
|
*/
|
|
26
26
|
export function getConfigDisplayString(resolvedConfig: LH.Config.ResolvedConfig): string;
|
|
27
|
+
import * as LH from '../../types/lh.js';
|
|
27
28
|
//# sourceMappingURL=config.d.ts.map
|
package/core/config/config.js
CHANGED
|
@@ -8,6 +8,7 @@ import path from 'path';
|
|
|
8
8
|
|
|
9
9
|
import log from 'lighthouse-logger';
|
|
10
10
|
|
|
11
|
+
import * as LH from '../../types/lh.js';
|
|
11
12
|
import {Runner} from '../runner.js';
|
|
12
13
|
import defaultConfig from './default-config.js';
|
|
13
14
|
import {nonSimulatedSettingsOverrides} from './constants.js';
|
|
@@ -53,5 +53,6 @@ declare const MOTOGPOWER_EMULATION_METRICS: Required<LH.SharedFlagsSettings["scr
|
|
|
53
53
|
declare const DESKTOP_EMULATION_METRICS: Required<LH.SharedFlagsSettings["screenEmulation"]>;
|
|
54
54
|
declare const MOTOG4_USERAGENT: "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36";
|
|
55
55
|
declare const DESKTOP_USERAGENT: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36";
|
|
56
|
+
import * as LH from '../../types/lh.js';
|
|
56
57
|
export {};
|
|
57
58
|
//# sourceMappingURL=constants.d.ts.map
|
package/core/config/constants.js
CHANGED
|
@@ -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
|
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
export default config;
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright 2020 Google LLC
|
|
5
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Config for new audits that aren't quite ready for
|
|
9
|
-
* being enabled by default.
|
|
10
|
-
*/
|
|
11
2
|
/** @type {LH.Config} */
|
|
12
3
|
declare const config: LH.Config;
|
|
4
|
+
import * as LH from '../../types/lh.js';
|
|
13
5
|
//# sourceMappingURL=experimental-config.d.ts.map
|
package/core/config/filters.d.ts
CHANGED
|
@@ -72,4 +72,5 @@ export function filterCategoriesByExplicitFilters(categories: LH.Config.Resolved
|
|
|
72
72
|
* @return {LH.Config.ResolvedConfig['categories']}
|
|
73
73
|
*/
|
|
74
74
|
export function filterCategoriesByGatherMode(categories: LH.Config.ResolvedConfig["categories"], mode: LH.Gatherer.GatherMode): LH.Config.ResolvedConfig["categories"];
|
|
75
|
+
import * as LH from '../../types/lh.js';
|
|
75
76
|
//# sourceMappingURL=filters.d.ts.map
|
package/core/config/filters.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export default fullConfig;
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright 2017 Google LLC
|
|
5
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
*/
|
|
7
2
|
/** @type {LH.Config} */
|
|
8
3
|
declare const fullConfig: LH.Config;
|
|
4
|
+
import * as LH from '../../types/lh.js';
|
|
9
5
|
//# sourceMappingURL=full-config.d.ts.map
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export default config;
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright 2018 Google LLC
|
|
5
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
*/
|
|
7
2
|
/** @type {LH.Config} */
|
|
8
3
|
declare const config: LH.Config;
|
|
4
|
+
import * as LH from '../../types/lh.js';
|
|
9
5
|
//# sourceMappingURL=lr-mobile-config.d.ts.map
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export default perfConfig;
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright 2018 Google LLC
|
|
5
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
*/
|
|
7
2
|
/** @type {LH.Config} */
|
|
8
3
|
declare const perfConfig: LH.Config;
|
|
4
|
+
import * as LH from '../../types/lh.js';
|
|
9
5
|
//# sourceMappingURL=perf-config.d.ts.map
|
|
@@ -58,4 +58,5 @@ export function throwInvalidDependencyOrder(artifactId: string, dependencyKey: s
|
|
|
58
58
|
* @return {never}
|
|
59
59
|
*/
|
|
60
60
|
export function throwInvalidArtifactDependency(artifactId: string, dependencyKey: string): never;
|
|
61
|
+
import * as LH from '../../types/lh.js';
|
|
61
62
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -102,6 +102,29 @@ export class ExecutionContext {
|
|
|
102
102
|
args: T;
|
|
103
103
|
deps?: Array<Function | string>;
|
|
104
104
|
}): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Call a function on the given object.
|
|
107
|
+
* Returns a promise that resolves on a value of `mainFn`'s return type.
|
|
108
|
+
* @template {unknown[]} T, R
|
|
109
|
+
* @param {((thisArg: any, ...args: T) => R)} mainFn The main function to call.
|
|
110
|
+
* @param {{args: T, objectId: string, deps?: Array<Function|string>}} options `args` should
|
|
111
|
+
* match the args of `mainFn`, and can be any serializable value. `deps` are functions that must be
|
|
112
|
+
* defined for `mainFn` to work.
|
|
113
|
+
* @return {Promise<Awaited<R>>}
|
|
114
|
+
*/
|
|
115
|
+
evaluateOnObject<T extends unknown[], R>(mainFn: ((thisArg: any, ...args: T) => R), options: {
|
|
116
|
+
args: T;
|
|
117
|
+
objectId: string;
|
|
118
|
+
deps?: Array<Function | string>;
|
|
119
|
+
}): Promise<Awaited<R>>;
|
|
120
|
+
/**
|
|
121
|
+
* @param {string} functionDeclaration
|
|
122
|
+
* @param {{objectId: string}} options
|
|
123
|
+
* @return {Promise<*>}
|
|
124
|
+
*/
|
|
125
|
+
_callFunctionOn(functionDeclaration: string, options: {
|
|
126
|
+
objectId: string;
|
|
127
|
+
}): Promise<any>;
|
|
105
128
|
/**
|
|
106
129
|
* Cache native functions/objects inside window so we are sure polyfills do not overwrite the
|
|
107
130
|
* native implementations when the page loads.
|