lighthouse 10.3.0-dev.20230704 → 10.3.0-dev.20230706

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 (43) hide show
  1. package/core/audits/accessibility/empty-heading.d.ts +10 -0
  2. package/core/audits/accessibility/empty-heading.js +45 -0
  3. package/core/audits/accessibility/identical-links-same-purpose.d.ts +10 -0
  4. package/core/audits/accessibility/identical-links-same-purpose.js +45 -0
  5. package/core/audits/accessibility/landmark-one-main.d.ts +10 -0
  6. package/core/audits/accessibility/landmark-one-main.js +44 -0
  7. package/core/audits/accessibility/target-size.d.ts +10 -0
  8. package/core/audits/accessibility/target-size.js +45 -0
  9. package/core/audits/audit.d.ts +6 -0
  10. package/core/audits/audit.js +12 -0
  11. package/core/audits/byte-efficiency/byte-efficiency-audit.d.ts +22 -6
  12. package/core/audits/byte-efficiency/byte-efficiency-audit.js +97 -25
  13. package/core/audits/prioritize-lcp-image.js +2 -1
  14. package/core/audits/redirects.js +4 -0
  15. package/core/audits/unsized-images.js +3 -0
  16. package/core/computed/js-bundles.js +1 -1
  17. package/core/computed/metrics/tbt-utils.d.ts +26 -0
  18. package/core/computed/metrics/tbt-utils.js +48 -28
  19. package/core/computed/metrics/total-blocking-time.js +1 -1
  20. package/core/computed/tbt-impact-tasks.d.ts +54 -0
  21. package/core/computed/tbt-impact-tasks.js +221 -0
  22. package/core/config/default-config.js +9 -0
  23. package/core/config/filters.d.ts +9 -9
  24. package/core/config/filters.js +7 -7
  25. package/core/config/validation.js +12 -0
  26. package/core/gather/gatherers/accessibility.js +4 -1
  27. package/core/gather/gatherers/seo/font-size.d.ts +0 -1
  28. package/core/gather/gatherers/seo/font-size.js +0 -1
  29. package/core/gather/gatherers/source-maps.js +3 -2
  30. package/core/lib/cdt/SDK.d.ts +1 -1
  31. package/core/lib/cdt/SDK.js +2 -2
  32. package/core/lib/dependency-graph/simulator/simulator.js +3 -1
  33. package/core/lib/navigation-error.d.ts +2 -2
  34. package/core/lib/navigation-error.js +1 -1
  35. package/dist/report/bundle.esm.js +1 -0
  36. package/dist/report/flow.js +1 -1
  37. package/dist/report/standalone.js +1 -1
  38. package/package.json +3 -3
  39. package/report/renderer/category-renderer.js +1 -0
  40. package/shared/localization/locales/en-US.json +36 -0
  41. package/shared/localization/locales/en-XL.json +36 -0
  42. package/tsconfig.json +1 -1
  43. package/types/artifacts.d.ts +9 -2
@@ -2319,6 +2319,7 @@ class CategoryRenderer {
2319
2319
 
2320
2320
  for (const auditRef of auditRefs) {
2321
2321
  const groupId = auditRef.group || notAGroup;
2322
+ if (groupId === 'hidden') continue;
2322
2323
  const groupAuditRefs = grouped.get(groupId) || [];
2323
2324
  groupAuditRefs.push(auditRef);
2324
2325
  grouped.set(groupId, groupAuditRefs);
@@ -80,7 +80,7 @@ class ka{constructor(e,a){this._document=e,this._lighthouseChannel="unknown",thi
80
80
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
81
81
  * See the License for the specific language governing permissions and
82
82
  * limitations under the License.
83
- */class wa{constructor(e,a){this.dom=e,this.detailsRenderer=a}get _clumpTitles(){return{warning:ue.strings.warningAuditsGroupTitle,manual:ue.strings.manualAuditsGroupTitle,passed:ue.strings.passedAuditsGroupTitle,notApplicable:ue.strings.notApplicableAuditsGroupTitle}}renderAudit(e){const a=this.dom.createComponent("audit");return this.populateAuditValues(e,a)}populateAuditValues(e,a){const n=ue.strings,t=this.dom.find(".lh-audit",a);t.id=e.result.id;const i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",t).textContent=e.result.displayValue);const o=this.dom.find(".lh-audit__title",t);o.append(this.dom.convertMarkdownCodeSnippets(e.result.title));const r=this.dom.find(".lh-audit__description",t);r.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(const a of e.relevantMetrics||[]){const e=this.dom.createChildOf(r,"span","lh-audit__adorn");e.title=`Relevant to ${a.result.title}`,e.textContent=a.acronym||a.id}e.stackPacks&&e.stackPacks.forEach((e=>{const a=this.dom.createElement("img","lh-audit__stackpack__img");a.src=e.iconDataURL,a.alt=e.title;const n=this.dom.convertMarkdownLinkSnippets(e.description,{alwaysAppendUtmSource:!0}),i=this.dom.createElement("div","lh-audit__stackpack");i.append(a,n),this.dom.find(".lh-audit__stackpacks",t).append(i)}));const s=this.dom.find("details",t);if(e.result.details){const a=this.detailsRenderer.render(e.result.details);a&&(a.classList.add("lh-details"),s.append(a))}if(this.dom.find(".lh-chevron-container",t).append(this._createChevron()),this._setRatingClass(t,e.result.score,i),"error"===e.result.scoreDisplayMode){t.classList.add("lh-audit--error");const a=this.dom.find(".lh-audit__display-text",t);a.textContent=n.errorLabel,a.classList.add("lh-tooltip-boundary");this.dom.createChildOf(a,"div","lh-tooltip lh-tooltip--error").textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){this.dom.createChildOf(o,"div","lh-audit-explanation").textContent=e.result.explanation}const l=e.result.warnings;if(!l||0===l.length)return t;const p=this.dom.find("summary",s),u=this.dom.createChildOf(p,"div","lh-warnings");if(this.dom.createChildOf(u,"span").textContent=n.warningHeader,1===l.length)u.append(this.dom.createTextNode(l.join("")));else{const e=this.dom.createChildOf(u,"ul");for(const a of l){this.dom.createChildOf(e,"li").textContent=a}}return t}injectFinalScreenshot(e,a,n){const t=a["final-screenshot"];if(!t||"error"===t.scoreDisplayMode)return null;if(!t.details||"screenshot"!==t.details.type)return null;const i=this.dom.createElement("img","lh-final-ss-image"),o=t.details.data;i.src=o,i.alt=t.title;const r=this.dom.find(".lh-category .lh-category-header",e),s=this.dom.createElement("div","lh-category-headercol"),l=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),p=this.dom.createElement("div","lh-category-headercol");s.append(...r.childNodes),s.append(n),p.append(i),r.append(s,l,p),r.classList.add("lh-category-header__finalscreenshot")}_createChevron(){const e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,a,n){const t=me.calculateRating(a,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),"informative"!==n&&e.classList.add(`lh-audit--${t}`),e}renderCategoryHeader(e,a,n){const t=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",t),o=this.renderCategoryScore(e,a,n);if(i.append(o),e.description){const a=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",t).append(a)}return t}renderAuditGroup(e){const a=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,a.append(n);let t=null;return e.description&&(t=this.dom.convertMarkdownLinkSnippets(e.description),t.classList.add("lh-audit-group__description","lh-audit-group__footer"),a.append(t)),[a,t]}_renderGroupedAudits(e,a){const n=new Map,t="NotAGroup";n.set(t,[]);for(const a of e){const e=a.group||t,i=n.get(e)||[];i.push(a),n.set(e,i)}const i=[];for(const[e,o]of n){if(e===t){for(const e of o)i.push(this.renderAudit(e));continue}const n=a[e],[r,s]=this.renderAuditGroup(n);for(const e of o)r.insertBefore(this.renderAudit(e),s);r.classList.add(`lh-audit-group--${e}`),i.push(r)}return i}renderUnexpandableClump(e,a){const n=this.dom.createElement("div");return this._renderGroupedAudits(e,a).forEach((e=>n.append(e))),n}renderClump(e,{auditRefs:a,description:n}){const t=this.dom.createComponent("clump"),i=this.dom.find(".lh-clump",t);"warning"===e&&i.setAttribute("open","");const o=this.dom.find(".lh-audit-group__header",i),r=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",o).textContent=r;this.dom.find(".lh-audit-group__itemcount",i).textContent=`(${a.length})`;const s=a.map(this.renderAudit.bind(this));i.append(...s);const l=this.dom.find(".lh-audit-group",t);if(n){const e=this.dom.convertMarkdownLinkSnippets(n);e.classList.add("lh-audit-group__description","lh-audit-group__footer"),l.append(e)}return this.dom.find(".lh-clump-toggletext--show",l).textContent=ue.strings.show,this.dom.find(".lh-clump-toggletext--hide",l).textContent=ue.strings.hide,i.classList.add(`lh-clump--${e.toLowerCase()}`),l}renderCategoryScore(e,a,n){let t;if(t=n&&me.shouldDisplayAsFraction(n.gatherMode)?this.renderCategoryFraction(e):this.renderScoreGauge(e,a),n?.omitLabel){this.dom.find(".lh-gauge__label,.lh-fraction__label",t).remove()}if(n?.onPageAnchorRendered){const e=this.dom.find("a",t);n.onPageAnchorRendered(e)}return t}renderScoreGauge(e,a){const n=this.dom.createComponent("gauge"),t=this.dom.find("a.lh-gauge__wrapper",n);me.isPluginCategory(e.id)&&t.classList.add("lh-gauge__wrapper--plugin");const i=Number(e.score),o=this.dom.find(".lh-gauge",n),r=this.dom.find("circle.lh-gauge-arc",o);r&&this._setGaugeArc(r,i);const s=Math.round(100*i),l=this.dom.find("div.lh-gauge__percentage",n);return l.textContent=s.toString(),null===e.score&&(l.classList.add("lh-gauge--error"),l.textContent="",l.title=ue.strings.errorLabel),0===e.auditRefs.length||this.hasApplicableAudits(e)?t.classList.add(`lh-gauge__wrapper--${me.calculateRating(e.score)}`):(t.classList.add("lh-gauge__wrapper--not-applicable"),l.textContent="-",l.title=ue.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){const a=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",a),{numPassed:t,numPassableAudits:i,totalWeight:o}=me.calculateCategoryFraction(e),r=t/i,s=this.dom.find(".lh-fraction__content",a),l=this.dom.createElement("span");l.textContent=`${t}/${i}`,s.append(l);let p=me.calculateRating(r);return 0===o&&(p="null"),n.classList.add(`lh-fraction__wrapper--${p}`),this.dom.find(".lh-fraction__label",a).textContent=e.title,a}hasApplicableAudits(e){return e.auditRefs.some((e=>"notApplicable"!==e.result.scoreDisplayMode))}_setGaugeArc(e,a){const n=2*Math.PI*Number(e.getAttribute("r")),t=Number(e.getAttribute("stroke-width")),i=.25*t/n;e.style.transform=`rotate(${360*i-90}deg)`;let o=a*n-t/2;0===a&&(e.style.opacity="0"),1===a&&(o=n),e.style.strokeDasharray=`${Math.max(o,0)} ${n}`}_auditHasWarning(e){return Boolean(e.result.warnings?.length)}_getClumpIdForAuditRef(e){const a=e.result.scoreDisplayMode;return"manual"===a||"notApplicable"===a?a:me.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,a={},n){const t=this.dom.createElement("div","lh-category");t.id=e.id,t.append(this.renderCategoryHeader(e,a,n));const i=new Map;i.set("failed",[]),i.set("warning",[]),i.set("manual",[]),i.set("passed",[]),i.set("notApplicable",[]);for(const a of e.auditRefs){const e=this._getClumpIdForAuditRef(a),n=i.get(e);n.push(a),i.set(e,n)}for(const e of i.values())e.sort(((e,a)=>a.weight-e.weight));for(const[n,o]of i){if(0===o.length)continue;if("failed"===n){const e=this.renderUnexpandableClump(o,a);e.classList.add("lh-clump--failed"),t.append(e);continue}const i="manual"===n?e.manualDescription:void 0,r=this.renderClump(n,{auditRefs:o,description:i});t.append(r)}return t}}
83
+ */class wa{constructor(e,a){this.dom=e,this.detailsRenderer=a}get _clumpTitles(){return{warning:ue.strings.warningAuditsGroupTitle,manual:ue.strings.manualAuditsGroupTitle,passed:ue.strings.passedAuditsGroupTitle,notApplicable:ue.strings.notApplicableAuditsGroupTitle}}renderAudit(e){const a=this.dom.createComponent("audit");return this.populateAuditValues(e,a)}populateAuditValues(e,a){const n=ue.strings,t=this.dom.find(".lh-audit",a);t.id=e.result.id;const i=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",t).textContent=e.result.displayValue);const o=this.dom.find(".lh-audit__title",t);o.append(this.dom.convertMarkdownCodeSnippets(e.result.title));const r=this.dom.find(".lh-audit__description",t);r.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(const a of e.relevantMetrics||[]){const e=this.dom.createChildOf(r,"span","lh-audit__adorn");e.title=`Relevant to ${a.result.title}`,e.textContent=a.acronym||a.id}e.stackPacks&&e.stackPacks.forEach((e=>{const a=this.dom.createElement("img","lh-audit__stackpack__img");a.src=e.iconDataURL,a.alt=e.title;const n=this.dom.convertMarkdownLinkSnippets(e.description,{alwaysAppendUtmSource:!0}),i=this.dom.createElement("div","lh-audit__stackpack");i.append(a,n),this.dom.find(".lh-audit__stackpacks",t).append(i)}));const s=this.dom.find("details",t);if(e.result.details){const a=this.detailsRenderer.render(e.result.details);a&&(a.classList.add("lh-details"),s.append(a))}if(this.dom.find(".lh-chevron-container",t).append(this._createChevron()),this._setRatingClass(t,e.result.score,i),"error"===e.result.scoreDisplayMode){t.classList.add("lh-audit--error");const a=this.dom.find(".lh-audit__display-text",t);a.textContent=n.errorLabel,a.classList.add("lh-tooltip-boundary");this.dom.createChildOf(a,"div","lh-tooltip lh-tooltip--error").textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){this.dom.createChildOf(o,"div","lh-audit-explanation").textContent=e.result.explanation}const l=e.result.warnings;if(!l||0===l.length)return t;const p=this.dom.find("summary",s),u=this.dom.createChildOf(p,"div","lh-warnings");if(this.dom.createChildOf(u,"span").textContent=n.warningHeader,1===l.length)u.append(this.dom.createTextNode(l.join("")));else{const e=this.dom.createChildOf(u,"ul");for(const a of l){this.dom.createChildOf(e,"li").textContent=a}}return t}injectFinalScreenshot(e,a,n){const t=a["final-screenshot"];if(!t||"error"===t.scoreDisplayMode)return null;if(!t.details||"screenshot"!==t.details.type)return null;const i=this.dom.createElement("img","lh-final-ss-image"),o=t.details.data;i.src=o,i.alt=t.title;const r=this.dom.find(".lh-category .lh-category-header",e),s=this.dom.createElement("div","lh-category-headercol"),l=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),p=this.dom.createElement("div","lh-category-headercol");s.append(...r.childNodes),s.append(n),p.append(i),r.append(s,l,p),r.classList.add("lh-category-header__finalscreenshot")}_createChevron(){const e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,a,n){const t=me.calculateRating(a,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),"informative"!==n&&e.classList.add(`lh-audit--${t}`),e}renderCategoryHeader(e,a,n){const t=this.dom.createComponent("categoryHeader"),i=this.dom.find(".lh-score__gauge",t),o=this.renderCategoryScore(e,a,n);if(i.append(o),e.description){const a=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",t).append(a)}return t}renderAuditGroup(e){const a=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,a.append(n);let t=null;return e.description&&(t=this.dom.convertMarkdownLinkSnippets(e.description),t.classList.add("lh-audit-group__description","lh-audit-group__footer"),a.append(t)),[a,t]}_renderGroupedAudits(e,a){const n=new Map,t="NotAGroup";n.set(t,[]);for(const a of e){const e=a.group||t;if("hidden"===e)continue;const i=n.get(e)||[];i.push(a),n.set(e,i)}const i=[];for(const[e,o]of n){if(e===t){for(const e of o)i.push(this.renderAudit(e));continue}const n=a[e],[r,s]=this.renderAuditGroup(n);for(const e of o)r.insertBefore(this.renderAudit(e),s);r.classList.add(`lh-audit-group--${e}`),i.push(r)}return i}renderUnexpandableClump(e,a){const n=this.dom.createElement("div");return this._renderGroupedAudits(e,a).forEach((e=>n.append(e))),n}renderClump(e,{auditRefs:a,description:n}){const t=this.dom.createComponent("clump"),i=this.dom.find(".lh-clump",t);"warning"===e&&i.setAttribute("open","");const o=this.dom.find(".lh-audit-group__header",i),r=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",o).textContent=r;this.dom.find(".lh-audit-group__itemcount",i).textContent=`(${a.length})`;const s=a.map(this.renderAudit.bind(this));i.append(...s);const l=this.dom.find(".lh-audit-group",t);if(n){const e=this.dom.convertMarkdownLinkSnippets(n);e.classList.add("lh-audit-group__description","lh-audit-group__footer"),l.append(e)}return this.dom.find(".lh-clump-toggletext--show",l).textContent=ue.strings.show,this.dom.find(".lh-clump-toggletext--hide",l).textContent=ue.strings.hide,i.classList.add(`lh-clump--${e.toLowerCase()}`),l}renderCategoryScore(e,a,n){let t;if(t=n&&me.shouldDisplayAsFraction(n.gatherMode)?this.renderCategoryFraction(e):this.renderScoreGauge(e,a),n?.omitLabel){this.dom.find(".lh-gauge__label,.lh-fraction__label",t).remove()}if(n?.onPageAnchorRendered){const e=this.dom.find("a",t);n.onPageAnchorRendered(e)}return t}renderScoreGauge(e,a){const n=this.dom.createComponent("gauge"),t=this.dom.find("a.lh-gauge__wrapper",n);me.isPluginCategory(e.id)&&t.classList.add("lh-gauge__wrapper--plugin");const i=Number(e.score),o=this.dom.find(".lh-gauge",n),r=this.dom.find("circle.lh-gauge-arc",o);r&&this._setGaugeArc(r,i);const s=Math.round(100*i),l=this.dom.find("div.lh-gauge__percentage",n);return l.textContent=s.toString(),null===e.score&&(l.classList.add("lh-gauge--error"),l.textContent="",l.title=ue.strings.errorLabel),0===e.auditRefs.length||this.hasApplicableAudits(e)?t.classList.add(`lh-gauge__wrapper--${me.calculateRating(e.score)}`):(t.classList.add("lh-gauge__wrapper--not-applicable"),l.textContent="-",l.title=ue.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){const a=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",a),{numPassed:t,numPassableAudits:i,totalWeight:o}=me.calculateCategoryFraction(e),r=t/i,s=this.dom.find(".lh-fraction__content",a),l=this.dom.createElement("span");l.textContent=`${t}/${i}`,s.append(l);let p=me.calculateRating(r);return 0===o&&(p="null"),n.classList.add(`lh-fraction__wrapper--${p}`),this.dom.find(".lh-fraction__label",a).textContent=e.title,a}hasApplicableAudits(e){return e.auditRefs.some((e=>"notApplicable"!==e.result.scoreDisplayMode))}_setGaugeArc(e,a){const n=2*Math.PI*Number(e.getAttribute("r")),t=Number(e.getAttribute("stroke-width")),i=.25*t/n;e.style.transform=`rotate(${360*i-90}deg)`;let o=a*n-t/2;0===a&&(e.style.opacity="0"),1===a&&(o=n),e.style.strokeDasharray=`${Math.max(o,0)} ${n}`}_auditHasWarning(e){return Boolean(e.result.warnings?.length)}_getClumpIdForAuditRef(e){const a=e.result.scoreDisplayMode;return"manual"===a||"notApplicable"===a?a:me.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,a={},n){const t=this.dom.createElement("div","lh-category");t.id=e.id,t.append(this.renderCategoryHeader(e,a,n));const i=new Map;i.set("failed",[]),i.set("warning",[]),i.set("manual",[]),i.set("passed",[]),i.set("notApplicable",[]);for(const a of e.auditRefs){const e=this._getClumpIdForAuditRef(a),n=i.get(e);n.push(a),i.set(e,n)}for(const e of i.values())e.sort(((e,a)=>a.weight-e.weight));for(const[n,o]of i){if(0===o.length)continue;if("failed"===n){const e=this.renderUnexpandableClump(o,a);e.classList.add("lh-clump--failed"),t.append(e);continue}const i="manual"===n?e.manualDescription:void 0,r=this.renderClump(n,{auditRefs:o,description:i});t.append(r)}return t}}
84
84
  /**
85
85
  * @license
86
86
  * Copyright 2017 The Lighthouse Authors. All Rights Reserved.
@@ -63,7 +63,7 @@ const s=r.RATINGS;class c{static prepareReportResult(e){const t=JSON.parse(JSON.
63
63
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
64
64
  * See the License for the specific language governing permissions and
65
65
  * limitations under the License.
66
- */class h{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:a.strings.warningAuditsGroupTitle,manual:a.strings.manualAuditsGroupTitle,passed:a.strings.passedAuditsGroupTitle,notApplicable:a.strings.notApplicableAuditsGroupTitle}}renderAudit(e){const t=this.dom.createComponent("audit");return this.populateAuditValues(e,t)}populateAuditValues(e,t){const n=a.strings,r=this.dom.find(".lh-audit",t);r.id=e.result.id;const o=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);const i=this.dom.find(".lh-audit__title",r);i.append(this.dom.convertMarkdownCodeSnippets(e.result.title));const l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(const t of e.relevantMetrics||[]){const e=this.dom.createChildOf(l,"span","lh-audit__adorn");e.title=`Relevant to ${t.result.title}`,e.textContent=t.acronym||t.id}e.stackPacks&&e.stackPacks.forEach((e=>{const t=this.dom.createElement("img","lh-audit__stackpack__img");t.src=e.iconDataURL,t.alt=e.title;const n=this.dom.convertMarkdownLinkSnippets(e.description,{alwaysAppendUtmSource:!0}),o=this.dom.createElement("div","lh-audit__stackpack");o.append(t,n),this.dom.find(".lh-audit__stackpacks",r).append(o)}));const s=this.dom.find("details",r);if(e.result.details){const t=this.detailsRenderer.render(e.result.details);t&&(t.classList.add("lh-details"),s.append(t))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,o),"error"===e.result.scoreDisplayMode){r.classList.add("lh-audit--error");const t=this.dom.find(".lh-audit__display-text",r);t.textContent=n.errorLabel,t.classList.add("lh-tooltip-boundary");this.dom.createChildOf(t,"div","lh-tooltip lh-tooltip--error").textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){this.dom.createChildOf(i,"div","lh-audit-explanation").textContent=e.result.explanation}const c=e.result.warnings;if(!c||0===c.length)return r;const d=this.dom.find("summary",s),h=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(h,"span").textContent=n.warningHeader,1===c.length)h.append(this.dom.createTextNode(c.join("")));else{const e=this.dom.createChildOf(h,"ul");for(const t of c){this.dom.createChildOf(e,"li").textContent=t}}return r}injectFinalScreenshot(e,t,n){const r=t["final-screenshot"];if(!r||"error"===r.scoreDisplayMode)return null;if(!r.details||"screenshot"!==r.details.type)return null;const o=this.dom.createElement("img","lh-final-ss-image"),i=r.details.data;o.src=i,o.alt=r.title;const a=this.dom.find(".lh-category .lh-category-header",e),l=this.dom.createElement("div","lh-category-headercol"),s=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),c=this.dom.createElement("div","lh-category-headercol");l.append(...a.childNodes),l.append(n),c.append(o),a.append(l,s,c),a.classList.add("lh-category-header__finalscreenshot")}_createChevron(){const e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,t,n){const r=c.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),"informative"!==n&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){const r=this.dom.createComponent("categoryHeader"),o=this.dom.find(".lh-score__gauge",r),i=this.renderCategoryScore(e,t,n);if(o.append(i),e.description){const t=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",r).append(t)}return r}renderAuditGroup(e){const t=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,t.append(n);let r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){const n=new Map,r="NotAGroup";n.set(r,[]);for(const t of e){const e=t.group||r,o=n.get(e)||[];o.push(t),n.set(e,o)}const o=[];for(const[e,i]of n){if(e===r){for(const e of i)o.push(this.renderAudit(e));continue}const n=t[e],[a,l]=this.renderAuditGroup(n);for(const e of i)a.insertBefore(this.renderAudit(e),l);a.classList.add(`lh-audit-group--${e}`),o.push(a)}return o}renderUnexpandableClump(e,t){const n=this.dom.createElement("div");return this._renderGroupedAudits(e,t).forEach((e=>n.append(e))),n}renderClump(e,{auditRefs:t,description:n}){const r=this.dom.createComponent("clump"),o=this.dom.find(".lh-clump",r);"warning"===e&&o.setAttribute("open","");const i=this.dom.find(".lh-audit-group__header",o),l=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",i).textContent=l;this.dom.find(".lh-audit-group__itemcount",o).textContent=`(${t.length})`;const s=t.map(this.renderAudit.bind(this));o.append(...s);const c=this.dom.find(".lh-audit-group",r);if(n){const e=this.dom.convertMarkdownLinkSnippets(n);e.classList.add("lh-audit-group__description","lh-audit-group__footer"),c.append(e)}return this.dom.find(".lh-clump-toggletext--show",c).textContent=a.strings.show,this.dom.find(".lh-clump-toggletext--hide",c).textContent=a.strings.hide,o.classList.add(`lh-clump--${e.toLowerCase()}`),c}renderCategoryScore(e,t,n){let r;if(r=n&&c.shouldDisplayAsFraction(n.gatherMode)?this.renderCategoryFraction(e):this.renderScoreGauge(e,t),n?.omitLabel){this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove()}if(n?.onPageAnchorRendered){const e=this.dom.find("a",r);n.onPageAnchorRendered(e)}return r}renderScoreGauge(e,t){const n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);c.isPluginCategory(e.id)&&r.classList.add("lh-gauge__wrapper--plugin");const o=Number(e.score),i=this.dom.find(".lh-gauge",n),l=this.dom.find("circle.lh-gauge-arc",i);l&&this._setGaugeArc(l,o);const s=Math.round(100*o),d=this.dom.find("div.lh-gauge__percentage",n);return d.textContent=s.toString(),null===e.score&&(d.classList.add("lh-gauge--error"),d.textContent="",d.title=a.strings.errorLabel),0===e.auditRefs.length||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${c.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),d.textContent="-",d.title=a.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){const t=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",t),{numPassed:r,numPassableAudits:o,totalWeight:i}=c.calculateCategoryFraction(e),a=r/o,l=this.dom.find(".lh-fraction__content",t),s=this.dom.createElement("span");s.textContent=`${r}/${o}`,l.append(s);let d=c.calculateRating(a);return 0===i&&(d="null"),n.classList.add(`lh-fraction__wrapper--${d}`),this.dom.find(".lh-fraction__label",t).textContent=e.title,t}hasApplicableAudits(e){return e.auditRefs.some((e=>"notApplicable"!==e.result.scoreDisplayMode))}_setGaugeArc(e,t){const n=2*Math.PI*Number(e.getAttribute("r")),r=Number(e.getAttribute("stroke-width")),o=.25*r/n;e.style.transform=`rotate(${360*o-90}deg)`;let i=t*n-r/2;0===t&&(e.style.opacity="0"),1===t&&(i=n),e.style.strokeDasharray=`${Math.max(i,0)} ${n}`}_auditHasWarning(e){return Boolean(e.result.warnings?.length)}_getClumpIdForAuditRef(e){const t=e.result.scoreDisplayMode;return"manual"===t||"notApplicable"===t?t:c.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){const r=this.dom.createElement("div","lh-category");r.id=e.id,r.append(this.renderCategoryHeader(e,t,n));const o=new Map;o.set("failed",[]),o.set("warning",[]),o.set("manual",[]),o.set("passed",[]),o.set("notApplicable",[]);for(const t of e.auditRefs){const e=this._getClumpIdForAuditRef(t),n=o.get(e);n.push(t),o.set(e,n)}for(const e of o.values())e.sort(((e,t)=>t.weight-e.weight));for(const[n,i]of o){if(0===i.length)continue;if("failed"===n){const e=this.renderUnexpandableClump(i,t);e.classList.add("lh-clump--failed"),r.append(e);continue}const o="manual"===n?e.manualDescription:void 0,a=this.renderClump(n,{auditRefs:i,description:o});r.append(a)}return r}}
66
+ */class h{constructor(e,t){this.dom=e,this.detailsRenderer=t}get _clumpTitles(){return{warning:a.strings.warningAuditsGroupTitle,manual:a.strings.manualAuditsGroupTitle,passed:a.strings.passedAuditsGroupTitle,notApplicable:a.strings.notApplicableAuditsGroupTitle}}renderAudit(e){const t=this.dom.createComponent("audit");return this.populateAuditValues(e,t)}populateAuditValues(e,t){const n=a.strings,r=this.dom.find(".lh-audit",t);r.id=e.result.id;const o=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",r).textContent=e.result.displayValue);const i=this.dom.find(".lh-audit__title",r);i.append(this.dom.convertMarkdownCodeSnippets(e.result.title));const l=this.dom.find(".lh-audit__description",r);l.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(const t of e.relevantMetrics||[]){const e=this.dom.createChildOf(l,"span","lh-audit__adorn");e.title=`Relevant to ${t.result.title}`,e.textContent=t.acronym||t.id}e.stackPacks&&e.stackPacks.forEach((e=>{const t=this.dom.createElement("img","lh-audit__stackpack__img");t.src=e.iconDataURL,t.alt=e.title;const n=this.dom.convertMarkdownLinkSnippets(e.description,{alwaysAppendUtmSource:!0}),o=this.dom.createElement("div","lh-audit__stackpack");o.append(t,n),this.dom.find(".lh-audit__stackpacks",r).append(o)}));const s=this.dom.find("details",r);if(e.result.details){const t=this.detailsRenderer.render(e.result.details);t&&(t.classList.add("lh-details"),s.append(t))}if(this.dom.find(".lh-chevron-container",r).append(this._createChevron()),this._setRatingClass(r,e.result.score,o),"error"===e.result.scoreDisplayMode){r.classList.add("lh-audit--error");const t=this.dom.find(".lh-audit__display-text",r);t.textContent=n.errorLabel,t.classList.add("lh-tooltip-boundary");this.dom.createChildOf(t,"div","lh-tooltip lh-tooltip--error").textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){this.dom.createChildOf(i,"div","lh-audit-explanation").textContent=e.result.explanation}const c=e.result.warnings;if(!c||0===c.length)return r;const d=this.dom.find("summary",s),h=this.dom.createChildOf(d,"div","lh-warnings");if(this.dom.createChildOf(h,"span").textContent=n.warningHeader,1===c.length)h.append(this.dom.createTextNode(c.join("")));else{const e=this.dom.createChildOf(h,"ul");for(const t of c){this.dom.createChildOf(e,"li").textContent=t}}return r}injectFinalScreenshot(e,t,n){const r=t["final-screenshot"];if(!r||"error"===r.scoreDisplayMode)return null;if(!r.details||"screenshot"!==r.details.type)return null;const o=this.dom.createElement("img","lh-final-ss-image"),i=r.details.data;o.src=i,o.alt=r.title;const a=this.dom.find(".lh-category .lh-category-header",e),l=this.dom.createElement("div","lh-category-headercol"),s=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),c=this.dom.createElement("div","lh-category-headercol");l.append(...a.childNodes),l.append(n),c.append(o),a.append(l,s,c),a.classList.add("lh-category-header__finalscreenshot")}_createChevron(){const e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,t,n){const r=c.calculateRating(t,n);return e.classList.add(`lh-audit--${n.toLowerCase()}`),"informative"!==n&&e.classList.add(`lh-audit--${r}`),e}renderCategoryHeader(e,t,n){const r=this.dom.createComponent("categoryHeader"),o=this.dom.find(".lh-score__gauge",r),i=this.renderCategoryScore(e,t,n);if(o.append(i),e.description){const t=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",r).append(t)}return r}renderAuditGroup(e){const t=this.dom.createElement("div","lh-audit-group"),n=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(n,"span","lh-audit-group__title").textContent=e.title,t.append(n);let r=null;return e.description&&(r=this.dom.convertMarkdownLinkSnippets(e.description),r.classList.add("lh-audit-group__description","lh-audit-group__footer"),t.append(r)),[t,r]}_renderGroupedAudits(e,t){const n=new Map,r="NotAGroup";n.set(r,[]);for(const t of e){const e=t.group||r;if("hidden"===e)continue;const o=n.get(e)||[];o.push(t),n.set(e,o)}const o=[];for(const[e,i]of n){if(e===r){for(const e of i)o.push(this.renderAudit(e));continue}const n=t[e],[a,l]=this.renderAuditGroup(n);for(const e of i)a.insertBefore(this.renderAudit(e),l);a.classList.add(`lh-audit-group--${e}`),o.push(a)}return o}renderUnexpandableClump(e,t){const n=this.dom.createElement("div");return this._renderGroupedAudits(e,t).forEach((e=>n.append(e))),n}renderClump(e,{auditRefs:t,description:n}){const r=this.dom.createComponent("clump"),o=this.dom.find(".lh-clump",r);"warning"===e&&o.setAttribute("open","");const i=this.dom.find(".lh-audit-group__header",o),l=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",i).textContent=l;this.dom.find(".lh-audit-group__itemcount",o).textContent=`(${t.length})`;const s=t.map(this.renderAudit.bind(this));o.append(...s);const c=this.dom.find(".lh-audit-group",r);if(n){const e=this.dom.convertMarkdownLinkSnippets(n);e.classList.add("lh-audit-group__description","lh-audit-group__footer"),c.append(e)}return this.dom.find(".lh-clump-toggletext--show",c).textContent=a.strings.show,this.dom.find(".lh-clump-toggletext--hide",c).textContent=a.strings.hide,o.classList.add(`lh-clump--${e.toLowerCase()}`),c}renderCategoryScore(e,t,n){let r;if(r=n&&c.shouldDisplayAsFraction(n.gatherMode)?this.renderCategoryFraction(e):this.renderScoreGauge(e,t),n?.omitLabel){this.dom.find(".lh-gauge__label,.lh-fraction__label",r).remove()}if(n?.onPageAnchorRendered){const e=this.dom.find("a",r);n.onPageAnchorRendered(e)}return r}renderScoreGauge(e,t){const n=this.dom.createComponent("gauge"),r=this.dom.find("a.lh-gauge__wrapper",n);c.isPluginCategory(e.id)&&r.classList.add("lh-gauge__wrapper--plugin");const o=Number(e.score),i=this.dom.find(".lh-gauge",n),l=this.dom.find("circle.lh-gauge-arc",i);l&&this._setGaugeArc(l,o);const s=Math.round(100*o),d=this.dom.find("div.lh-gauge__percentage",n);return d.textContent=s.toString(),null===e.score&&(d.classList.add("lh-gauge--error"),d.textContent="",d.title=a.strings.errorLabel),0===e.auditRefs.length||this.hasApplicableAudits(e)?r.classList.add(`lh-gauge__wrapper--${c.calculateRating(e.score)}`):(r.classList.add("lh-gauge__wrapper--not-applicable"),d.textContent="-",d.title=a.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",n).textContent=e.title,n}renderCategoryFraction(e){const t=this.dom.createComponent("fraction"),n=this.dom.find("a.lh-fraction__wrapper",t),{numPassed:r,numPassableAudits:o,totalWeight:i}=c.calculateCategoryFraction(e),a=r/o,l=this.dom.find(".lh-fraction__content",t),s=this.dom.createElement("span");s.textContent=`${r}/${o}`,l.append(s);let d=c.calculateRating(a);return 0===i&&(d="null"),n.classList.add(`lh-fraction__wrapper--${d}`),this.dom.find(".lh-fraction__label",t).textContent=e.title,t}hasApplicableAudits(e){return e.auditRefs.some((e=>"notApplicable"!==e.result.scoreDisplayMode))}_setGaugeArc(e,t){const n=2*Math.PI*Number(e.getAttribute("r")),r=Number(e.getAttribute("stroke-width")),o=.25*r/n;e.style.transform=`rotate(${360*o-90}deg)`;let i=t*n-r/2;0===t&&(e.style.opacity="0"),1===t&&(i=n),e.style.strokeDasharray=`${Math.max(i,0)} ${n}`}_auditHasWarning(e){return Boolean(e.result.warnings?.length)}_getClumpIdForAuditRef(e){const t=e.result.scoreDisplayMode;return"manual"===t||"notApplicable"===t?t:c.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,t={},n){const r=this.dom.createElement("div","lh-category");r.id=e.id,r.append(this.renderCategoryHeader(e,t,n));const o=new Map;o.set("failed",[]),o.set("warning",[]),o.set("manual",[]),o.set("passed",[]),o.set("notApplicable",[]);for(const t of e.auditRefs){const e=this._getClumpIdForAuditRef(t),n=o.get(e);n.push(t),o.set(e,n)}for(const e of o.values())e.sort(((e,t)=>t.weight-e.weight));for(const[n,i]of o){if(0===i.length)continue;if("failed"===n){const e=this.renderUnexpandableClump(i,t);e.classList.add("lh-clump--failed"),r.append(e);continue}const o="manual"===n?e.manualDescription:void 0,a=this.renderClump(n,{auditRefs:i,description:o});r.append(a)}return r}}
67
67
  /**
68
68
  * @license
69
69
  * Copyright 2017 The Lighthouse Authors. All Rights Reserved.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lighthouse",
3
3
  "type": "module",
4
- "version": "10.3.0-dev.20230704",
4
+ "version": "10.3.0-dev.20230706",
5
5
  "description": "Automated auditing, performance metrics, and best practices for the web.",
6
6
  "main": "./core/index.js",
7
7
  "bin": {
@@ -169,7 +169,7 @@
169
169
  "pako": "^2.0.3",
170
170
  "preact": "^10.7.2",
171
171
  "pretty-json-stringify": "^0.0.2",
172
- "puppeteer": "^20.7.1",
172
+ "puppeteer": "^20.8.0",
173
173
  "resolve": "^1.20.0",
174
174
  "rollup": "^2.52.7",
175
175
  "rollup-plugin-node-resolve": "^5.2.0",
@@ -205,7 +205,7 @@
205
205
  "open": "^8.4.0",
206
206
  "parse-cache-control": "1.0.1",
207
207
  "ps-list": "^8.0.0",
208
- "puppeteer-core": "^20.7.1",
208
+ "puppeteer-core": "^20.8.0",
209
209
  "robots-parser": "^3.0.0",
210
210
  "semver": "^5.3.0",
211
211
  "speedline-core": "^1.4.3",
@@ -260,6 +260,7 @@ export class CategoryRenderer {
260
260
 
261
261
  for (const auditRef of auditRefs) {
262
262
  const groupId = auditRef.group || notAGroup;
263
+ if (groupId === 'hidden') continue;
263
264
  const groupAuditRefs = grouped.get(groupId) || [];
264
265
  groupAuditRefs.push(auditRef);
265
266
  grouped.set(groupId, groupAuditRefs);
@@ -245,6 +245,15 @@
245
245
  "core/audits/accessibility/duplicate-id-aria.js | title": {
246
246
  "message": "ARIA IDs are unique"
247
247
  },
248
+ "core/audits/accessibility/empty-heading.js | description": {
249
+ "message": "A heading with no content or inaccessible text prevent screen reader users from accessing information on the page's structure. [Learn more about headings](https://dequeuniversity.com/rules/axe/4.7/empty-heading)."
250
+ },
251
+ "core/audits/accessibility/empty-heading.js | failureTitle": {
252
+ "message": "Heading elements do not contain content."
253
+ },
254
+ "core/audits/accessibility/empty-heading.js | title": {
255
+ "message": "All heading elements contain content."
256
+ },
248
257
  "core/audits/accessibility/form-field-multiple-labels.js | description": {
249
258
  "message": "Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn how to use form labels](https://dequeuniversity.com/rules/axe/4.7/form-field-multiple-labels)."
250
259
  },
@@ -299,6 +308,15 @@
299
308
  "core/audits/accessibility/html-xml-lang-mismatch.js | title": {
300
309
  "message": "`<html>` element has an `[xml:lang]` attribute with the same base language as the `[lang]` attribute."
301
310
  },
311
+ "core/audits/accessibility/identical-links-same-purpose.js | description": {
312
+ "message": "Links with the same destination should have the same description, to help users understand the link's purpose and decide whether to follow it. [Learn more about identical links](https://dequeuniversity.com/rules/axe/4.7/identical-links-same-purpose)."
313
+ },
314
+ "core/audits/accessibility/identical-links-same-purpose.js | failureTitle": {
315
+ "message": "Identical links do not have the same purpose."
316
+ },
317
+ "core/audits/accessibility/identical-links-same-purpose.js | title": {
318
+ "message": "Identical links have the same purpose."
319
+ },
302
320
  "core/audits/accessibility/image-alt.js | description": {
303
321
  "message": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.7/image-alt)."
304
322
  },
@@ -335,6 +353,15 @@
335
353
  "core/audits/accessibility/label.js | title": {
336
354
  "message": "Form elements have associated labels"
337
355
  },
356
+ "core/audits/accessibility/landmark-one-main.js | description": {
357
+ "message": "One main landmark helps screen reader users navigate a web page. [Learn more about landmarks](https://dequeuniversity.com/rules/axe/4.7/landmark-one-main)."
358
+ },
359
+ "core/audits/accessibility/landmark-one-main.js | failureTitle": {
360
+ "message": "Document does not have a main landmark."
361
+ },
362
+ "core/audits/accessibility/landmark-one-main.js | title": {
363
+ "message": "Document has a main landmark."
364
+ },
338
365
  "core/audits/accessibility/link-in-text-block.js | description": {
339
366
  "message": "Low-contrast text is difficult or impossible for many users to read. Link text that is discernible improves the experience for users with low vision. [Learn how to make links distinguishable](https://dequeuniversity.com/rules/axe/4.7/link-in-text-block)."
340
367
  },
@@ -425,6 +452,15 @@
425
452
  "core/audits/accessibility/table-fake-caption.js | title": {
426
453
  "message": "Tables use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption."
427
454
  },
455
+ "core/audits/accessibility/target-size.js | description": {
456
+ "message": "Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls activate the targets. [Learn more about touch targets](https://dequeuniversity.com/rules/axe/4.7/target-size)."
457
+ },
458
+ "core/audits/accessibility/target-size.js | failureTitle": {
459
+ "message": "Touch targets do not have sufficient size or spacing."
460
+ },
461
+ "core/audits/accessibility/target-size.js | title": {
462
+ "message": "Touch targets have sufficient size and spacing."
463
+ },
428
464
  "core/audits/accessibility/td-has-header.js | description": {
429
465
  "message": "Screen readers have features to make navigating tables easier. Ensuring that `<td>` elements in a large table (3 or more cells in width and height) have an associated table header may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.7/td-has-header)."
430
466
  },
@@ -245,6 +245,15 @@
245
245
  "core/audits/accessibility/duplicate-id-aria.js | title": {
246
246
  "message": "ÂŔÎÁ ÎD́ŝ ár̂é ûńîq́ûé"
247
247
  },
248
+ "core/audits/accessibility/empty-heading.js | description": {
249
+ "message": "Â h́êád̂ín̂ǵ ŵít̂h́ n̂ó ĉón̂t́êńt̂ ór̂ ín̂áĉćêśŝíb̂ĺê t́êx́t̂ ṕr̂év̂én̂t́ ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ f́r̂óm̂ áĉćêśŝín̂ǵ îńf̂ór̂ḿât́îón̂ ón̂ t́ĥé p̂áĝé'ŝ śt̂ŕûćt̂úr̂é. [L̂éâŕn̂ ḿôŕê áb̂óût́ ĥéâd́îńĝś](https://dequeuniversity.com/rules/axe/4.7/empty-heading)."
250
+ },
251
+ "core/audits/accessibility/empty-heading.js | failureTitle": {
252
+ "message": "Ĥéâd́îńĝ él̂ém̂én̂t́ŝ d́ô ńôt́ ĉón̂t́âín̂ ćôńt̂én̂t́."
253
+ },
254
+ "core/audits/accessibility/empty-heading.js | title": {
255
+ "message": "Âĺl̂ h́êád̂ín̂ǵ êĺêḿêńt̂ś ĉón̂t́âín̂ ćôńt̂én̂t́."
256
+ },
248
257
  "core/audits/accessibility/form-field-multiple-labels.js | description": {
249
258
  "message": "F̂ór̂ḿ f̂íêĺd̂ś ŵít̂h́ m̂úl̂t́îṕl̂é l̂áb̂él̂ś ĉán̂ b́ê ćôńf̂úŝín̂ǵl̂ý âńn̂óûńĉéd̂ b́ŷ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝíêś l̂ík̂é ŝćr̂éêń r̂éâd́êŕŝ ẃĥíĉh́ ûśê éît́ĥér̂ t́ĥé f̂ír̂śt̂, t́ĥé l̂áŝt́, ôŕ âĺl̂ óf̂ t́ĥé l̂áb̂él̂ś. [L̂éâŕn̂ h́ôẃ t̂ó ûśê f́ôŕm̂ ĺâb́êĺŝ](https://dequeuniversity.com/rules/axe/4.7/form-field-multiple-labels)."
250
259
  },
@@ -299,6 +308,15 @@
299
308
  "core/audits/accessibility/html-xml-lang-mismatch.js | title": {
300
309
  "message": "`<html>` êĺêḿêńt̂ h́âś âń `[xml:lang]` ât́t̂ŕîb́ût́ê ẃît́ĥ t́ĥé ŝám̂é b̂áŝé l̂án̂ǵûáĝé âś t̂h́ê `[lang]` át̂t́r̂íb̂út̂é."
301
310
  },
311
+ "core/audits/accessibility/identical-links-same-purpose.js | description": {
312
+ "message": "L̂ín̂ḱŝ ẃît́ĥ t́ĥé ŝám̂é d̂éŝt́îńât́îón̂ śĥóûĺd̂ h́âv́ê t́ĥé ŝám̂é d̂éŝćr̂íp̂t́îón̂, t́ô h́êĺp̂ úŝér̂ś ûńd̂ér̂śt̂án̂d́ t̂h́ê ĺîńk̂'ś p̂úr̂ṕôśê án̂d́ d̂éĉíd̂é ŵh́êt́ĥér̂ t́ô f́ôĺl̂óŵ ít̂. [Ĺêár̂ń m̂ór̂é âb́ôút̂ íd̂én̂t́îćâĺ l̂ín̂ḱŝ](https://dequeuniversity.com/rules/axe/4.7/identical-links-same-purpose)."
313
+ },
314
+ "core/audits/accessibility/identical-links-same-purpose.js | failureTitle": {
315
+ "message": "Îd́êńt̂íĉál̂ ĺîńk̂ś d̂ó n̂ót̂ h́âv́ê t́ĥé ŝám̂é p̂úr̂ṕôśê."
316
+ },
317
+ "core/audits/accessibility/identical-links-same-purpose.js | title": {
318
+ "message": "Îd́êńt̂íĉál̂ ĺîńk̂ś ĥáv̂é t̂h́ê śâḿê ṕûŕp̂óŝé."
319
+ },
302
320
  "core/audits/accessibility/image-alt.js | description": {
303
321
  "message": "Îńf̂ór̂ḿât́îv́ê él̂ém̂én̂t́ŝ śĥóûĺd̂ áîḿ f̂ór̂ śĥór̂t́, d̂éŝćr̂íp̂t́îv́ê ál̂t́êŕn̂át̂é t̂éx̂t́. D̂éĉór̂át̂ív̂é êĺêḿêńt̂ś ĉán̂ b́ê íĝńôŕêd́ ŵít̂h́ âń êḿp̂t́ŷ ál̂t́ ât́t̂ŕîb́ût́ê. [Ĺêár̂ń m̂ór̂é âb́ôút̂ t́ĥé `alt` ât́t̂ŕîb́ût́ê](https://dequeuniversity.com/rules/axe/4.7/image-alt)."
304
322
  },
@@ -335,6 +353,15 @@
335
353
  "core/audits/accessibility/label.js | title": {
336
354
  "message": "F̂ór̂ḿ êĺêḿêńt̂ś ĥáv̂é âśŝóĉíât́êd́ l̂áb̂él̂ś"
337
355
  },
356
+ "core/audits/accessibility/landmark-one-main.js | description": {
357
+ "message": "Ôńê ḿâín̂ ĺâńd̂ḿâŕk̂ h́êĺp̂ś ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ ńâv́îǵât́ê á ŵéb̂ ṕâǵê. [Ĺêár̂ń m̂ór̂é âb́ôút̂ ĺâńd̂ḿâŕk̂ś](https://dequeuniversity.com/rules/axe/4.7/landmark-one-main)."
358
+ },
359
+ "core/audits/accessibility/landmark-one-main.js | failureTitle": {
360
+ "message": "D̂óĉúm̂én̂t́ d̂óêś n̂ót̂ h́âv́ê á m̂áîń l̂án̂d́m̂ár̂ḱ."
361
+ },
362
+ "core/audits/accessibility/landmark-one-main.js | title": {
363
+ "message": "D̂óĉúm̂én̂t́ ĥáŝ á m̂áîń l̂án̂d́m̂ár̂ḱ."
364
+ },
338
365
  "core/audits/accessibility/link-in-text-block.js | description": {
339
366
  "message": "L̂óŵ-ćôńt̂ŕâśt̂ t́êx́t̂ íŝ d́îf́f̂íĉúl̂t́ ôŕ îḿp̂óŝśîb́l̂é f̂ór̂ ḿâńŷ úŝér̂ś t̂ó r̂éâd́. L̂ín̂ḱ t̂éx̂t́ t̂h́ât́ îś d̂íŝćêŕn̂íb̂ĺê ím̂ṕr̂óv̂éŝ t́ĥé êx́p̂ér̂íêńĉé f̂ór̂ úŝér̂ś ŵít̂h́ l̂óŵ v́îśîón̂. [Ĺêár̂ń ĥóŵ t́ô ḿâḱê ĺîńk̂ś d̂íŝt́îńĝúîśĥáb̂ĺê](https://dequeuniversity.com/rules/axe/4.7/link-in-text-block)."
340
367
  },
@@ -425,6 +452,15 @@
425
452
  "core/audits/accessibility/table-fake-caption.js | title": {
426
453
  "message": "T̂áb̂ĺêś ûśê `<caption>` ín̂śt̂éâd́ ôf́ ĉél̂ĺŝ ẃît́ĥ t́ĥé `[colspan]` ât́t̂ŕîb́ût́ê t́ô ín̂d́îćât́ê á ĉáp̂t́îón̂."
427
454
  },
455
+ "core/audits/accessibility/target-size.js | description": {
456
+ "message": "T̂óûćĥ t́âŕĝét̂ś ŵít̂h́ ŝúf̂f́îćîén̂t́ ŝíẑé âńd̂ śp̂áĉín̂ǵ ĥél̂ṕ ûśêŕŝ ẃĥó m̂áŷ h́âv́ê d́îf́f̂íĉúl̂t́ŷ t́âŕĝét̂ín̂ǵ ŝḿâĺl̂ ćôńt̂ŕôĺŝ áĉt́îv́ât́ê t́ĥé t̂ár̂ǵêt́ŝ. [Ĺêár̂ń m̂ór̂é âb́ôút̂ t́ôúĉh́ t̂ár̂ǵêt́ŝ](https://dequeuniversity.com/rules/axe/4.7/target-size)."
457
+ },
458
+ "core/audits/accessibility/target-size.js | failureTitle": {
459
+ "message": "T̂óûćĥ t́âŕĝét̂ś d̂ó n̂ót̂ h́âv́ê śûf́f̂íĉíêńt̂ śîźê ór̂ śp̂áĉín̂ǵ."
460
+ },
461
+ "core/audits/accessibility/target-size.js | title": {
462
+ "message": "T̂óûćĥ t́âŕĝét̂ś ĥáv̂é ŝúf̂f́îćîén̂t́ ŝíẑé âńd̂ śp̂áĉín̂ǵ."
463
+ },
428
464
  "core/audits/accessibility/td-has-header.js | description": {
429
465
  "message": "Ŝćr̂éêń r̂éâd́êŕŝ h́âv́ê f́êát̂úr̂éŝ t́ô ḿâḱê ńâv́îǵât́îńĝ t́âb́l̂éŝ éâśîér̂. Én̂śûŕîńĝ t́ĥát̂ `<td>` él̂ém̂én̂t́ŝ ín̂ á l̂ár̂ǵê t́âb́l̂é (3 ôŕ m̂ór̂é ĉél̂ĺŝ ín̂ ẃîd́t̂h́ âńd̂ h́êíĝh́t̂) h́âv́ê án̂ áŝśôćîát̂éd̂ t́âb́l̂é ĥéâd́êŕ m̂áŷ ím̂ṕr̂óv̂é t̂h́ê éx̂ṕêŕîén̂ćê f́ôŕ ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ. [Ĺêár̂ń m̂ór̂é âb́ôút̂ t́âb́l̂é ĥéâd́êŕŝ](https://dequeuniversity.com/rules/axe/4.7/td-has-header)."
430
466
  },
package/tsconfig.json CHANGED
@@ -41,7 +41,6 @@
41
41
  "core/test/config/config-plugin-test.js",
42
42
  "core/test/legacy/config/config-test.js",
43
43
  "core/test/config/default-config-test.js",
44
- "core/test/create-test-trace.js",
45
44
  "core/test/gather/driver/wait-for-condition-test.js",
46
45
  "core/test/gather/gatherers/accessibility-test.js",
47
46
  "core/test/gather/gatherers/cache-contents-test.js",
@@ -107,6 +106,7 @@
107
106
  "core/test/audits/bf-cache-test.js",
108
107
  "core/test/audits/script-treemap-data-test.js",
109
108
  "core/test/computed/metrics/interactive-test.js",
109
+ "core/test/computed/tbt-impact-tasks-test.js",
110
110
  "core/test/fixtures/config-plugins/lighthouse-plugin-simple/plugin-simple.js",
111
111
  ],
112
112
  }
@@ -11,7 +11,7 @@ import {Simulator} from '../core/lib/dependency-graph/simulator/simulator.js';
11
11
  import {LighthouseError} from '../core/lib/lh-error.js';
12
12
  import {NetworkRequest as _NetworkRequest} from '../core/lib/network-request.js';
13
13
  import speedline from 'speedline-core';
14
- import * as TextSourceMap from '../core/lib/cdt/generated/SourceMap.js';
14
+ import * as CDTSourceMap from '../core/lib/cdt/generated/SourceMap.js';
15
15
  import {ArbitraryEqualityMap} from '../core/lib/arbitrary-equality-map.js';
16
16
  import type { TaskNode as _TaskNode } from '../core/lib/tracehouse/main-thread-tasks.js';
17
17
  import AuditDetails from './lhr/audit-details.js'
@@ -388,7 +388,7 @@ declare module Artifacts {
388
388
  interface Bundle {
389
389
  rawMap: RawSourceMap;
390
390
  script: Artifacts.Script;
391
- map: TextSourceMap;
391
+ map: CDTSourceMap;
392
392
  sizes: {
393
393
  // TODO(cjamcl): Rename to `sources`.
394
394
  files: Record<string, number>;
@@ -989,7 +989,11 @@ export interface TraceEvent {
989
989
  };
990
990
  data?: {
991
991
  frame?: string;
992
+ parent?: string;
992
993
  frameID?: string;
994
+ frameTreeNodeId?: number;
995
+ isMainFrame?: boolean;
996
+ persistentIds?: boolean,
993
997
  processId?: number;
994
998
  isLoadingMainFrame?: boolean;
995
999
  documentLoaderURL?: string;
@@ -999,6 +1003,7 @@ export interface TraceEvent {
999
1003
  url: string;
1000
1004
  parent?: string;
1001
1005
  processId?: number;
1006
+ name?: string;
1002
1007
  }[];
1003
1008
  page?: string;
1004
1009
  readyState?: number;
@@ -1035,6 +1040,8 @@ export interface TraceEvent {
1035
1040
  interactionType?: 'drag'|'keyboard'|'tapOrClick';
1036
1041
  maxDuration?: number;
1037
1042
  type?: string;
1043
+ functionName?: string;
1044
+ name?: string;
1038
1045
  };
1039
1046
  frame?: string;
1040
1047
  name?: string;