Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new_audit: add unsized-images to experimental config #11115

Merged
merged 50 commits into from
Jul 29, 2020
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
c00a579
Added new docTypeError fxn and LHError
lemcardenas Jun 26, 2020
09682f4
starting testing code
lemcardenas Jun 26, 2020
eec825d
starting tests
lemcardenas Jun 29, 2020
a63f813
finished unit tests for getDocTypeError
lemcardenas Jun 30, 2020
40bf826
bugfixing
lemcardenas Jun 30, 2020
28cad19
integrated getDocTypeError into getPageLoadError
lemcardenas Jun 30, 2020
6ac8d69
removed console logging from debugging
lemcardenas Jun 30, 2020
fbc6380
changes from code review
lemcardenas Jul 1, 2020
ba1dedd
more code review changes
lemcardenas Jul 1, 2020
85ac35a
committed new strings for testing
lemcardenas Jul 2, 2020
4f1b321
even more code review changes
lemcardenas Jul 2, 2020
6d36004
Merge branch 'master' into error-nonHTML
lemcardenas Jul 6, 2020
9dd709d
changed naming from nonHtml to notHTML, removed an unnecessary if sta…
lemcardenas Jul 7, 2020
cd32b47
added changed i18n strings
lemcardenas Jul 7, 2020
387649b
Merge branch 'error-nonHTML' of github.com:GoogleChrome/lighthouse in…
lemcardenas Jul 7, 2020
8e3b371
removed regex and added const str for comparison
lemcardenas Jul 8, 2020
6f90641
included a comment about Chrome MIME type normalization
lemcardenas Jul 8, 2020
d8437ca
started fleshing out new audit
lemcardenas Jul 16, 2020
0fca1e6
working audit on basic examples
lemcardenas Jul 16, 2020
37628a8
removed spaces and added titles and comments
lemcardenas Jul 16, 2020
f3295ef
merged with origin
lemcardenas Jul 16, 2020
488f73b
added a file overview
lemcardenas Jul 16, 2020
a6417f1
baked new strings & changed duplicate string assertion
lemcardenas Jul 17, 2020
3cc6c24
feedback fixed from draft pr, sized-images-test
lemcardenas Jul 17, 2020
b5c3679
fixed testing bugs, updated sample json
lemcardenas Jul 17, 2020
18abbc6
test edits and removed from default config
lemcardenas Jul 17, 2020
be69f4c
Merge branch 'master' into unsized-images
lemcardenas Jul 17, 2020
9c16d43
added to experimental config
lemcardenas Jul 17, 2020
1498e2d
fixed ts error and edited exp config
lemcardenas Jul 17, 2020
d874c37
Merge branch 'master' into unsized-images
lemcardenas Jul 20, 2020
bc64ee3
added preliminary css sizing logic
lemcardenas Jul 22, 2020
1d784b0
Merge branch 'master' into unsized-images
lemcardenas Jul 22, 2020
b5bc587
added and shifted comments
lemcardenas Jul 22, 2020
ed14f53
edited UIstrings and filenames
lemcardenas Jul 22, 2020
e5a2c7c
made css props optional in artifacts & refactored image-elements
lemcardenas Jul 23, 2020
30648c0
fixed unsized-images-test
lemcardenas Jul 23, 2020
febcbf9
Merge branch 'master' into unsized-images
lemcardenas Jul 23, 2020
b004ee3
removed contents of image-elements file
lemcardenas Jul 23, 2020
e724369
reverted image-elements to html size attribute changes
lemcardenas Jul 23, 2020
7c80ad3
fixed image-elements indenting
lemcardenas Jul 23, 2020
1e0504c
changed size typedef, isValidCss, added tests
lemcardenas Jul 23, 2020
bf9e377
Merge branch 'master' into unsized-images
lemcardenas Jul 23, 2020
cb50193
fixed isValidCss and added css testing
lemcardenas Jul 24, 2020
7c59358
fixed commenting format
lemcardenas Jul 27, 2020
9c97f25
updated audit description UIString
lemcardenas Jul 27, 2020
a684510
fixed nits
lemcardenas Jul 27, 2020
1aad5e3
resolving merge conflicts; have new ts errors
lemcardenas Jul 28, 2020
f7059a4
Merge branch 'master' into unsized-images
lemcardenas Jul 28, 2020
1504d1d
refactored unsized-images-test
lemcardenas Jul 29, 2020
5d545e4
small change in runAudit
lemcardenas Jul 29, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ const UIStrings = {
/** Description of a Lighthouse audit that tells the user why they should allow pasting of content into password fields. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
description: 'Preventing password pasting undermines good security policy. ' +
'[Learn more](https://web.dev/password-inputs-can-be-pasted-into/).',
/** Table column header for the HTML elements that do not allow pasting of content. */
columnFailingElem: 'Failing Elements',
};

const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);
Expand Down Expand Up @@ -53,7 +51,7 @@ class PasswordInputsCanBePastedIntoAudit extends Audit {

/** @type {LH.Audit.Details.Table['headings']} */
const headings = [
{key: 'node', itemType: 'node', text: str_(UIStrings.columnFailingElem)},
{key: 'node', itemType: 'node', text: str_(i18n.UIStrings.columnFailingElem)},
];

return {
Expand Down
127 changes: 127 additions & 0 deletions lighthouse-core/audits/unsized-images.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/**
* @license Copyright 2020 The Lighthouse Authors. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
*/
'use strict';

const Audit = require('./audit.js');
const i18n = require('./../lib/i18n/i18n.js');
const URL = require('./../lib/url-shim.js');

const UIStrings = {
/** Title of a Lighthouse audit that provides detail on whether all images have explicit width and height. This descriptive title is shown to users when every image has explicit width and height */
title: 'Image elements have explicit `width` and `height`',
/** Title of a Lighthouse audit that provides detail on whether all images have explicit width and height. This descriptive title is shown to users when one or more images does not have explicit width and height */
failureTitle: 'Image elements do not have explicit `width` and `height`',
/** Description of a Lighthouse audit that tells the user why they should include explicit width and height for all images. This is displayed after a user expands the section to see more. No character length limits. 'Learn More' becomes link text to additional documentation. */
description: 'Always include explicit width and height on your image elements to reduce layout shifting and improve CLS. [Learn more](https://web.dev/optimize-cls/#images-without-dimensions)',
lemcardenas marked this conversation as resolved.
Show resolved Hide resolved
};

const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings);

/**
* @fileoverview
* Audit that checks whether all images have width and height attributes.
*/

class SizedImages extends Audit {
/**
* @return {LH.Audit.Meta}
*/
static get meta() {
return {
id: 'unsized-images',
title: str_(UIStrings.title),
failureTitle: str_(UIStrings.failureTitle),
description: str_(UIStrings.description),
requiredArtifacts: ['ImageElements'],
};
}

/**
* @param {string} attr
* @return {boolean}
*/
static isValidAttr(attr) {
// an img size attribute is valid for preventing CLS
// if it is a non-negative, non-zero integer
const NON_NEGATIVE_INT_REGEX = /^\d+$/;
const ZERO_REGEX = /^0+$/;
return NON_NEGATIVE_INT_REGEX.test(attr) && !ZERO_REGEX.test(attr);
}

/**
* @param {string} property
* @return {boolean}
*/
static isValidCss(property) {
// an img css size property is valid for preventing CLS
// if it is defined and not equal to 'auto'
// `undefined` and `''` are implicitly rejected as invalid
lemcardenas marked this conversation as resolved.
Show resolved Hide resolved
// because of their falsy short-circuit of && in isUnsizedImage
if (!property) return false;
return property !== 'auto';
}

/**
* @param {LH.Artifacts.ImageElement} image
* @return {boolean}
*/
static isUnsizedImage(image) {
// images are considered sized if they have defined & valid values
lemcardenas marked this conversation as resolved.
Show resolved Hide resolved
const attrWidth = image.attributeWidth;
const attrHeight = image.attributeHeight;
const cssWidth = image.cssWidth;
const cssHeight = image.cssHeight;
const widthIsValidAttribute = attrWidth && SizedImages.isValidAttr(attrWidth);
const widthIsValidCss = cssWidth && SizedImages.isValidCss(cssWidth);
const heightIsValidAttribute = attrHeight && SizedImages.isValidAttr(attrHeight);
const heightIsValidCss = cssHeight && SizedImages.isValidCss(cssHeight);
const validWidth = widthIsValidAttribute || widthIsValidCss;
const validHeight = heightIsValidAttribute || heightIsValidCss;
return !validWidth || !validHeight;
}

/**
* @param {LH.Artifacts} artifacts
* @return {Promise<LH.Audit.Product>}
*/
static async audit(artifacts) {
// CSS background-images are ignored for this audit
const images = artifacts.ImageElements.filter(el => !el.isCss);
const unsizedImages = [];

for (const image of images) {
if (SizedImages.isUnsizedImage(image)) {
lemcardenas marked this conversation as resolved.
Show resolved Hide resolved
const url = URL.elideDataURI(image.src);
unsizedImages.push({
url,
node: /** @type {LH.Audit.Details.NodeValue} */ ({
type: 'node',
path: image.devtoolsNodePath,
selector: image.selector,
nodeLabel: image.nodeLabel,
snippet: image.snippet,
}),
});
}
}

/** @type {LH.Audit.Details.Table['headings']} */
const headings = [
{key: 'url', itemType: 'thumbnail', text: ''},
{key: 'url', itemType: 'url', text: str_(i18n.UIStrings.columnURL)},
{key: 'node', itemType: 'node', text: str_(i18n.UIStrings.columnFailingElem)},
];

return {
score: unsizedImages.length > 0 ? 0 : 1,
notApplicable: images.length === 0,
details: Audit.makeTableDetails(headings, unsizedImages),
};
}
}

module.exports = SizedImages;
module.exports.UIStrings = UIStrings;
8 changes: 8 additions & 0 deletions lighthouse-core/config/experimental-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
const config = {
extends: 'lighthouse:default',
audits: [
'unsized-images',
'full-page-screenshot',
],
passes: [{
Expand All @@ -23,6 +24,13 @@ const config = {
],
}],
categories: {
// @ts-ignore: `title` is required in CategoryJson. setting to the same value as the default
lemcardenas marked this conversation as resolved.
Show resolved Hide resolved
// config is awkward - easier to omit the property here. Will defer to default config.
'best-practices': {
auditRefs: [
{id: 'unsized-images', weight: 1, group: 'best-practices-ux'},
],
},
},
};

Expand Down
26 changes: 25 additions & 1 deletion lighthouse-core/gather/gatherers/image-elements.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const Gatherer = require('./gatherer.js');
const pageFunctions = require('../../lib/page-functions.js');
const Driver = require('../driver.js'); // eslint-disable-line no-unused-vars

/* global window, getElementsInDocument, Image */
/* global window, getElementsInDocument, Image, getNodePath, getNodeSelector, getNodeLabel, getOuterHTMLSnippet */


/** @param {Element} element */
Expand Down Expand Up @@ -51,6 +51,8 @@ function getHTMLImages(allElements) {
clientRect: getClientRect(element),
naturalWidth: element.naturalWidth,
naturalHeight: element.naturalHeight,
attributeWidth: element.getAttribute('width') || '',
attributeHeight: element.getAttribute('height') || '',
isCss: false,
// @ts-ignore: loading attribute not yet added to HTMLImageElement definition.
loading: element.loading,
Expand All @@ -64,6 +66,14 @@ function getHTMLImages(allElements) {
),
// https://html.spec.whatwg.org/multipage/images.html#pixel-density-descriptor
usesSrcSetDensityDescriptor: / \d+(\.\d+)?x/.test(element.srcset),
// @ts-ignore - getNodePath put into scope via stringification
devtoolsNodePath: getNodePath(element),
// @ts-ignore - put into scope via stringification
selector: getNodeSelector(element),
// @ts-ignore - put into scope via stringification
nodeLabel: getNodeLabel(element),
// @ts-ignore - put into scope via stringification
snippet: getOuterHTMLSnippet(element),
};
});
}
Expand Down Expand Up @@ -99,6 +109,8 @@ function getCSSImages(allElements) {
// CSS Images do not expose natural size, we'll determine the size later
naturalWidth: 0,
naturalHeight: 0,
attributeWidth: '',
attributeHeight: '',
isCss: true,
isPicture: false,
usesObjectFit: false,
Expand All @@ -107,6 +119,14 @@ function getCSSImages(allElements) {
),
usesSrcSetDensityDescriptor: false,
resourceSize: 0, // this will get overwritten below
// @ts-ignore - getNodePath put into scope via stringification
devtoolsNodePath: getNodePath(element),
// @ts-ignore - put into scope via stringification
selector: getNodeSelector(element),
// @ts-ignore - put into scope via stringification
nodeLabel: getNodeLabel(element),
// @ts-ignore - put into scope via stringification
snippet: getOuterHTMLSnippet(element),
});
}

Expand Down Expand Up @@ -192,6 +212,10 @@ class ImageElements extends Gatherer {

const expression = `(function() {
${pageFunctions.getElementsInDocumentString}; // define function on page
${pageFunctions.getNodePathString};
${pageFunctions.getNodeSelectorString};
${pageFunctions.getNodeLabelString};
${pageFunctions.getOuterHTMLSnippetString};
${getClientRect.toString()};
${getHTMLImages.toString()};
${getCSSImages.toString()};
Expand Down
2 changes: 2 additions & 0 deletions lighthouse-core/lib/i18n/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ const UIStrings = {
columnStartTime: 'Start Time',
/** Label for a column in a data table; entries will be the total number of milliseconds from the start time until the end time. */
columnDuration: 'Duration',
/** Label for a column in a data table; entries will be a representation of a DOM element that did not meet certain suggestions. */
columnFailingElem: 'Failing Elements',
/** Label for a row in a data table; entries will be the total number and byte size of all resources loaded by a web page. */
totalResourceType: 'Total',
/** Label for a row in a data table; entries will be the total number and byte size of all 'Document' resources loaded by a web page. */
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/ar-XB.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "‏‮Avoids‬‏ ‏‮requesting‬‏ ‏‮the‬‏ ‏‮notification‬‏ ‏‮permission‬‏ ‏‮on‬‏ ‏‮page‬‏ ‏‮load‬‏"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "‏‮Failing‬‏ ‏‮Elements‬‏"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "‏‮Preventing‬‏ ‏‮password‬‏ ‏‮pasting‬‏ ‏‮undermines‬‏ ‏‮good‬‏ ‏‮security‬‏ ‏‮policy‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "يتم تجنُّب طلب إذن الإشعار عند تحميل الصفحة"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "العناصر التي لا تسمح بلصق المحتوى"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "يؤدي منع لصق كلمة المرور إلى تقويض سياسة الأمان الجيدة. [مزيد من المعلومات](https://web.dev/password-inputs-can-be-pasted-into/)"
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/bg.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Избягва да иска разрешение за известяване при зареждането на страницата"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Елементи с грешки"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Забраната на поставянето на пароли неутрализира добра практика за сигурност. [Научете повече](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Evita sol·licitar el permís de notificació en carregar la pàgina"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Elements amb errors"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Impedir enganxar la contrasenya va en detriment d'una bona política de seguretat. [Obtén més informació](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Nežádá při načtení stránky o oprávnění zobrazovat oznámení"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Prvky, které neprošly"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Blokování vkládání hesel je v rozporu s dobrými bezpečnostními zásadami. [Další informace](https://web.dev/password-inputs-can-be-pasted-into/)"
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Undgår at anmode om tilladelse til notifikationer ved indlæsning af siden"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Elementer, der ikke bestod gennemgangen"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "En god sikkerhedspolitik undermineres ved at forhindre indsættelse af adgangskoder. [Få flere oplysninger](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Fordert während des Seitenaufbaus keine Benachrichtigungsberechtigung an"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Fehlerhafte Elemente"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Das Einfügen von Passwörtern sollte entsprechend guten Sicherheitsrichtlinien zulässig sein. [Weitere Informationen.](https://web.dev/password-inputs-can-be-pasted-into/)"
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/el.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Αποφυγή αιτήματος για άδεια ειδοποίησης κατά τη φόρτωση σελίδων"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Στοιχεία που απέτυχαν"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Η απαγόρευση της επικόλλησης κωδικών πρόσβασης υπονομεύει την ορθή πολιτική ασφάλειας. [Μάθετε περισσότερα](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/en-GB.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Avoids requesting the notification permission on page load"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Failing Elements"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Preventing password pasting undermines good security policy. [Learn more](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down
15 changes: 12 additions & 3 deletions lighthouse-core/lib/i18n/locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -695,9 +695,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "Avoids requesting the notification permission on page load"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "Failing Elements"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "Preventing password pasting undermines good security policy. [Learn more](https://web.dev/password-inputs-can-be-pasted-into/)."
},
Expand Down Expand Up @@ -1262,6 +1259,15 @@
"lighthouse-core/audits/timing-budget.js | title": {
"message": "Timing budget"
},
"lighthouse-core/audits/unsized-images.js | description": {
"message": "Always include explicit width and height on your image elements to reduce layout shifting and improve CLS. [Learn more](https://web.dev/optimize-cls/#images-without-dimensions)"
},
"lighthouse-core/audits/unsized-images.js | failureTitle": {
"message": "Image elements do not have explicit `width` and `height`"
},
"lighthouse-core/audits/unsized-images.js | title": {
"message": "Image elements have explicit `width` and `height`"
},
"lighthouse-core/audits/user-timings.js | columnType": {
"message": "Type"
},
Expand Down Expand Up @@ -1499,6 +1505,9 @@
"lighthouse-core/lib/i18n/i18n.js | columnElement": {
"message": "Element"
},
"lighthouse-core/lib/i18n/i18n.js | columnFailingElem": {
"message": "Failing Elements"
},
"lighthouse-core/lib/i18n/i18n.js | columnLocation": {
"message": "Location"
},
Expand Down
3 changes: 0 additions & 3 deletions lighthouse-core/lib/i18n/locales/en-XA.json
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@
"lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
"message": "[Åvöîðš ŕéqûéšţîñĝ ţĥé ñöţîƒîçåţîöñ þéŕmîššîöñ öñ þåĝé ļöåð one two three four five six seven eight nine ten eleven twelve]"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
"message": "[Fåîļîñĝ Éļéméñţš one two]"
},
"lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
"message": "[Þŕévéñţîñĝ þåššŵöŕð þåšţîñĝ ûñðéŕmîñéš ĝööð šéçûŕîţý þöļîçý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/password-inputs-can-be-pasted-into/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
},
Expand Down
Loading