lighthouse 13.4.0-dev.20260625 → 13.4.0-dev.20260630

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.
@@ -21,3 +21,5 @@ yarn lint --fix
21
21
  ```
22
22
 
23
23
  Make sure to run some unit tests and the type-checker / linter after making changes.
24
+
25
+ Always run `yarn update:sample-json` after making any change.
@@ -13,8 +13,9 @@ 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](http://goo.gle/lighthouse-agentic-a11y) helps AI agents to ' +
17
- 'navigate and interact with the page.',
16
+ description: 'A well-formed ' +
17
+ '[accessibility tree](https://developer.chrome.com/docs/lighthouse/agentic-browsing/accessibility-for-agents) ' +
18
+ 'helps AI agents to navigate and interact with the page.',
18
19
  /** Label of a table column that identifies the accessibility rule that failed. */
19
20
  columnRule: 'Failing Rule',
20
21
  /** Label of a table column that identifies the HTML element that failed the rule. */
@@ -19,7 +19,8 @@ const UIStrings = {
19
19
  description: 'If your llms.txt file does not follow recommendations, ' +
20
20
  'large language models may not be able to ' +
21
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.',
22
+ '[llms.txt](https://llmstxt.org/) file should be a Markdown file containing at least one H1 header. ' +
23
+ '[Learn more about the llms.txt audit](https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt).',
23
24
  /**
24
25
  * @description Label for the audit identifying that the request failed with a specific HTTP status code.
25
26
  * @example {500} statusCode
@@ -9,6 +9,783 @@ export type DXFeatureEvent = LH.TraceEvent & {
9
9
  };
10
10
  /** @typedef {LH.TraceEvent & {args: {feature: string, url?: string, lineNumber?: number, columnNumber?: number}}} DXFeatureEvent */
11
11
  declare class Baseline extends Audit {
12
+ static featureData: {
13
+ high: {
14
+ a: string;
15
+ abbr: string;
16
+ "abortable-fetch": string;
17
+ aborting: string;
18
+ "absolute-positioning": string;
19
+ accesskey: string;
20
+ address: string;
21
+ alerts: string;
22
+ all: string;
23
+ "angle-instanced-arrays": string;
24
+ "animation-composition": string;
25
+ "animations-css": string;
26
+ appearance: string;
27
+ "aria-attribute-reflection": string;
28
+ array: string;
29
+ "array-at": string;
30
+ "array-by-copy": string;
31
+ "array-copywithin": string;
32
+ "array-fill": string;
33
+ "array-find": string;
34
+ "array-findlast": string;
35
+ "array-flat": string;
36
+ "array-from": string;
37
+ "array-includes": string;
38
+ "array-isarray": string;
39
+ "array-iteration-methods": string;
40
+ "array-iterators": string;
41
+ "array-of": string;
42
+ "array-splice": string;
43
+ article: string;
44
+ aside: string;
45
+ "aspect-ratio": string;
46
+ "async-await": string;
47
+ "async-generators": string;
48
+ "async-iterators": string;
49
+ "attr-contents": string;
50
+ audio: string;
51
+ "audio-worklet": string;
52
+ autofocus: string;
53
+ "autonomous-custom-elements": string;
54
+ b: string;
55
+ backdrop: string;
56
+ background: string;
57
+ "background-blend-mode": string;
58
+ "background-clip": string;
59
+ "background-color": string;
60
+ "background-image": string;
61
+ "background-origin": string;
62
+ "background-position": string;
63
+ "background-repeat": string;
64
+ "background-size": string;
65
+ barprop: string;
66
+ base: string;
67
+ base64encodedecode: string;
68
+ bdi: string;
69
+ bdo: string;
70
+ beacons: string;
71
+ "before-after": string;
72
+ bigint: string;
73
+ bigint64array: string;
74
+ blockquote: string;
75
+ bmp: string;
76
+ body: string;
77
+ "border-image": string;
78
+ "border-radius": string;
79
+ borders: string;
80
+ "box-shadow": string;
81
+ "box-sizing": string;
82
+ br: string;
83
+ "broadcast-channel": string;
84
+ brotli: string;
85
+ button: string;
86
+ calc: string;
87
+ "calc-constants": string;
88
+ canvas: string;
89
+ "canvas-2d": string;
90
+ "canvas-createconicgradient": string;
91
+ "canvas-reset": string;
92
+ "canvas-roundrect": string;
93
+ cap: string;
94
+ "capture-stream-canvas": string;
95
+ "caret-color": string;
96
+ "cascade-layers": string;
97
+ "case-insensitive-attributes": string;
98
+ ch: string;
99
+ "change-event": string;
100
+ "channel-messaging": string;
101
+ charset: string;
102
+ cite: string;
103
+ "class-syntax": string;
104
+ "clip-path": string;
105
+ "clip-path-animatable": string;
106
+ "clip-path-boxes": string;
107
+ "clipboard-events": string;
108
+ code: string;
109
+ color: string;
110
+ "color-function": string;
111
+ "color-gamut": string;
112
+ "color-mix": string;
113
+ "color-scheme": string;
114
+ colrv0: string;
115
+ "column-fill": string;
116
+ "column-span": string;
117
+ "composition-events": string;
118
+ "compression-streams": string;
119
+ "conic-gradients": string;
120
+ console: string;
121
+ "constraint-validation": string;
122
+ "constructed-stylesheets": string;
123
+ contain: string;
124
+ "contain-inline-size": string;
125
+ "contain-intrinsic-size": string;
126
+ "contain-layout": string;
127
+ "contain-paint": string;
128
+ "contain-size": string;
129
+ "contain-style": string;
130
+ "container-queries": string;
131
+ content: string;
132
+ contenteditable: string;
133
+ cookies: string;
134
+ cors: string;
135
+ "counter-set": string;
136
+ "counter-style": string;
137
+ counters: string;
138
+ createimagebitmap: string;
139
+ "credential-management": string;
140
+ csp: string;
141
+ "css-escape": string;
142
+ "css-object-model": string;
143
+ "css-supports": string;
144
+ "cubic-bezier-easing": string;
145
+ currentcolor: string;
146
+ "custom-properties": string;
147
+ data: string;
148
+ "data-urls": string;
149
+ dataset: string;
150
+ date: string;
151
+ "dedicated-workers": string;
152
+ default: string;
153
+ del: string;
154
+ "description-list": string;
155
+ destructuring: string;
156
+ details: string;
157
+ "device-orientation-events": string;
158
+ dfn: string;
159
+ dialog: string;
160
+ "dir-pseudo": string;
161
+ dirname: string;
162
+ display: string;
163
+ "display-flow-root": string;
164
+ "display-list-item": string;
165
+ "display-table": string;
166
+ div: string;
167
+ dom: string;
168
+ "dom-geometry": string;
169
+ "dominant-baseline": string;
170
+ domparser: string;
171
+ download: string;
172
+ draganddrop: string;
173
+ "dynamic-range": string;
174
+ "element-from-point": string;
175
+ em: string;
176
+ "em-unit": string;
177
+ embed: string;
178
+ empty: string;
179
+ "encrypted-media-extensions": string;
180
+ enterkeyhint: string;
181
+ "error-cause": string;
182
+ events: string;
183
+ ex: string;
184
+ "exp-functions": string;
185
+ exponentiation: string;
186
+ "ext-blend-minmax": string;
187
+ "ext-color-buffer-float": string;
188
+ "ext-color-buffer-half-float": string;
189
+ "ext-srgb": string;
190
+ "ext-texture-filter-anisotropic": string;
191
+ fetch: string;
192
+ fieldset: string;
193
+ figure: string;
194
+ file: string;
195
+ "file-selector-button": string;
196
+ filter: string;
197
+ "first-letter": string;
198
+ "first-line": string;
199
+ "fit-content": string;
200
+ "fixed-positioning": string;
201
+ flexbox: string;
202
+ "flexbox-gap": string;
203
+ "float-clear": string;
204
+ "focus-events": string;
205
+ "focus-visible": string;
206
+ "focus-within": string;
207
+ "font-display": string;
208
+ "font-face": string;
209
+ "font-family": string;
210
+ "font-family-system": string;
211
+ "font-feature-settings": string;
212
+ "font-kerning": string;
213
+ "font-loading": string;
214
+ "font-optical-sizing": string;
215
+ "font-palette": string;
216
+ "font-shorthand": string;
217
+ "font-size": string;
218
+ "font-stretch": string;
219
+ "font-style": string;
220
+ "font-synthesis": string;
221
+ "font-synthesis-small-caps": string;
222
+ "font-synthesis-style": string;
223
+ "font-synthesis-weight": string;
224
+ "font-variant": string;
225
+ "font-variant-alternates": string;
226
+ "font-variant-caps": string;
227
+ "font-variant-east-asian": string;
228
+ "font-variant-ligatures": string;
229
+ "font-variant-numeric": string;
230
+ "font-variation-settings": string;
231
+ "font-weight": string;
232
+ "forced-colors": string;
233
+ form: string;
234
+ "form-associated-custom-elements": string;
235
+ "form-validity-pseudos": string;
236
+ functions: string;
237
+ gamepad: string;
238
+ generators: string;
239
+ geolocation: string;
240
+ "get-computed-style": string;
241
+ gif: string;
242
+ globalthis: string;
243
+ gradients: string;
244
+ grid: string;
245
+ "grid-animation": string;
246
+ "hardware-concurrency": string;
247
+ "hashbang-comments": string;
248
+ hashchange: string;
249
+ head: string;
250
+ "header-footer": string;
251
+ headings: string;
252
+ hgroup: string;
253
+ history: string;
254
+ host: string;
255
+ hr: string;
256
+ hsl: string;
257
+ hsts: string;
258
+ html: string;
259
+ "http-authentication": string;
260
+ http11: string;
261
+ http2: string;
262
+ hwb: string;
263
+ "hyphenate-character": string;
264
+ hyphens: string;
265
+ i: string;
266
+ ic: string;
267
+ iframe: string;
268
+ "iframe-sandbox": string;
269
+ "iframe-srcdoc": string;
270
+ "image-maps": string;
271
+ "image-orientation": string;
272
+ "image-rendering": string;
273
+ "image-set": string;
274
+ imagebitmaprenderingcontext: string;
275
+ img: string;
276
+ import: string;
277
+ "import-maps": string;
278
+ indeterminate: string;
279
+ indexeddb: string;
280
+ "individual-transforms": string;
281
+ inert: string;
282
+ "inherit-value": string;
283
+ "initial-value": string;
284
+ input: string;
285
+ "input-button": string;
286
+ "input-checkbox": string;
287
+ "input-date-time": string;
288
+ "input-email-tel-url": string;
289
+ "input-event": string;
290
+ "input-file": string;
291
+ "input-file-multiple": string;
292
+ "input-hidden": string;
293
+ "input-image": string;
294
+ "input-number": string;
295
+ "input-password": string;
296
+ "input-radio": string;
297
+ "input-range": string;
298
+ "input-reset": string;
299
+ "input-selectors": string;
300
+ "input-submit": string;
301
+ inputmode: string;
302
+ ins: string;
303
+ interaction: string;
304
+ "intersection-observer": string;
305
+ intl: string;
306
+ "intl-display-names": string;
307
+ "intl-list-format": string;
308
+ "intl-locale": string;
309
+ "intl-plural-rules": string;
310
+ "intl-relative-time-format": string;
311
+ is: string;
312
+ "is-secure-context": string;
313
+ isolation: string;
314
+ iterators: string;
315
+ javascript: string;
316
+ jpeg: string;
317
+ "js-modules": string;
318
+ "js-modules-workers": string;
319
+ json: string;
320
+ kbd: string;
321
+ "keyboard-events": string;
322
+ lab: string;
323
+ label: string;
324
+ lang: string;
325
+ "lang-attr": string;
326
+ language: string;
327
+ "layout-direction-override": string;
328
+ "let-const": string;
329
+ "letter-spacing": string;
330
+ lh: string;
331
+ "line-break": string;
332
+ "line-height": string;
333
+ "linear-easing": string;
334
+ link: string;
335
+ "link-rel-preconnect": string;
336
+ "link-rel-preload": string;
337
+ "link-selectors": string;
338
+ "list-elements": string;
339
+ "list-style": string;
340
+ localstorage: string;
341
+ location: string;
342
+ "logical-assignments": string;
343
+ "logical-properties": string;
344
+ main: string;
345
+ map: string;
346
+ margin: string;
347
+ mark: string;
348
+ "mask-type": string;
349
+ masks: string;
350
+ matchmedia: string;
351
+ mathml: string;
352
+ "media-capabilities": string;
353
+ "media-capture": string;
354
+ "media-playback-quality": string;
355
+ "media-queries": string;
356
+ "media-query-range-syntax": string;
357
+ "mediastream-recording": string;
358
+ menu: string;
359
+ messageerror: string;
360
+ meta: string;
361
+ "meta-refresh": string;
362
+ meter: string;
363
+ "min-max-clamp": string;
364
+ "min-max-content": string;
365
+ "min-max-width-height": string;
366
+ "mix-blend-mode": string;
367
+ "mixed-content": string;
368
+ modal: string;
369
+ modulepreload: string;
370
+ "motion-path": string;
371
+ "mouse-events": string;
372
+ "multi-column": string;
373
+ mutationobserver: string;
374
+ "named-color": string;
375
+ namespace: string;
376
+ nav: string;
377
+ "navigation-timing": string;
378
+ navigator: string;
379
+ nesting: string;
380
+ not: string;
381
+ "notifications-apps": string;
382
+ "nth-child": string;
383
+ "nth-child-of": string;
384
+ "nth-of-type": string;
385
+ "nullish-coalescing": string;
386
+ number: string;
387
+ "numeric-separators": string;
388
+ object: string;
389
+ "object-fit": string;
390
+ "object-hasown": string;
391
+ "object-object": string;
392
+ "object-position": string;
393
+ "oes-element-index-uint": string;
394
+ "oes-fbo-render-mipmap": string;
395
+ "oes-standard-derivatives": string;
396
+ "oes-texture-float": string;
397
+ "oes-texture-float-linear": string;
398
+ "oes-texture-half-float": string;
399
+ "oes-vertex-array-object": string;
400
+ "offline-audio-context": string;
401
+ "offscreen-canvas": string;
402
+ oklab: string;
403
+ online: string;
404
+ opacity: string;
405
+ "opacity-svg": string;
406
+ "optional-catch-binding": string;
407
+ "origin-private-file-system": string;
408
+ outline: string;
409
+ outlines: string;
410
+ output: string;
411
+ overflow: string;
412
+ "overflow-clip": string;
413
+ "overflow-shorthand": string;
414
+ "overflow-wrap": string;
415
+ p: string;
416
+ padding: string;
417
+ "page-breaks": string;
418
+ "page-transition-events": string;
419
+ "page-visibility": string;
420
+ "paint-timing": string;
421
+ "pdf-viewer": string;
422
+ performance: string;
423
+ permissions: string;
424
+ "physical-properties": string;
425
+ picture: string;
426
+ placeholder: string;
427
+ "placeholder-shown": string;
428
+ png: string;
429
+ "pointer-events": string;
430
+ "pointer-events-api": string;
431
+ position: string;
432
+ postmessage: string;
433
+ pre: string;
434
+ "prefers-color-scheme": string;
435
+ "prefers-contrast": string;
436
+ "prefers-reduced-motion": string;
437
+ "preloading-responsive-images": string;
438
+ "preserves-pitch": string;
439
+ print: string;
440
+ "print-events": string;
441
+ progress: string;
442
+ promise: string;
443
+ "promise-allsettled": string;
444
+ "promise-any": string;
445
+ "promise-finally": string;
446
+ "proxy-reflect": string;
447
+ push: string;
448
+ q: string;
449
+ "q-unit": string;
450
+ queuemicrotask: string;
451
+ quotes: string;
452
+ "read-write-pseudos": string;
453
+ "referrer-policy": string;
454
+ regexp: string;
455
+ "relative-positioning": string;
456
+ rem: string;
457
+ "request-animation-frame": string;
458
+ "request-animation-frame-workers": string;
459
+ "resize-observer": string;
460
+ resolution: string;
461
+ "resolution-compat": string;
462
+ "resource-size": string;
463
+ "resource-timing": string;
464
+ "revert-value": string;
465
+ rgb: string;
466
+ rlh: string;
467
+ root: string;
468
+ ruby: string;
469
+ s: string;
470
+ "safe-area-inset": string;
471
+ samp: string;
472
+ "scope-pseudo": string;
473
+ screen: string;
474
+ "screen-orientation": string;
475
+ script: string;
476
+ scripting: string;
477
+ "scroll-behavior": string;
478
+ "scroll-elements": string;
479
+ "scroll-into-view": string;
480
+ "scroll-snap": string;
481
+ search: string;
482
+ "search-input-type": string;
483
+ section: string;
484
+ select: string;
485
+ "selection-api": string;
486
+ selectors: string;
487
+ "server-sent-events": string;
488
+ "server-timing": string;
489
+ "service-workers": string;
490
+ set: string;
491
+ setinterval: string;
492
+ settimeout: string;
493
+ "shadow-dom": string;
494
+ "shadow-parts": string;
495
+ "shape-outside": string;
496
+ shapes: string;
497
+ "shared-memory": string;
498
+ slot: string;
499
+ "slot-assign": string;
500
+ small: string;
501
+ "smil-svg-animations": string;
502
+ source: string;
503
+ "sourcemap-header": string;
504
+ span: string;
505
+ "speech-synthesis": string;
506
+ spellcheck: string;
507
+ spread: string;
508
+ srcset: string;
509
+ "stable-array-sort": string;
510
+ "static-positioning": string;
511
+ "steps-easing": string;
512
+ "sticky-positioning": string;
513
+ "storage-access": string;
514
+ "storage-manager": string;
515
+ streams: string;
516
+ "string-at": string;
517
+ "string-codepoint": string;
518
+ "string-includes": string;
519
+ "string-matchall": string;
520
+ "string-normalize": string;
521
+ "string-pad": string;
522
+ "string-raw": string;
523
+ "string-repeat": string;
524
+ "string-replaceall": string;
525
+ "string-startsends-with": string;
526
+ "string-trim-startend": string;
527
+ "string-wellformed": string;
528
+ strings: string;
529
+ strong: string;
530
+ "structured-clone": string;
531
+ style: string;
532
+ "style-attr": string;
533
+ "sub-sup": string;
534
+ subgrid: string;
535
+ "subresource-integrity": string;
536
+ supports: string;
537
+ "supports-compat": string;
538
+ svg: string;
539
+ "svg-filters": string;
540
+ symbol: string;
541
+ "system-color": string;
542
+ "tab-size": string;
543
+ tabindex: string;
544
+ table: string;
545
+ target: string;
546
+ template: string;
547
+ "template-literals": string;
548
+ "text-align": string;
549
+ "text-align-last": string;
550
+ "text-combine-upright": string;
551
+ "text-decoration": string;
552
+ "text-decoration-skip-ink": string;
553
+ "text-emphasis": string;
554
+ "text-encoding": string;
555
+ "text-indent": string;
556
+ "text-orientation": string;
557
+ "text-overflow": string;
558
+ "text-shadow": string;
559
+ "text-stroke-fill": string;
560
+ "text-tracks": string;
561
+ "text-transform": string;
562
+ "text-underline-offset": string;
563
+ "text-underline-position": string;
564
+ textarea: string;
565
+ time: string;
566
+ title: string;
567
+ "title-attr": string;
568
+ "touch-action": string;
569
+ transforms2d: string;
570
+ transforms3d: string;
571
+ transitions: string;
572
+ translate: string;
573
+ "trig-functions": string;
574
+ "two-value-display": string;
575
+ "typed-array-iteration-methods": string;
576
+ "typed-array-iterators": string;
577
+ "typed-arrays": string;
578
+ u: string;
579
+ "unicode-point-escapes": string;
580
+ "unset-value": string;
581
+ update: string;
582
+ "upgrade-insecure-requests": string;
583
+ url: string;
584
+ "url-canparse": string;
585
+ "user-action-pseudos": string;
586
+ "user-activation": string;
587
+ "user-agent-sniffing": string;
588
+ "user-pseudos": string;
589
+ var: string;
590
+ "vertical-align": string;
591
+ video: string;
592
+ "viewport-unit-variants": string;
593
+ "viewport-units": string;
594
+ visibility: string;
595
+ "visual-viewport": string;
596
+ wasm: string;
597
+ "wasm-bigint": string;
598
+ "wasm-bulk-memory": string;
599
+ "wasm-exception-handling": string;
600
+ "wasm-multi-value": string;
601
+ "wasm-mutable-globals": string;
602
+ "wasm-non-trapping-float-to-int": string;
603
+ "wasm-reference-types": string;
604
+ "wasm-sign-extension-operators": string;
605
+ "wasm-simd": string;
606
+ "wasm-threads": string;
607
+ wbr: string;
608
+ "weak-references": string;
609
+ weakmap: string;
610
+ weakset: string;
611
+ "web-animations": string;
612
+ "web-audio": string;
613
+ "web-cryptography": string;
614
+ "web-locks": string;
615
+ webauthn: string;
616
+ "webauthn-public-key-easy": string;
617
+ webgl: string;
618
+ "webgl-color-buffer-float": string;
619
+ "webgl-compressed-texture-astc": string;
620
+ "webgl-compressed-texture-etc": string;
621
+ "webgl-compressed-texture-etc1": string;
622
+ "webgl-debug-renderer-info": string;
623
+ "webgl-debug-shaders": string;
624
+ "webgl-depth-texture": string;
625
+ "webgl-lose-context": string;
626
+ "webgl-oes-draw-buffers-indexed": string;
627
+ webgl2: string;
628
+ webp: string;
629
+ webrtc: string;
630
+ "webrtc-sctp": string;
631
+ "webrtc-stats": string;
632
+ websockets: string;
633
+ webvtt: string;
634
+ "webvtt-cue-settings": string;
635
+ where: string;
636
+ "white-space": string;
637
+ "width-height": string;
638
+ "will-change": string;
639
+ window: string;
640
+ "word-break": string;
641
+ "word-spacing": string;
642
+ "writing-mode": string;
643
+ xhr: string;
644
+ "xml-serializer": string;
645
+ xpath: string;
646
+ xslt: string;
647
+ "z-index": string;
648
+ };
649
+ low: {
650
+ "abortsignal-any": string;
651
+ "abortsignal-timeout": string;
652
+ "abs-sign": string;
653
+ "active-view-transition": string;
654
+ "align-content-block": string;
655
+ "alt-text-generated-content": string;
656
+ "array-fromasync": string;
657
+ "array-group": string;
658
+ "async-clipboard": string;
659
+ "atomics-pause": string;
660
+ "atomics-wait-async": string;
661
+ avif: string;
662
+ "backdrop-filter": string;
663
+ "baseline-shift": string;
664
+ "canvas-2d-willreadfrequently": string;
665
+ "check-visibility": string;
666
+ "clipboard-supports": string;
667
+ "composed-ranges": string;
668
+ "container-style-queries": string;
669
+ "content-visibility": string;
670
+ "contenteditable-plaintextonly": string;
671
+ "contrast-color": string;
672
+ "cookie-enabled": string;
673
+ "crisp-edges": string;
674
+ "declarative-shadow-dom": string;
675
+ "details-content": string;
676
+ "details-name": string;
677
+ "document-caretpositionfrompoint": string;
678
+ "event-timing": string;
679
+ "fetch-priority": string;
680
+ float16array: string;
681
+ "font-family-math": string;
682
+ "font-size-adjust": string;
683
+ gethtml: string;
684
+ getorinsert: string;
685
+ "gradient-interpolation": string;
686
+ has: string;
687
+ highlight: string;
688
+ http3: string;
689
+ "input-file-webkitdirectory": string;
690
+ "intl-duration-format": string;
691
+ "intl-segmenter": string;
692
+ "invoker-commands": string;
693
+ "iterator-concat": string;
694
+ "iterator-methods": string;
695
+ "js-modules-service-workers": string;
696
+ "js-modules-shared-workers": string;
697
+ "json-modules": string;
698
+ "json-raw": string;
699
+ "largest-contentful-paint": string;
700
+ "light-dark": string;
701
+ "link-rel-dns-prefetch": string;
702
+ "loading-lazy": string;
703
+ "math-sum-precise": string;
704
+ navigation: string;
705
+ "open-pseudo": string;
706
+ "page-setup": string;
707
+ "paint-order": string;
708
+ "parse-html-unsafe": string;
709
+ popover: string;
710
+ "print-color-adjust": string;
711
+ "promise-try": string;
712
+ "promise-withresolvers": string;
713
+ rcap: string;
714
+ rch: string;
715
+ "readable-byte-streams": string;
716
+ "rect-xywh": string;
717
+ "regexp-escape": string;
718
+ "registered-custom-properties": string;
719
+ "relative-color": string;
720
+ reporting: string;
721
+ "reporting-csp-violations": string;
722
+ "request-video-frame-callback": string;
723
+ requestclose: string;
724
+ "resizable-buffers": string;
725
+ rex: string;
726
+ ric: string;
727
+ "round-mod-rem": string;
728
+ "ruby-align": string;
729
+ "ruby-position": string;
730
+ scope: string;
731
+ "screen-wake-lock": string;
732
+ "scroll-to-text-fragment": string;
733
+ "scrollbar-color": string;
734
+ "scrollbar-gutter": string;
735
+ "scrollbar-width": string;
736
+ scrollend: string;
737
+ "set-methods": string;
738
+ "shape-function": string;
739
+ "shared-workers": string;
740
+ "starting-style": string;
741
+ state: string;
742
+ "target-text": string;
743
+ "text-decoration-skip-ink-all": string;
744
+ "text-decoration-spelling-grammar": string;
745
+ "text-indent-each-line": string;
746
+ "text-indent-hanging": string;
747
+ "text-wrap": string;
748
+ "text-wrap-balance": string;
749
+ "toggleevent-source": string;
750
+ "transferable-arraybuffer": string;
751
+ "transform-box": string;
752
+ "transition-behavior": string;
753
+ "trusted-types": string;
754
+ "uint8array-base64-hex": string;
755
+ urlpattern: string;
756
+ "vertical-form-controls": string;
757
+ "view-transition-class": string;
758
+ "view-transitions": string;
759
+ "wasm-branch-hinting": string;
760
+ "wasm-extended-constant-expressions": string;
761
+ "wasm-garbage-collection": string;
762
+ "wasm-tail-call-optimization": string;
763
+ "wasm-typed-fun-refs": string;
764
+ "webgl-color-management": string;
765
+ "webgl2-color-management": string;
766
+ "webrtc-encoded-transform": string;
767
+ webtransport: string;
768
+ "white-space-collapse": string;
769
+ zoom: string;
770
+ zstd: string;
771
+ };
772
+ limited: string[];
773
+ };
774
+ /**
775
+ * Determines the baseline status and display string for a given feature ID.
776
+ * @param {string} featureId
777
+ * @param {{high: Record<string, string>, low: Record<string, string>, limited: string[]}} featureData
778
+ * @param {Date} currentDate
779
+ * @return {{displayStatus: string, baselineTier: 'high' | 'low' | 'limited'} | null}
780
+ */
781
+ static getFeatureStatus(featureId: string, featureData: {
782
+ high: Record<string, string>;
783
+ low: Record<string, string>;
784
+ limited: string[];
785
+ }, currentDate: Date): {
786
+ displayStatus: string;
787
+ baselineTier: "high" | "low" | "limited";
788
+ } | null;
12
789
  /**
13
790
  * @param {LH.Artifacts} artifacts
14
791
  * @return {Promise<LH.Audit.Product>}
@@ -31,6 +31,8 @@ const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
31
31
  /** @typedef {LH.TraceEvent & {args: {feature: string, url?: string, lineNumber?: number, columnNumber?: number}}} DXFeatureEvent */
32
32
 
33
33
  class Baseline extends Audit {
34
+ static featureData = data;
35
+
34
36
  /**
35
37
  * @return {LH.Audit.Meta}
36
38
  */
@@ -44,6 +46,51 @@ class Baseline extends Audit {
44
46
  };
45
47
  }
46
48
 
49
+ /**
50
+ * Determines the baseline status and display string for a given feature ID.
51
+ * @param {string} featureId
52
+ * @param {{high: Record<string, string>, low: Record<string, string>, limited: string[]}} featureData
53
+ * @param {Date} currentDate
54
+ * @return {{displayStatus: string, baselineTier: 'high' | 'low' | 'limited'} | null}
55
+ */
56
+ static getFeatureStatus(featureId, featureData, currentDate) {
57
+ if (featureId in featureData.high) {
58
+ const highData = /** @type {Record<string, string>} */ (featureData.high);
59
+ return {
60
+ displayStatus: `Widely Available (${highData[featureId]})`,
61
+ baselineTier: 'high',
62
+ };
63
+ }
64
+
65
+ if (featureId in featureData.low) {
66
+ const lowData = /** @type {Record<string, string>} */ (featureData.low);
67
+ const widelyAvailableDate = new Date(lowData[featureId]);
68
+ widelyAvailableDate.setUTCMonth(widelyAvailableDate.getUTCMonth() + 30);
69
+ const widelyAvailableDateStr = widelyAvailableDate.toISOString().slice(0, 10);
70
+
71
+ if (widelyAvailableDate <= currentDate) {
72
+ return {
73
+ displayStatus: `Widely Available (${widelyAvailableDateStr})`,
74
+ baselineTier: 'high',
75
+ };
76
+ } else {
77
+ return {
78
+ displayStatus: `Newly Available (${lowData[featureId]})`,
79
+ baselineTier: 'low',
80
+ };
81
+ }
82
+ }
83
+
84
+ if (featureData.limited.includes(featureId)) {
85
+ return {
86
+ displayStatus: 'Limited Availability',
87
+ baselineTier: 'limited',
88
+ };
89
+ }
90
+
91
+ return null;
92
+ }
93
+
47
94
  /**
48
95
  * @param {LH.Artifacts} artifacts
49
96
  * @return {Promise<LH.Audit.Product>}
@@ -82,6 +129,7 @@ class Baseline extends Audit {
82
129
 
83
130
  const baselineFeatures = Array.from(featuresMap.values());
84
131
  const baselineStatus = [];
132
+ const currentDate = new Date;
85
133
 
86
134
  for (const feature of baselineFeatures) {
87
135
  if (!feature.featureId) {
@@ -90,20 +138,9 @@ class Baseline extends Audit {
90
138
 
91
139
  const featureId = feature.featureId;
92
140
 
93
- let displayStatus = 'Limited Availability';
94
- let baselineTier = 'limited';
95
-
96
- if (featureId in data.high) {
97
- const highData = /** @type {Record<string, string>} */ (data.high);
98
- displayStatus = `Widely Available (${highData[featureId]})`;
99
- baselineTier = 'high';
100
- } else if (featureId in data.low) {
101
- const lowData = /** @type {Record<string, string>} */ (data.low);
102
- displayStatus = `Newly Available (${lowData[featureId]})`;
103
- baselineTier = 'low';
104
- } else if (!data.limited.includes(featureId)) {
105
- continue;
106
- }
141
+ const status = Baseline.getFeatureStatus(featureId, Baseline.featureData, currentDate);
142
+ if (!status) continue;
143
+ const {displayStatus, baselineTier} = status;
107
144
 
108
145
  baselineStatus.push({
109
146
  featureId: {
@@ -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](http://goo.gle/webmcp-docs) annotations to the forms listed below. This helps AI ' +
15
- 'agents identify and interact with these forms more reliably.',
14
+ description: 'Consider adding [WebMCP](https://developer.chrome.com/docs/ai/webmcp) annotations to the forms listed below. ' +
15
+ 'This helps AI 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](http://goo.gle/webmcp-docs) registered at the time of analysis.',
18
+ description: 'Lists the [WebMCP tools](https://developer.chrome.com/docs/ai/webmcp) 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,9 +13,9 @@ 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](http://goo.gle/webmcp-docs) are required for AI agents to ' +
17
- ' understand and interact with tools correctly. ' +
18
- 'Please fix any errors or warnings reported by the browser.',
16
+ description: 'Valid [WebMCP schemas](https://developer.chrome.com/docs/ai/webmcp) are required for AI agents to ' +
17
+ 'understand and interact with tools correctly. ' +
18
+ 'Please fix any errors or warnings reported by the browser.',
19
19
  /** Header of the table column which displays the element. */
20
20
  columnElement: 'Element',
21
21
  /** Header of the table column which displays the issue. */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lighthouse",
3
3
  "type": "module",
4
- "version": "13.4.0-dev.20260625",
4
+ "version": "13.4.0-dev.20260630",
5
5
  "description": "Automated auditing, performance metrics, and best practices for the web.",
6
6
  "main": "./core/index.js",
7
7
  "bin": {
@@ -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](http://goo.gle/lighthouse-agentic-a11y) helps AI agents to navigate and interact with the page."
606
+ "message": "A well-formed [accessibility tree](https://developer.chrome.com/docs/lighthouse/agentic-browsing/accessibility-for-agents) 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 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."
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. [Learn more about the llms.txt audit](https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt)."
622
622
  },
623
623
  "core/audits/agentic/llms-txt.js | displayValueHttpBadCode": {
624
624
  "message": "Failed with HTTP status {statusCode}"
@@ -1356,7 +1356,7 @@
1356
1356
  "message": "Form"
1357
1357
  },
1358
1358
  "core/audits/webmcp-form-coverage.js | description": {
1359
- "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."
1359
+ "message": "Consider adding [WebMCP](https://developer.chrome.com/docs/ai/webmcp) annotations to the forms listed below. This helps AI agents identify and interact with these forms more reliably."
1360
1360
  },
1361
1361
  "core/audits/webmcp-form-coverage.js | displayValue": {
1362
1362
  "message": "{itemCount, plural,\n =1 {1 form missing annotations}\n other {# forms missing annotations}\n }"
@@ -1380,7 +1380,7 @@
1380
1380
  "message": "Tool name"
1381
1381
  },
1382
1382
  "core/audits/webmcp-registered-tools.js | description": {
1383
- "message": "Lists the [WebMCP tools](http://goo.gle/webmcp-docs) registered at the time of analysis."
1383
+ "message": "Lists the [WebMCP tools](https://developer.chrome.com/docs/ai/webmcp) registered at the time of analysis."
1384
1384
  },
1385
1385
  "core/audits/webmcp-registered-tools.js | title": {
1386
1386
  "message": "WebMCP tools registered"
@@ -1398,7 +1398,7 @@
1398
1398
  "message": "Issue"
1399
1399
  },
1400
1400
  "core/audits/webmcp-schema-validity.js | description": {
1401
- "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."
1401
+ "message": "Valid [WebMCP schemas](https://developer.chrome.com/docs/ai/webmcp) are required for AI agents to understand and interact with tools correctly. Please fix any errors or warnings reported by the browser."
1402
1402
  },
1403
1403
  "core/audits/webmcp-schema-validity.js | failureTitle": {
1404
1404
  "message": "WebMCP schemas are invalid"
@@ -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̂ŕêé](http://goo.gle/lighthouse-agentic-a11y) ĥé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̂ŕêé](https://developer.chrome.com/docs/lighthouse/agentic-browsing/accessibility-for-agents) ĥé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́îĺê 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̂."
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̂. [Ĺêár̂ń m̂ór̂é âb́ôút̂ t́ĥé l̂ĺm̂ś.t̂x́t̂ áûd́ît́](https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt)."
622
622
  },
623
623
  "core/audits/agentic/llms-txt.js | displayValueHttpBadCode": {
624
624
  "message": "F̂áîĺêd́ ŵít̂h́ ĤT́T̂Ṕ ŝt́ât́ûś {statusCode}"
@@ -1356,7 +1356,7 @@
1356
1356
  "message": "F̂ór̂ḿ"
1357
1357
  },
1358
1358
  "core/audits/webmcp-form-coverage.js | description": {
1359
- "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̂ý."
1359
+ "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ [Ŵéb̂ḾĈṔ](https://developer.chrome.com/docs/ai/webmcp) âń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̂ý."
1360
1360
  },
1361
1361
  "core/audits/webmcp-form-coverage.js | displayValue": {
1362
1362
  "message": "{itemCount, plural,\n =1 {1 f̂ór̂ḿ m̂íŝśîńĝ án̂ńôt́ât́îón̂ś}\n other {# f̂ór̂ḿŝ ḿîśŝín̂ǵ âńn̂ót̂át̂íôńŝ}\n }"
@@ -1380,7 +1380,7 @@
1380
1380
  "message": "T̂óôĺ n̂ám̂é"
1381
1381
  },
1382
1382
  "core/audits/webmcp-registered-tools.js | description": {
1383
- "message": "L̂íŝt́ŝ t́ĥé [Ŵéb̂ḾĈṔ t̂óôĺŝ](http://goo.gle/webmcp-docs) ŕêǵîśt̂ér̂éd̂ át̂ t́ĥé t̂ím̂é ôf́ âńâĺŷśîś."
1383
+ "message": "L̂íŝt́ŝ t́ĥé [Ŵéb̂ḾĈṔ t̂óôĺŝ](https://developer.chrome.com/docs/ai/webmcp) ŕêǵîśt̂ér̂éd̂ át̂ t́ĥé t̂ím̂é ôf́ âńâĺŷśîś."
1384
1384
  },
1385
1385
  "core/audits/webmcp-registered-tools.js | title": {
1386
1386
  "message": "Ŵéb̂ḾĈṔ t̂óôĺŝ ŕêǵîśt̂ér̂éd̂"
@@ -1398,7 +1398,7 @@
1398
1398
  "message": "Îśŝúê"
1399
1399
  },
1400
1400
  "core/audits/webmcp-schema-validity.js | description": {
1401
- "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̂."
1401
+ "message": "V̂ál̂íd̂ [Ẃêb́M̂ĆP̂ śĉh́êḿâś](https://developer.chrome.com/docs/ai/webmcp) âŕê ŕê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̂."
1402
1402
  },
1403
1403
  "core/audits/webmcp-schema-validity.js | failureTitle": {
1404
1404
  "message": "Ŵéb̂ḾĈṔ ŝćĥém̂áŝ ár̂é îńv̂ál̂íd̂"