lighthouse 12.8.2-dev.20250924 → 12.8.2-dev.20250926

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.
Files changed (69) hide show
  1. package/cli/test/smokehouse/version-check.d.ts +1 -1
  2. package/core/config/default-config.js +0 -3
  3. package/core/gather/gatherers/image-elements.js +32 -6
  4. package/core/lib/emulation.d.ts +10 -0
  5. package/core/lib/emulation.js +21 -6
  6. package/core/lib/legacy-javascript/legacy-javascript.js +4 -11
  7. package/core/lib/proto-preprocessor.js +5 -3
  8. package/package.json +3 -4
  9. package/readme.md +1 -1
  10. package/report/renderer/details-renderer.d.ts +1 -2
  11. package/report/renderer/details-renderer.js +0 -1
  12. package/shared/localization/locales/ar-XB.json +0 -30
  13. package/shared/localization/locales/ar.json +0 -30
  14. package/shared/localization/locales/bg.json +0 -30
  15. package/shared/localization/locales/ca.json +0 -30
  16. package/shared/localization/locales/cs.json +0 -30
  17. package/shared/localization/locales/da.json +0 -30
  18. package/shared/localization/locales/de.json +0 -30
  19. package/shared/localization/locales/el.json +0 -30
  20. package/shared/localization/locales/en-GB.json +0 -30
  21. package/shared/localization/locales/en-US.json +0 -30
  22. package/shared/localization/locales/en-XA.json +0 -30
  23. package/shared/localization/locales/en-XL.json +0 -30
  24. package/shared/localization/locales/es-419.json +0 -30
  25. package/shared/localization/locales/es.json +0 -30
  26. package/shared/localization/locales/fi.json +0 -30
  27. package/shared/localization/locales/fil.json +0 -30
  28. package/shared/localization/locales/fr.json +0 -30
  29. package/shared/localization/locales/he.json +0 -30
  30. package/shared/localization/locales/hi.json +0 -30
  31. package/shared/localization/locales/hr.json +0 -30
  32. package/shared/localization/locales/hu.json +0 -30
  33. package/shared/localization/locales/id.json +0 -30
  34. package/shared/localization/locales/it.json +0 -30
  35. package/shared/localization/locales/ja.json +0 -30
  36. package/shared/localization/locales/ko.json +0 -30
  37. package/shared/localization/locales/lt.json +0 -30
  38. package/shared/localization/locales/lv.json +0 -30
  39. package/shared/localization/locales/nl.json +0 -30
  40. package/shared/localization/locales/no.json +0 -30
  41. package/shared/localization/locales/pl.json +0 -30
  42. package/shared/localization/locales/pt-PT.json +0 -30
  43. package/shared/localization/locales/pt.json +0 -30
  44. package/shared/localization/locales/ro.json +0 -30
  45. package/shared/localization/locales/ru.json +0 -30
  46. package/shared/localization/locales/sk.json +0 -30
  47. package/shared/localization/locales/sl.json +0 -30
  48. package/shared/localization/locales/sr-Latn.json +0 -30
  49. package/shared/localization/locales/sr.json +0 -30
  50. package/shared/localization/locales/sv.json +0 -30
  51. package/shared/localization/locales/ta.json +0 -30
  52. package/shared/localization/locales/te.json +0 -30
  53. package/shared/localization/locales/th.json +0 -30
  54. package/shared/localization/locales/tr.json +0 -30
  55. package/shared/localization/locales/uk.json +0 -30
  56. package/shared/localization/locales/vi.json +0 -30
  57. package/shared/localization/locales/zh-HK.json +0 -30
  58. package/shared/localization/locales/zh-TW.json +0 -30
  59. package/shared/localization/locales/zh.json +0 -30
  60. package/shared/localization/locales.d.ts +2 -0
  61. package/shared/localization/locales.js +130 -139
  62. package/shared/tsconfig.json +2 -0
  63. package/tsconfig-base.json +1 -1
  64. package/tsconfig.json +1 -1
  65. package/types/artifacts.d.ts +0 -33
  66. package/core/audits/seo/font-size.d.ts +0 -24
  67. package/core/audits/seo/font-size.js +0 -344
  68. package/core/gather/gatherers/seo/font-size.d.ts +0 -131
  69. package/core/gather/gatherers/seo/font-size.js +0 -347
@@ -11,5 +11,5 @@ export function chromiumVersionCheck(opts: {
11
11
  * @param {number[]} versionA
12
12
  * @param {number[]} versionB
13
13
  */
14
- export function compareVersions(versionA: number[], versionB: number[]): 0 | 1 | -1;
14
+ export function compareVersions(versionA: number[], versionB: number[]): 1 | 0 | -1;
15
15
  //# sourceMappingURL=version-check.d.ts.map
@@ -119,7 +119,6 @@ const defaultConfig = {
119
119
  {id: 'CSSUsage', gatherer: 'css-usage'},
120
120
  {id: 'Doctype', gatherer: 'dobetterweb/doctype'},
121
121
  {id: 'DOMStats', gatherer: 'dobetterweb/domstats'},
122
- {id: 'FontSize', gatherer: 'seo/font-size'},
123
122
  {id: 'Inputs', gatherer: 'inputs'},
124
123
  {id: 'IFrameElements', gatherer: 'iframe-elements'},
125
124
  {id: 'ImageElements', gatherer: 'image-elements'},
@@ -302,7 +301,6 @@ const defaultConfig = {
302
301
  'dobetterweb/uses-passive-event-listeners',
303
302
  'seo/meta-description',
304
303
  'seo/http-status-code',
305
- 'seo/font-size',
306
304
  'seo/link-text',
307
305
  'seo/crawlable-anchors',
308
306
  'seo/is-crawlable',
@@ -619,7 +617,6 @@ const defaultConfig = {
619
617
  {id: 'image-aspect-ratio', weight: 1, group: 'best-practices-ux'},
620
618
  {id: 'image-size-responsive', weight: 1, group: 'best-practices-ux'},
621
619
  {id: 'viewport', weight: 1, group: 'best-practices-ux'},
622
- {id: 'font-size', weight: 1, group: 'best-practices-ux'},
623
620
  // Browser Compatibility
624
621
  {id: 'doctype', weight: 1, group: 'best-practices-browser-compat'},
625
622
  {id: 'charset', weight: 1, group: 'best-practices-browser-compat'},
@@ -3,17 +3,16 @@
3
3
  * Copyright 2017 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- /**
7
- * @fileoverview Gathers all images used on the page with their src, size,
8
- * and attribute information. Executes script in the context of the page.
9
- */
10
6
 
7
+ /**
8
+ * @fileoverview Gathers all images used on the page with their src, size,
9
+ * and attribute information. Executes script in the context of the page.
10
+ */
11
11
 
12
12
  import log from 'lighthouse-logger';
13
13
 
14
14
  import BaseGatherer from '../base-gatherer.js';
15
15
  import {pageFunctions} from '../../lib/page-functions.js';
16
- import * as FontSize from './seo/font-size.js';
17
16
 
18
17
  /* global getElementsInDocument, getNodeDetails */
19
18
 
@@ -186,6 +185,33 @@ function findSizeDeclaration(rule, property) {
186
185
  return definedProp.value;
187
186
  }
188
187
 
188
+ /**
189
+ * Finds the most specific directly matched CSS font-size rule from the list.
190
+ *
191
+ * @param {Array<LH.Crdp.CSS.RuleMatch>} matchedCSSRules
192
+ * @param {function(LH.Crdp.CSS.CSSStyle):boolean|string|undefined} isDeclarationOfInterest
193
+ */
194
+ function findMostSpecificMatchedCSSRule(matchedCSSRules = [], isDeclarationOfInterest) {
195
+ let mostSpecificRule;
196
+ for (let i = matchedCSSRules.length - 1; i >= 0; i--) {
197
+ if (isDeclarationOfInterest(matchedCSSRules[i].rule.style)) {
198
+ mostSpecificRule = matchedCSSRules[i].rule;
199
+ break;
200
+ }
201
+ }
202
+
203
+ if (mostSpecificRule) {
204
+ return {
205
+ type: 'Regular',
206
+ ...mostSpecificRule.style,
207
+ parentRule: {
208
+ origin: mostSpecificRule.origin,
209
+ selectors: mostSpecificRule.selectorList.selectors,
210
+ },
211
+ };
212
+ }
213
+ }
214
+
189
215
  /**
190
216
  * Finds the most specific directly matched CSS font-size rule from the list.
191
217
  *
@@ -196,7 +222,7 @@ function findSizeDeclaration(rule, property) {
196
222
  function findMostSpecificCSSRule(matchedCSSRules, property) {
197
223
  /** @param {LH.Crdp.CSS.CSSStyle} declaration */
198
224
  const isDeclarationofInterest = (declaration) => findSizeDeclaration(declaration, property);
199
- const rule = FontSize.findMostSpecificMatchedCSSRule(matchedCSSRules, isDeclarationofInterest);
225
+ const rule = findMostSpecificMatchedCSSRule(matchedCSSRules, isDeclarationofInterest);
200
226
  if (!rule) return;
201
227
 
202
228
  return findSizeDeclaration(rule, property);
@@ -40,4 +40,14 @@ export function enableCPUThrottling(session: LH.Gatherer.ProtocolSession, thrott
40
40
  * @return {Promise<void>}
41
41
  */
42
42
  export function clearCPUThrottling(session: LH.Gatherer.ProtocolSession): Promise<void>;
43
+ /**
44
+ * Tweak a useragent to have the milestone match the host's Chrome version.
45
+ * @param {LH.Gatherer.ProtocolSession} session
46
+ * @param {string} userAgent
47
+ * @returns {Promise<{tweakedUA: string, fullVersion: string}>}
48
+ */
49
+ export function matchHostUAVersion(session: LH.Gatherer.ProtocolSession, userAgent: string): Promise<{
50
+ tweakedUA: string;
51
+ fullVersion: string;
52
+ }>;
43
53
  //# sourceMappingURL=emulation.d.ts.map
@@ -4,6 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import {getBrowserVersion} from '../gather/driver/environment.js';
8
+
7
9
  const NO_THROTTLING_METRICS = {
8
10
  latency: 0,
9
11
  downloadThroughput: 0,
@@ -16,13 +18,11 @@ const NO_CPU_THROTTLE_METRICS = {
16
18
  };
17
19
 
18
20
  /**
19
- * @param {string} userAgent
21
+ * @param {string} fullVersion
20
22
  * @param {LH.Config.Settings['formFactor']} formFactor
21
23
  * @return {LH.Crdp.Emulation.SetUserAgentOverrideRequest['userAgentMetadata']}
22
24
  */
23
- function parseUseragentIntoMetadata(userAgent, formFactor) {
24
- const match = userAgent.match(/Chrome\/([\d.]+)/); // eg 'Chrome/(71.0.3577.0)'
25
- const fullVersion = match?.[1] || '99.0.1234.0';
25
+ function parseUseragentIntoMetadata(fullVersion, formFactor) {
26
26
  const [version] = fullVersion.split('.', 1);
27
27
  const brands = [
28
28
  {brand: 'Chromium', version},
@@ -54,6 +54,19 @@ function parseUseragentIntoMetadata(userAgent, formFactor) {
54
54
  };
55
55
  }
56
56
 
57
+ /**
58
+ * Tweak a useragent to have the milestone match the host's Chrome version.
59
+ * @param {LH.Gatherer.ProtocolSession} session
60
+ * @param {string} userAgent
61
+ * @returns {Promise<{tweakedUA: string, fullVersion: string}>}
62
+ */
63
+ async function matchHostUAVersion(session, userAgent) {
64
+ const {milestone} = await getBrowserVersion(session);
65
+ const tweakedUA = userAgent.replace(/(Chrome\/)[\d.]+/, `$1${milestone}.0.0.0`);
66
+ const fullVersion = `${milestone}.0.0.0`;
67
+ return {tweakedUA, fullVersion};
68
+ }
69
+
57
70
  /**
58
71
  * @param {LH.Gatherer.ProtocolSession} session
59
72
  * @param {LH.Config.Settings} settings
@@ -62,9 +75,10 @@ function parseUseragentIntoMetadata(userAgent, formFactor) {
62
75
  async function emulate(session, settings) {
63
76
  if (settings.emulatedUserAgent !== false) {
64
77
  const userAgent = /** @type {string} */ (settings.emulatedUserAgent);
78
+ const {tweakedUA, fullVersion} = await matchHostUAVersion(session, userAgent);
65
79
  await session.sendCommand('Network.setUserAgentOverride', {
66
- userAgent,
67
- userAgentMetadata: parseUseragentIntoMetadata(userAgent, settings.formFactor),
80
+ userAgent: tweakedUA,
81
+ userAgentMetadata: parseUseragentIntoMetadata(fullVersion, settings.formFactor),
68
82
  });
69
83
  }
70
84
  // See devtools-entry for one usecase for disabling screenEmulation
@@ -157,4 +171,5 @@ export {
157
171
  clearNetworkThrottling,
158
172
  enableCPUThrottling,
159
173
  clearCPUThrottling,
174
+ matchHostUAVersion,
160
175
  };
@@ -15,21 +15,14 @@
15
15
  /** @typedef {{name: string, line: number, column: number}} PatternMatchResult */
16
16
  /** @typedef {{matches: PatternMatchResult[], estimatedByteSavings: number}} Result */
17
17
 
18
- import fs from 'fs';
19
-
20
- import {LH_ROOT} from '../../../shared/root.js';
21
-
22
- const polyfillModuleDataJson = fs.readFileSync(
23
- `${LH_ROOT}/core/lib/legacy-javascript/polyfill-module-data.json`, 'utf-8');
18
+ import polyfillModuleData_ from './polyfill-module-data.json' with { type: 'json' };
19
+ import graph_ from './polyfill-graph-data.json' with { type: 'json' };
24
20
 
25
21
  /** @type {import('../../scripts/legacy-javascript/create-polyfill-module-data.js').PolyfillModuleData} */
26
- const polyfillModuleData = JSON.parse(polyfillModuleDataJson);
27
-
28
- const graphJson = fs.readFileSync(
29
- `${LH_ROOT}/core/lib/legacy-javascript/polyfill-graph-data.json`, 'utf-8');
22
+ const polyfillModuleData = polyfillModuleData_;
30
23
 
31
24
  /** @type {import('../../scripts/legacy-javascript/create-polyfill-size-estimation.js').PolyfillSizeEstimator} */
32
- const graph = JSON.parse(graphJson);
25
+ const graph = graph_;
33
26
 
34
27
  /**
35
28
  * Takes a list of patterns (consisting of a name identifier and a RegExp expression string)
@@ -6,8 +6,6 @@
6
6
 
7
7
  import fs from 'fs';
8
8
 
9
- import esMain from 'es-main';
10
-
11
9
  /**
12
10
  * @fileoverview Helper functions to transform an LHR into a proto-ready LHR.
13
11
  *
@@ -126,7 +124,7 @@ function processForProto(lhr) {
126
124
  }
127
125
 
128
126
  // Test if called from the CLI or as a module.
129
- if (esMain(import.meta)) {
127
+ if (import.meta.main) {
130
128
  // read in the argv for the input & output
131
129
  const args = process.argv.slice(2);
132
130
  let input;
@@ -143,6 +141,10 @@ if (esMain(import.meta)) {
143
141
  const report = processForProto(JSON.parse(fs.readFileSync(input, 'utf-8')));
144
142
  // write to output from argv
145
143
  fs.writeFileSync(output, JSON.stringify(report), 'utf-8');
144
+ // eslint-disable-next-line no-console
145
+ console.log(`file written to ${output}`);
146
+ } else {
147
+ process.exit(1);
146
148
  }
147
149
  }
148
150
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lighthouse",
3
3
  "type": "module",
4
- "version": "12.8.2-dev.20250924",
4
+ "version": "12.8.2-dev.20250926",
5
5
  "description": "Automated auditing, performance metrics, and best practices for the web.",
6
6
  "main": "./core/index.js",
7
7
  "bin": {
@@ -10,7 +10,7 @@
10
10
  "smokehouse": "./cli/test/smokehouse/frontends/smokehouse-bin.js"
11
11
  },
12
12
  "engines": {
13
- "node": ">=18.16"
13
+ "node": ">=22.19"
14
14
  },
15
15
  "scripts": {
16
16
  "prepack": "yarn build-report --standalone --flow --esm && yarn build-types",
@@ -147,7 +147,6 @@
147
147
  "core-js-compat": "^3.44.0",
148
148
  "cpy": "^8.1.2",
149
149
  "csv-validator": "^0.0.3",
150
- "es-main": "^1.2.0",
151
150
  "esbuild": "0.25.9",
152
151
  "eslint": "^9.28.0",
153
152
  "eslint-config-google": "^0.14.0",
@@ -185,7 +184,7 @@
185
184
  "@paulirish/trace_engine": "0.0.59",
186
185
  "@sentry/node": "^9.28.1",
187
186
  "axe-core": "^4.10.3",
188
- "chrome-launcher": "^1.2.0",
187
+ "chrome-launcher": "^1.2.1",
189
188
  "configstore": "^7.0.0",
190
189
  "csp_evaluator": "1.1.5",
191
190
  "devtools-protocol": "0.0.1507524",
package/readme.md CHANGED
@@ -53,7 +53,7 @@ The Chrome extension was available prior to Lighthouse being available in Chrome
53
53
  The Node CLI provides the most flexibility in how Lighthouse runs can be configured and reported. Users who want more advanced usage, or want to run Lighthouse in an automated fashion should use the Node CLI.
54
54
 
55
55
  > [!NOTE]
56
- > Lighthouse requires Node 18.20 or later.
56
+ > Lighthouse requires Node 22 (LTS) or later.
57
57
 
58
58
  **Installation**:
59
59
 
@@ -146,9 +146,8 @@ export class DetailsRenderer {
146
146
  /**
147
147
  * @param {LH.Audit.Details.SourceLocationValue} item
148
148
  * @return {Element|null}
149
- * @protected
150
149
  */
151
- protected renderSourceLocation(item: LH.Audit.Details.SourceLocationValue): Element | null;
150
+ renderSourceLocation(item: LH.Audit.Details.SourceLocationValue): Element | null;
152
151
  /**
153
152
  * @param {LH.Audit.Details.Filmstrip} details
154
153
  * @return {Element}
@@ -656,7 +656,6 @@ export class DetailsRenderer {
656
656
  /**
657
657
  * @param {LH.Audit.Details.SourceLocationValue} item
658
658
  * @return {Element|null}
659
- * @protected
660
659
  */
661
660
  renderSourceLocation(item) {
662
661
  if (!item.url) {
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "‏‮Links‬‏ ‏‮are‬‏ ‏‮crawlable‬‏"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "‏‮Add‬‏'‏‮l‬‏ ‏‮illegible‬‏ ‏‮text‬‏"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "‏‮Font‬‏ ‏‮Size‬‏"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% ‏‮of‬‏ ‏‮Page‬‏ ‏‮Text‬‏"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "‏‮Selector‬‏"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "‏‮Font‬‏ ‏‮sizes‬‏ ‏‮less‬‏ ‏‮than‬‏ 12‏‮px‬‏ ‏‮are‬‏ ‏‮too‬‏ ‏‮small‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮legible‬‏ ‏‮and‬‏ ‏‮require‬‏ ‏‮mobile‬‏ ‏‮visitors‬‏ ‏‮to‬‏ “‏‮pinch‬‏ ‏‮to‬‏ ‏‮zoom‬‏” ‏‮in‬‏ ‏‮order‬‏ ‏‮to‬‏ ‏‮read‬‏. ‏‮Strive‬‏ ‏‮to‬‏ ‏‮have‬‏ >60% ‏‮of‬‏ ‏‮page‬‏ ‏‮text‬‏ ≥12‏‮px‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ ‏‮legible‬‏ ‏‮font‬‏ ‏‮sizes‬‏](https://developer.chrome.com/docs/lighthouse/seo/font-size/)."
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "{decimalProportion, number, extendedPercent} ‏‮legible‬‏ ‏‮text‬‏"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "‏‮Text‬‏ ‏‮is‬‏ ‏‮illegible‬‏ ‏‮because‬‏ ‏‮there‬‏'‏‮s‬‏ ‏‮no‬‏ ‏‮viewport‬‏ ‏‮meta‬‏ ‏‮tag‬‏ ‏‮optimized‬‏ ‏‮for‬‏ ‏‮mobile‬‏ ‏‮screens‬‏."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "‏‮Document‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮use‬‏ ‏‮legible‬‏ ‏‮font‬‏ ‏‮sizes‬‏"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "‏‮Legible‬‏ ‏‮text‬‏"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "‏‮Document‬‏ ‏‮uses‬‏ ‏‮legible‬‏ ‏‮font‬‏ ‏‮sizes‬‏"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "‏‮hreflang‬‏ ‏‮links‬‏ ‏‮tell‬‏ ‏‮search‬‏ ‏‮engines‬‏ ‏‮what‬‏ ‏‮version‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮they‬‏ ‏‮should‬‏ ‏‮list‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏ ‏‮for‬‏ ‏‮a‬‏ ‏‮given‬‏ ‏‮language‬‏ ‏‮or‬‏ ‏‮region‬‏. [‏‮Learn‬‏ ‏‮more‬‏ ‏‮about‬‏ `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "يمكن الزحف إلى الروابط"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "نص إضافي غير قابل للقراءة"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "حجم الخط"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% من نص الصفحة"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "أداة الاختيار"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "تكون أحجام الخطوط الأقل من 12 بكسل صغيرة جدًا بحيث لا يمكن قراءتها بسهولة وتتطلب من مستخدمي الأجهزة الجوّالة \"استخدام الإصبعين للتكبير\" من أجل قراءتها. يُرجى بذل قصارى جهدك لضبط الخطوط في أكثر من ‏60% من نص الصفحة على حجم أكبر من أو يساوي 12 بكسل. [مزيد من المعلومات حول أحجام الخطوط القابلة للقراءة](https://developer.chrome.com/docs/lighthouse/seo/font-size/)"
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "نص {decimalProportion, number, extendedPercent} قابل للقراءة"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "النص غير مقروء لأنه لا تتوفّر علامة وصفية لإطار العرض محسنة لشاشات الجوّال."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "لا يستخدم المستند أحجام الخطوط القابلة للقراءة"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "نص قابل للقراءة"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "يستخدم المستند أحجام الخط القابلة للقراءة"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "توضّح روابط hreflang لمحركات البحث إصدار الصفحة الذي يجب إدراجه في نتائج البحث للغة أو منطقة معيّنة. [مزيد من المعلومات حول `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)"
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Обхождането на връзките е възможно"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Още нечетлив текст"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Размер на шрифта"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% от текста на страницата"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Селектор"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Шрифтовете с размер под 12 пиксела са твърде малки и се налага посетителите от мобилни устройства да увеличат мащаба с разтваряне на пръсти, за да прочетат текста. Старайте се над 60% от текста на страницата да е с размер поне 12 пиксела. [Научете повече за четливите размери на шрифта](https://developer.chrome.com/docs/lighthouse/seo/font-size/)."
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "{decimalProportion, number, extendedPercent} от текста е четлив"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "Текстът не е четлив, тъй като няма мета маркер viewport, оптимизиран за мобилни екрани."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "В документа не се използва шрифт с четлив размер"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Четлив текст"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "В документа се използва шрифт с четлив размер"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "Връзките от типа hreflang указват на търсещите машини коя версия на страницата да бъде включена в резултатите от търсенето за даден език или регион. [Научете повече за `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Els enllaços es poden rastrejar"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Text il·legible addicional"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Cos de font"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% del text de pàgina"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Selector"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Els cossos de font inferiors als 12 píxels són massa petits i obliguen els usuaris de mòbils a \"pinçar per fer zoom\" i poder llegir el text. Intenta que la mida de més del 60% del text de la pàgina sigui igual o superior als 12 píxels. [Obtén més informació sobre els cossos de font llegibles](https://developer.chrome.com/docs/lighthouse/seo/font-size/)."
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "El {decimalProportion, number, extendedPercent} del text és llegible"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "El text és il·legible perquè no hi ha cap metaetiqueta de finestra gràfica optimitzada per a pantalles de dispositius mòbils."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "El document no utilitza lletres amb mides llegibles"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Text llegible"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "El document utilitza lletres amb mides llegibles"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "Els enllaços de tipus \"hreflang\" informen els motors de cerca de quina versió d'una pàgina han d'incloure als resultats de cerca per a una regió o un idioma concrets. [Obtén més informació sobre `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Odkazy lze procházet"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Další nečitelný text"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Velikost písma"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% textu na stránce"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Selektor"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Písma menší než 12 px jsou příliš malá na to, aby byla čitelná. Návštěvníci na mobilních zařízeních je kvůli čtení musí zvětšit roztažením prstů. Snažte se, aby více než 60 % textu na stránce mělo velikosti alespoň 12 px. [Další informace o čitelných velikostech písem](https://developer.chrome.com/docs/lighthouse/seo/font-size/)"
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "Podíl čitelného textu: {decimalProportion, number, extendedPercent}"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "Text není čitelný, protože není k dispozici metaznačka viewport optimalizovaná pro obrazovky mobilních zařízení."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "V dokumentu nejsou použity čitelné velikosti písma"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Čitelný text"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "V dokumentu jsou použity čitelné velikosti písma"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "Odkazy hreflang sdělují vyhledávačům, kterou verzi stránky mají uvádět ve výsledcích vyhledávání pro určitý jazyk či oblast. [Další informace o odkazech `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)"
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Links kan crawles"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Yderligere ulæselig tekst"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Skriftstørrelse"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% af sideteksten"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Vælger"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Skriftstørrelser på mindre end 12 pixel er for små til at være læselige og kræver, at mobilbrugere \"kniber fingrene sammen for at zoome\" for at læse teksten. Du bør bestræbe dig på at gøre over 60 % af sideteksten større end eller lig med 12 pixel. [Få flere oplysninger om læselige skriftstørrelser](https://developer.chrome.com/docs/lighthouse/seo/font-size/)."
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "{decimalProportion, number, extendedPercent} læselig tekst"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "Teksten er ulæselig, fordi der ikke er et viewport-metatag, som er optimeret til mobilskærme."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "Dokumentet bruger ikke læselige skriftstørrelser"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Læselig tekst"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "Dokumentet anvender læselige skriftstørrelser"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "hreflang-links fortæller søgemaskiner, hvilken version af en side de skal angive på listen over søgeresultater for et vilkårligt sprog eller en vilkårlig region. [Få flere oplysninger om `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Links können gecrawlt werden"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Zusätzlicher unlesbarer Text"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Schriftgröße"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% des Seitentexts"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Selector"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Schriftgrößen unter 12 px sind zu klein. Nutzer von Mobilgeräten müssen den Text mit den Fingern heranzoomen, um ihn lesen zu können. Achte darauf, dass mehr als 60 % des Seitentextes eine Schriftgröße von mindestens 12 px haben. [Weitere Informationen zu lesbaren Schriftgrößen.](https://developer.chrome.com/docs/lighthouse/seo/font-size/)"
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "{decimalProportion, number, extendedPercent} gut lesbarer Text"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "Text ist nicht lesbar, weil kein Meta-Tag für den Darstellungsbereich vorhanden ist, das für Bildschirme von Mobilgeräten optimiert ist."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "Dokument enthält keine gut lesbaren Schriftgrößen"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Gut lesbarer Text"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "Dokument enthält gut lesbare Schriftgrößen"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "Anhand von „hreflang“-Links können Suchmaschinen ermitteln, welche Version einer Seite sie in den Suchergebnissen für eine bestimmte Sprache oder Region anzeigen sollen. [Weitere Informationen zu `hreflang`.](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)"
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Οι σύνδεσμοι είναι ανιχνεύσιμοι"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Επιπλέον δυσανάγνωστο κείμενο"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Μέγεθος γραμματοσειράς"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% του κειμένου σελίδας"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Επιλογέας"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Τα μεγέθη γραμματοσειράς κάτω από 12px είναι πολύ μικρά για να είναι ευανάγνωστα, με αποτέλεσμα οι επισκέπτες από κινητά να χρειάζεται να μεγεθύνουν με τα δάχτυλά τους τη σελίδα για να διαβάσουν το περιεχόμενο. Προσπαθήστε πάνω από το 60% του κειμένου της σελίδας να έχει μέγεθος μεγαλύτερο από ή ίσο με 12px. [Μάθετε περισσότερα σχετικά με τα ευανάγνωστα μεγέθη γραμματοσειράς](https://developer.chrome.com/docs/lighthouse/seo/font-size/)."
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "{decimalProportion, number, extendedPercent} ευανάγνωστο κείμενο"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "Το κείμενο είναι δυσανάγνωστο επειδή δεν υπάρχει βελτιστοποιημένη μεταετικέτα θύρα προβολής για οθόνες κινητών."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "Το έγγραφο δεν χρησιμοποιεί ευανάγνωστα μεγέθη γραμματοσειράς"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Ευανάγνωστο κείμενο"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "Το έγγραφο χρησιμοποιεί ευανάγνωστα μεγέθη γραμματοσειράς"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "Οι σύνδεσμοι hreflang ενημερώνουν τις μηχανές αναζήτησης σχετικά με την έκδοση σελίδας που θα πρέπει να αναφέρουν στα αποτελέσματα αναζήτησης για μια συγκεκριμένη γλώσσα ή περιοχή. [Μάθετε περισσότερα σχετικά με το `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
1351
1321
  },
@@ -1316,36 +1316,6 @@
1316
1316
  "core/audits/seo/crawlable-anchors.js | title": {
1317
1317
  "message": "Links are crawlable"
1318
1318
  },
1319
- "core/audits/seo/font-size.js | additionalIllegibleText": {
1320
- "message": "Add'l illegible text"
1321
- },
1322
- "core/audits/seo/font-size.js | columnFontSize": {
1323
- "message": "Font size"
1324
- },
1325
- "core/audits/seo/font-size.js | columnPercentPageText": {
1326
- "message": "% of page text"
1327
- },
1328
- "core/audits/seo/font-size.js | columnSelector": {
1329
- "message": "Selector"
1330
- },
1331
- "core/audits/seo/font-size.js | description": {
1332
- "message": "Font sizes less than 12px are too small to be legible and require mobile visitors to 'pinch to zoom' in order to read. Strive to have >60% of page text ≥12px. [Learn more about legible font sizes](https://developer.chrome.com/docs/lighthouse/seo/font-size/)."
1333
- },
1334
- "core/audits/seo/font-size.js | displayValue": {
1335
- "message": "{decimalProportion, number, extendedPercent} legible text"
1336
- },
1337
- "core/audits/seo/font-size.js | explanationViewport": {
1338
- "message": "Text is illegible because there's no viewport meta tag optimised for mobile screens."
1339
- },
1340
- "core/audits/seo/font-size.js | failureTitle": {
1341
- "message": "Document doesn't use legible font sizes"
1342
- },
1343
- "core/audits/seo/font-size.js | legibleText": {
1344
- "message": "Legible text"
1345
- },
1346
- "core/audits/seo/font-size.js | title": {
1347
- "message": "Document uses legible font sizes"
1348
- },
1349
1319
  "core/audits/seo/hreflang.js | description": {
1350
1320
  "message": "hreflang links tell search engines what version of a page they should list in search results for a given language or region. [Learn more about `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
1351
1321
  },