diff --git a/cli/test/fixtures/dobetterweb/dbw_tester.html b/cli/test/fixtures/dobetterweb/dbw_tester.html index f9937e05b8..23e0f0c797 100644 --- a/cli/test/fixtures/dobetterweb/dbw_tester.html +++ b/cli/test/fixtures/dobetterweb/dbw_tester.html @@ -196,7 +196,7 @@ - + @@ -363,8 +363,8 @@ function noRelOpenLinksTest() { stampTemplate('noopener-links-tmpl', document.body); } -function passwordInputsCanBePastedIntoTest() { - stampTemplate('password-inputs-can-be-pasted-into', document.body); +function inputsCanBePastedIntoTest() { + stampTemplate('paste-preventing-inputs', document.body); } @@ -407,7 +407,7 @@ if (location.search === '') { noRelOpenLinksTest(); // oldCSSFlexboxTest(); deprecationsTest(); - passwordInputsCanBePastedIntoTest(); + inputsCanBePastedIntoTest(); isOnHttps(); noUnloadListenersTest(); } else { @@ -442,7 +442,7 @@ if (location.search === '') { deprecationsTest(); } if (params.has('passwordinputs')) { - passwordInputsCanBePastedIntoTest(); + inputsCanBePastedIntoTest(); } if (params.has('isonhttps')) { isOnHttps(); diff --git a/cli/test/smokehouse/test-definitions/dobetterweb.js b/cli/test/smokehouse/test-definitions/dobetterweb.js index becec32eb1..6b3f5fa549 100644 --- a/cli/test/smokehouse/test-definitions/dobetterweb.js +++ b/cli/test/smokehouse/test-definitions/dobetterweb.js @@ -341,7 +341,7 @@ const expectations = { ], }, }, - 'password-inputs-can-be-pasted-into': { + 'paste-preventing-inputs': { score: 0, details: { items: { diff --git a/cli/test/smokehouse/test-definitions/offline-online-only.js b/cli/test/smokehouse/test-definitions/offline-online-only.js index e715eb25f8..71ea75740c 100644 --- a/cli/test/smokehouse/test-definitions/offline-online-only.js +++ b/cli/test/smokehouse/test-definitions/offline-online-only.js @@ -50,7 +50,7 @@ const expectations = { 'render-blocking-resources': { score: 1, }, - 'password-inputs-can-be-pasted-into': { + 'paste-preventing-inputs': { score: 1, }, 'service-worker': { diff --git a/clients/test/lightrider/lightrider-entry-test.js b/clients/test/lightrider/lightrider-entry-test.js index 3859e14dc0..a8c8ac5090 100644 --- a/clients/test/lightrider/lightrider-entry-test.js +++ b/clients/test/lightrider/lightrider-entry-test.js @@ -33,8 +33,10 @@ describe('lightrider-entry', () => { const result = await runLighthouseInLR(mockConnection, url, {output}, {}); const parsedResult = JSON.parse(result); - assert.strictEqual(parsedResult.runtimeError.code, connectionError.code); - assert.ok(parsedResult.runtimeError.message.includes(connectionError.friendlyMessage)); + expect(parsedResult.runtimeError).toMatchObject({ + code: connectionError.code, + message: expect.stringContaining(connectionError.message), + }); }); it('returns an unknown-runtimeError LHR when lighthouse throws an unknown error', async () => { diff --git a/core/audits/dobetterweb/password-inputs-can-be-pasted-into.js b/core/audits/dobetterweb/paste-preventing-inputs.js similarity index 54% rename from core/audits/dobetterweb/password-inputs-can-be-pasted-into.js rename to core/audits/dobetterweb/paste-preventing-inputs.js index a418006c54..cf1b9a0908 100644 --- a/core/audits/dobetterweb/password-inputs-can-be-pasted-into.js +++ b/core/audits/dobetterweb/paste-preventing-inputs.js @@ -1,5 +1,5 @@ /** - * @license Copyright 2016 The Lighthouse Authors. All Rights Reserved. + * @license Copyright 2023 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. */ @@ -8,28 +8,29 @@ import {Audit} from '../audit.js'; import * as i18n from '../../lib/i18n/i18n.js'; const UIStrings = { - /** Title of a Lighthouse audit that provides detail on the ability to paste into password fields. This descriptive title is shown to users when the page allows pasting of content into password fields. */ - title: 'Allows users to paste into password fields', - /** Title of a Lighthouse audit that provides detail on the ability to paste into password fields. This descriptive title is shown to users when the page does not allow pasting of content into password fields. */ - failureTitle: 'Prevents users to paste into password fields', - /** 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. The last sentence starting with 'Learn' becomes link text to additional documentation. */ - description: 'Preventing password pasting undermines good security policy. ' + - '[Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/).', + /** Title of a Lighthouse audit that provides detail on the ability to paste into input fields. This descriptive title is shown to users when the page allows pasting of content into input fields. */ + title: 'Allows users to paste into input fields', + /** Title of a Lighthouse audit that provides detail on the ability to paste into input fields. This descriptive title is shown to users when the page does not allow pasting of content into input fields. */ + failureTitle: 'Prevents users from pasting into input fields', + /** Description of a Lighthouse audit that tells the user why they should allow pasting of content into input 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 input pasting is a UX anti-pattern, ' + + 'and undermines good security policy. ' + + '[Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/).', }; const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings); -class PasswordInputsCanBePastedIntoAudit extends Audit { +class PastePreventingInputsAudit extends Audit { /** * @return {LH.Audit.Meta} */ static get meta() { return { - id: 'password-inputs-can-be-pasted-into', + id: 'paste-preventing-inputs', title: str_(UIStrings.title), failureTitle: str_(UIStrings.failureTitle), description: str_(UIStrings.description), - requiredArtifacts: ['PasswordInputsWithPreventedPaste'], + requiredArtifacts: ['Inputs'], }; } @@ -38,14 +39,15 @@ class PasswordInputsCanBePastedIntoAudit extends Audit { * @return {LH.Audit.Product} */ static audit(artifacts) { - const passwordInputsWithPreventedPaste = artifacts.PasswordInputsWithPreventedPaste; + const inputsWithPreventsPaste = artifacts.Inputs.inputs.filter(input => input.preventsPaste); /** @type {LH.Audit.Details.Table['items']} */ const items = []; - passwordInputsWithPreventedPaste.forEach(input => { + inputsWithPreventsPaste.forEach(input => { items.push({ node: Audit.makeNodeItem(input.node), + type: input.type, }); }); @@ -55,11 +57,11 @@ class PasswordInputsCanBePastedIntoAudit extends Audit { ]; return { - score: Number(passwordInputsWithPreventedPaste.length === 0), + score: Number(inputsWithPreventsPaste.length === 0), details: Audit.makeTableDetails(headings, items), }; } } -export default PasswordInputsCanBePastedIntoAudit; +export default PastePreventingInputsAudit; export {UIStrings}; diff --git a/core/config/default-config.js b/core/config/default-config.js index 1e90b22201..709632bb41 100644 --- a/core/config/default-config.js +++ b/core/config/default-config.js @@ -150,7 +150,6 @@ const artifacts = { MetaElements: '', NetworkUserAgent: '', OptimizedImages: '', - PasswordInputsWithPreventedPaste: '', ResponseCompression: '', RobotsTxt: '', ServiceWorker: '', @@ -200,7 +199,6 @@ const defaultConfig = { {id: artifacts.MetaElements, gatherer: 'meta-elements'}, {id: artifacts.NetworkUserAgent, gatherer: 'network-user-agent'}, {id: artifacts.OptimizedImages, gatherer: 'dobetterweb/optimized-images'}, - {id: artifacts.PasswordInputsWithPreventedPaste, gatherer: 'dobetterweb/password-inputs-with-prevented-paste'}, {id: artifacts.ResponseCompression, gatherer: 'dobetterweb/response-compression'}, {id: artifacts.RobotsTxt, gatherer: 'seo/robots-txt'}, {id: artifacts.ServiceWorker, gatherer: 'service-worker'}, @@ -361,7 +359,7 @@ const defaultConfig = { 'dobetterweb/no-document-write', 'dobetterweb/js-libraries', 'dobetterweb/notification-on-start', - 'dobetterweb/password-inputs-can-be-pasted-into', + 'dobetterweb/paste-preventing-inputs', 'dobetterweb/uses-http2', 'dobetterweb/uses-passive-event-listeners', 'seo/meta-description', @@ -614,7 +612,7 @@ const defaultConfig = { {id: 'notification-on-start', weight: 1, group: 'best-practices-trust-safety'}, {id: 'csp-xss', weight: 0, group: 'best-practices-trust-safety'}, // User Experience - {id: 'password-inputs-can-be-pasted-into', weight: 1, group: 'best-practices-ux'}, + {id: 'paste-preventing-inputs', weight: 1, group: 'best-practices-ux'}, {id: 'image-aspect-ratio', weight: 1, group: 'best-practices-ux'}, {id: 'image-size-responsive', weight: 1, group: 'best-practices-ux'}, {id: 'preload-fonts', weight: 1, group: 'best-practices-ux'}, diff --git a/core/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste.js b/core/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste.js deleted file mode 100644 index 785f25ac5e..0000000000 --- a/core/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license Copyright 2017 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. - */ - -/* global document ClipboardEvent getNodeDetails */ - -import FRGatherer from '../../base-gatherer.js'; -import {pageFunctions} from '../../../lib/page-functions.js'; - -/** - * @return {LH.Artifacts['PasswordInputsWithPreventedPaste']} - */ -/* c8 ignore start */ -function findPasswordInputsWithPreventedPaste() { - return Array.from(document.querySelectorAll('input[type="password"]')) - .filter(passwordInput => - !passwordInput.dispatchEvent( - new ClipboardEvent('paste', {cancelable: true}) - ) - ) - .map(passwordInput => ({ - // @ts-expect-error - getNodeDetails put into scope via stringification - node: getNodeDetails(passwordInput), - })); -} -/* c8 ignore stop */ - -class PasswordInputsWithPreventedPaste extends FRGatherer { - /** @type {LH.Gatherer.GathererMeta} */ - meta = { - supportedModes: ['snapshot', 'navigation'], - }; - - /** - * @param {LH.Gatherer.FRTransitionalContext} passContext - * @return {Promise} - */ - getArtifact(passContext) { - return passContext.driver.executionContext.evaluate(findPasswordInputsWithPreventedPaste, { - args: [], - deps: [pageFunctions.getNodeDetails], - }); - } -} - - -export default PasswordInputsWithPreventedPaste; diff --git a/core/gather/gatherers/inputs.js b/core/gather/gatherers/inputs.js index 2f004cd04b..21fb122ba1 100644 --- a/core/gather/gatherers/inputs.js +++ b/core/gather/gatherers/inputs.js @@ -61,6 +61,11 @@ function collectElements() { return [...labelElToArtifact.keys()].indexOf(labelEl); }); + let preventsPaste; + if (!inputEl.readOnly) { + preventsPaste = !inputEl.dispatchEvent(new ClipboardEvent('paste', {cancelable: true})); + } + inputArtifacts.push({ parentFormIndex, labelIndices, @@ -74,6 +79,7 @@ function collectElements() { // Requires `--enable-features=AutofillShowTypePredictions`. prediction: inputEl.getAttribute('autofill-prediction'), }, + preventsPaste, // @ts-expect-error - getNodeDetails put into scope via stringification node: getNodeDetails(inputEl), }); diff --git a/core/legacy/config/legacy-default-config.js b/core/legacy/config/legacy-default-config.js index 06321c7075..dc7ade944a 100644 --- a/core/legacy/config/legacy-default-config.js +++ b/core/legacy/config/legacy-default-config.js @@ -59,7 +59,6 @@ legacyDefaultConfig.passes = [{ 'dobetterweb/doctype', 'dobetterweb/domstats', 'dobetterweb/optimized-images', - 'dobetterweb/password-inputs-with-prevented-paste', 'dobetterweb/response-compression', 'dobetterweb/tags-blocking-first-paint', 'seo/font-size', diff --git a/core/test/audits/dobetterweb/password-inputs-can-be-pasted-into-test.js b/core/test/audits/dobetterweb/password-inputs-can-be-pasted-into-test.js deleted file mode 100644 index 5c9cc30d5d..0000000000 --- a/core/test/audits/dobetterweb/password-inputs-can-be-pasted-into-test.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license Copyright 2017 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. - */ - -import assert from 'assert/strict'; - -import PasswordInputsCanBePastedIntoAudit from - '../../../audits/dobetterweb/password-inputs-can-be-pasted-into.js'; - -describe('Password inputs can be pasted into', () => { - it('passes when there are no password inputs preventing paste', () => { - const auditResult = PasswordInputsCanBePastedIntoAudit.audit({ - PasswordInputsWithPreventedPaste: [], - }); - assert.equal(auditResult.score, 1); - assert.equal(auditResult.details.items.length, 0); - }); - - it('fails when there are password inputs preventing paste', () => { - const auditResult = PasswordInputsCanBePastedIntoAudit.audit({ - PasswordInputsWithPreventedPaste: [{node: {snippet: ''}}, {node: {snippet: ''}}], - }); - assert.equal(auditResult.score, 0); - assert.equal(auditResult.details.items.length, 2); - }); -}); diff --git a/core/test/audits/dobetterweb/paste-preventing-inputs-test.js b/core/test/audits/dobetterweb/paste-preventing-inputs-test.js new file mode 100644 index 0000000000..6864bf753c --- /dev/null +++ b/core/test/audits/dobetterweb/paste-preventing-inputs-test.js @@ -0,0 +1,36 @@ +/** + * @license Copyright 2023 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. + */ + +import {strict as assert} from 'assert'; + +import PastePreventingInputsAudit from '../../../audits/dobetterweb/paste-preventing-inputs.js'; + +describe('Inputs can be pasted into', () => { + it('passes when there are no inputs preventing paste', () => { + const auditResult = PastePreventingInputsAudit.audit({ + Inputs: { + inputs: [], + }, + }); + assert.equal(auditResult.score, 1); + assert.equal(auditResult.details.items.length, 0); + }); + + it('fails when there are inputs preventing paste', () => { + const auditResult = PastePreventingInputsAudit.audit({ + Inputs: { + inputs: [ + {node: {snippet: 'bad'}, preventsPaste: true}, + {node: {snippet: ''}, preventsPaste: false}, + {node: {snippet: ''}}, + ], + }, + }); + assert.equal(auditResult.score, 0); + assert.equal(auditResult.details.items.length, 1); + assert.equal(auditResult.details.items[0].node.snippet, 'bad'); + }); +}); diff --git a/core/test/fixtures/fraggle-rock/artifacts/step0/artifacts.json b/core/test/fixtures/fraggle-rock/artifacts/step0/artifacts.json index bac68232cb..28f60d26c8 100644 --- a/core/test/fixtures/fraggle-rock/artifacts/step0/artifacts.json +++ b/core/test/fixtures/fraggle-rock/artifacts/step0/artifacts.json @@ -6,140 +6,160 @@ "entryType": "measure", "startTime": 0, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveArtifactsToDefns", "entryType": "measure", "startTime": 1, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveNavigationsToDefns", "entryType": "measure", "startTime": 2, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:runner:gather", "entryType": "measure", "startTime": 3, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:driver:connect", "entryType": "measure", "startTime": 4, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getBenchmarkIndex", "entryType": "measure", "startTime": 5, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getVersion", "entryType": "measure", "startTime": 6, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:prepare:navigationMode", "entryType": "measure", "startTime": 7, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:prepare:navigation", "entryType": "measure", "startTime": 8, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:storage:clearDataForOrigin", "entryType": "measure", "startTime": 9, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:storage:clearBrowserCaches", "entryType": "measure", "startTime": 10, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:prepareThrottlingAndNetwork", "entryType": "measure", "startTime": 11, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:driver:navigate", "entryType": "measure", "startTime": 12, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:NetworkRecords", "entryType": "measure", "startTime": 13, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getInstallabilityErrors", "entryType": "measure", "startTime": 14, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:MainResource", "entryType": "measure", "startTime": 15, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:collectStacks", "entryType": "measure", "startTime": 16, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:ProcessedTrace", "entryType": "measure", "startTime": 17, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:ProcessedNavigation", "entryType": "measure", "startTime": 18, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:Responsiveness", "entryType": "measure", "startTime": 19, "duration": 1, - "detail": null + "detail": null, + "gather": true } ], "LighthouseRunWarnings": [], @@ -20317,5 +20337,61 @@ } } }, - "BFCacheFailures": [] + "BFCacheFailures": [], + "Inputs": { + "inputs": [ + { + "parentFormIndex": 0, + "labelIndices": [], + "id": "", + "name": "q", + "type": "text", + "placeholder": "That's what she said", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-15-INPUT", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,5,FORM,1,INPUT", + "selector": "div#__next > div.flex > form.flex > input.font-daniel", + "boundingRect": { + "top": 392, + "bottom": 450, + "left": 20, + "right": 340, + "width": 320, + "height": 58 + }, + "snippet": "", + "nodeLabel": "div#__next > div.flex > form.flex > input.font-daniel" + } + } + ], + "forms": [ + { + "id": "", + "name": "", + "autocomplete": "on", + "node": { + "lhId": "1-14-FORM", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,5,FORM", + "selector": "body > div#__next > div.flex > form.flex", + "boundingRect": { + "top": 352, + "bottom": 526, + "left": 20, + "right": 340, + "width": 320, + "height": 174 + }, + "snippet": "", + "nodeLabel": "search any line from The Office\nSEARCHRANDOM" + } + } + ], + "labels": [] + } } diff --git a/core/test/fixtures/fraggle-rock/artifacts/step1/artifacts.json b/core/test/fixtures/fraggle-rock/artifacts/step1/artifacts.json index faa7c32156..27c19de618 100644 --- a/core/test/fixtures/fraggle-rock/artifacts/step1/artifacts.json +++ b/core/test/fixtures/fraggle-rock/artifacts/step1/artifacts.json @@ -6,91 +6,104 @@ "entryType": "measure", "startTime": 0, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveArtifactsToDefns", "entryType": "measure", "startTime": 1, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveNavigationsToDefns", "entryType": "measure", "startTime": 2, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:driver:connect", "entryType": "measure", "startTime": 3, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getBenchmarkIndex", "entryType": "measure", "startTime": 4, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getVersion", "entryType": "measure", "startTime": 5, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:prepare:timespanMode", "entryType": "measure", "startTime": 6, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:prepareThrottlingAndNetwork", "entryType": "measure", "startTime": 7, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:runner:gather", "entryType": "measure", "startTime": 8, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:NetworkRecords", "entryType": "measure", "startTime": 9, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:ProcessedTrace", "entryType": "measure", "startTime": 10, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:ProcessedNavigation", "entryType": "measure", "startTime": 11, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:Responsiveness", "entryType": "measure", "startTime": 12, "duration": 1, - "detail": null + "detail": null, + "gather": true } ], "LighthouseRunWarnings": [], diff --git a/core/test/fixtures/fraggle-rock/artifacts/step2/artifacts.json b/core/test/fixtures/fraggle-rock/artifacts/step2/artifacts.json index d84a0c78e9..3a46b40b31 100644 --- a/core/test/fixtures/fraggle-rock/artifacts/step2/artifacts.json +++ b/core/test/fixtures/fraggle-rock/artifacts/step2/artifacts.json @@ -6,56 +6,64 @@ "entryType": "measure", "startTime": 0, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveArtifactsToDefns", "entryType": "measure", "startTime": 1, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveNavigationsToDefns", "entryType": "measure", "startTime": 2, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:driver:connect", "entryType": "measure", "startTime": 3, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:runner:gather", "entryType": "measure", "startTime": 4, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getBenchmarkIndex", "entryType": "measure", "startTime": 5, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getVersion", "entryType": "measure", "startTime": 6, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:collectStacks", "entryType": "measure", "startTime": 7, "duration": 1, - "detail": null + "detail": null, + "gather": true } ], "LighthouseRunWarnings": [], @@ -5538,5 +5546,61 @@ "height": 40 } } + }, + "Inputs": { + "inputs": [ + { + "parentFormIndex": 0, + "labelIndices": [], + "id": "", + "name": "", + "type": "text", + "placeholder": "", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-54-INPUT", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,1,FORM,0,INPUT", + "selector": "div.flex > main#main-content > form.flex > input.p-2", + "boundingRect": { + "top": 176, + "bottom": 218, + "left": 16, + "right": 282, + "width": 266, + "height": 42 + }, + "snippet": "", + "nodeLabel": "search text" + } + } + ], + "forms": [ + { + "id": "", + "name": "", + "autocomplete": "on", + "node": { + "lhId": "1-53-FORM", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,1,FORM", + "selector": "div#__next > div.flex > main#main-content > form.flex", + "boundingRect": { + "top": 176, + "bottom": 218, + "left": 16, + "right": 329, + "width": 313, + "height": 42 + }, + "snippet": "", + "nodeLabel": "Go" + } + } + ], + "labels": [] } } diff --git a/core/test/fixtures/fraggle-rock/artifacts/step3/artifacts.json b/core/test/fixtures/fraggle-rock/artifacts/step3/artifacts.json index e050b8e1e1..bb13b7c8b3 100644 --- a/core/test/fixtures/fraggle-rock/artifacts/step3/artifacts.json +++ b/core/test/fixtures/fraggle-rock/artifacts/step3/artifacts.json @@ -6,126 +6,144 @@ "entryType": "measure", "startTime": 0, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveArtifactsToDefns", "entryType": "measure", "startTime": 1, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:config:resolveNavigationsToDefns", "entryType": "measure", "startTime": 2, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:runner:gather", "entryType": "measure", "startTime": 3, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:driver:connect", "entryType": "measure", "startTime": 4, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getBenchmarkIndex", "entryType": "measure", "startTime": 5, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getVersion", "entryType": "measure", "startTime": 6, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:prepare:navigationMode", "entryType": "measure", "startTime": 7, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:prepare:navigation", "entryType": "measure", "startTime": 8, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:prepareThrottlingAndNetwork", "entryType": "measure", "startTime": 9, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:driver:navigate", "entryType": "measure", "startTime": 10, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:NetworkRecords", "entryType": "measure", "startTime": 11, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:getInstallabilityErrors", "entryType": "measure", "startTime": 12, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:MainResource", "entryType": "measure", "startTime": 13, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:gather:collectStacks", "entryType": "measure", "startTime": 14, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:ProcessedTrace", "entryType": "measure", "startTime": 15, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:ProcessedNavigation", "entryType": "measure", "startTime": 16, "duration": 1, - "detail": null + "detail": null, + "gather": true }, { "name": "lh:computed:Responsiveness", "entryType": "measure", "startTime": 17, "duration": 1, - "detail": null + "detail": null, + "gather": true } ], "LighthouseRunWarnings": [], @@ -20046,5 +20064,258 @@ } } }, - "BFCacheFailures": [] + "BFCacheFailures": [], + "Inputs": { + "inputs": [ + { + "parentFormIndex": 0, + "labelIndices": [], + "id": "", + "name": "type", + "type": "hidden", + "placeholder": "", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-20-INPUT", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,0,INPUT", + "selector": "main#main-content > div > form.flex > input", + "boundingRect": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0, + "width": 0, + "height": 0 + }, + "snippet": "", + "nodeLabel": "main#main-content > div > form.flex > input" + } + }, + { + "parentFormIndex": 0, + "labelIndices": [ + 0 + ], + "id": "", + "name": "email", + "type": "email", + "placeholder": "", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-21-INPUT", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,1,LABEL,1,INPUT", + "selector": "div > form.flex > label.mt-4 > input.rounded-md", + "boundingRect": { + "top": 428, + "bottom": 470, + "left": 16, + "right": 205, + "width": 189, + "height": 42 + }, + "snippet": "", + "nodeLabel": "div > form.flex > label.mt-4 > input.rounded-md" + } + }, + { + "parentFormIndex": 0, + "labelIndices": [ + 1 + ], + "id": "", + "name": "episode", + "type": "text", + "placeholder": "", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-22-INPUT", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,2,LABEL,1,INPUT", + "selector": "div > form.flex > label.mt-4 > input.rounded-md", + "boundingRect": { + "top": 510, + "bottom": 552, + "left": 16, + "right": 205, + "width": 189, + "height": 42 + }, + "snippet": "", + "nodeLabel": "div > form.flex > label.mt-4 > input.rounded-md" + } + }, + { + "parentFormIndex": 0, + "labelIndices": [ + 2 + ], + "id": "", + "name": "url", + "type": "url", + "placeholder": "", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-23-INPUT", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,3,LABEL,1,INPUT", + "selector": "div > form.flex > label.mt-4 > input.rounded-md", + "boundingRect": { + "top": 592, + "bottom": 634, + "left": 16, + "right": 344, + "width": 328, + "height": 42 + }, + "snippet": "", + "nodeLabel": "div > form.flex > label.mt-4 > input.rounded-md" + } + }, + { + "parentFormIndex": 0, + "labelIndices": [ + 3 + ], + "id": "", + "name": "message", + "type": "textarea", + "placeholder": "", + "autocomplete": { + "property": "", + "attribute": null, + "prediction": null + }, + "preventsPaste": false, + "node": { + "lhId": "1-24-TEXTAREA", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,4,LABEL,1,TEXTAREA", + "selector": "div > form.flex > label.mt-4 > textarea.w-full", + "boundingRect": { + "top": 674, + "bottom": 740, + "left": 16, + "right": 344, + "width": 328, + "height": 66 + }, + "snippet": "", + "nodeLabel": "div > form.flex > label.mt-4 > textarea.w-full" + } + } + ], + "forms": [ + { + "id": "", + "name": "", + "autocomplete": "on", + "node": { + "lhId": "1-15-FORM", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM", + "selector": "div.flex > main#main-content > div > form.flex", + "boundingRect": { + "top": 388, + "bottom": 787, + "left": 16, + "right": 344, + "width": 328, + "height": 399 + }, + "snippet": "", + "nodeLabel": "Email\nRelevant Episode\nRelevant URL\nExplanation*\nSubmit" + } + } + ], + "labels": [ + { + "for": "", + "node": { + "lhId": "1-16-LABEL", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,1,LABEL", + "selector": "main#main-content > div > form.flex > label.mt-4", + "boundingRect": { + "top": 404, + "bottom": 470, + "left": 16, + "right": 344, + "width": 328, + "height": 66 + }, + "snippet": "", + "nodeLabel": "Email" + } + }, + { + "for": "", + "node": { + "lhId": "1-17-LABEL", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,2,LABEL", + "selector": "main#main-content > div > form.flex > label.mt-4", + "boundingRect": { + "top": 486, + "bottom": 552, + "left": 16, + "right": 344, + "width": 328, + "height": 66 + }, + "snippet": "", + "nodeLabel": "Relevant Episode" + } + }, + { + "for": "", + "node": { + "lhId": "1-18-LABEL", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,3,LABEL", + "selector": "main#main-content > div > form.flex > label.mt-4", + "boundingRect": { + "top": 568, + "bottom": 634, + "left": 16, + "right": 344, + "width": 328, + "height": 66 + }, + "snippet": "", + "nodeLabel": "Relevant URL" + } + }, + { + "for": "", + "node": { + "lhId": "1-19-LABEL", + "devtoolsNodePath": "1,HTML,1,BODY,0,DIV,0,DIV,3,MAIN,3,DIV,0,FORM,4,LABEL", + "selector": "main#main-content > div > form.flex > label.mt-4", + "boundingRect": { + "top": 650, + "bottom": 747, + "left": 16, + "right": 344, + "width": 328, + "height": 97 + }, + "snippet": "", + "nodeLabel": "Explanation*" + } + } + ] + } } diff --git a/core/test/fixtures/fraggle-rock/reports/sample-flow-result.json b/core/test/fixtures/fraggle-rock/reports/sample-flow-result.json index d088e133f1..a610da7c98 100644 --- a/core/test/fixtures/fraggle-rock/reports/sample-flow-result.json +++ b/core/test/fixtures/fraggle-rock/reports/sample-flow-result.json @@ -3037,10 +3037,10 @@ "items": [] } }, - "password-inputs-can-be-pasted-into": { - "id": "password-inputs-can-be-pasted-into", - "title": "Allows users to paste into password fields", - "description": "Preventing password pasting undermines good security policy. [Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/).", + "paste-preventing-inputs": { + "id": "paste-preventing-inputs", + "title": "Allows users to paste into input fields", + "description": "Preventing input pasting is a UX anti-pattern, and undermines good security policy. [Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/).", "score": 1, "scoreDisplayMode": "binary", "details": { @@ -3903,7 +3903,7 @@ "group": "best-practices-trust-safety" }, { - "id": "password-inputs-can-be-pasted-into", + "id": "paste-preventing-inputs", "weight": 1, "group": "best-practices-ux" }, @@ -5979,7 +5979,7 @@ }, { "startTime": 212, - "name": "lh:audit:password-inputs-can-be-pasted-into", + "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, @@ -7140,11 +7140,11 @@ "core/audits/dobetterweb/notification-on-start.js | description": [ "audits[notification-on-start].description" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": [ - "audits[password-inputs-can-be-pasted-into].title" + "core/audits/dobetterweb/paste-preventing-inputs.js | title": [ + "audits[paste-preventing-inputs].title" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": [ - "audits[password-inputs-can-be-pasted-into].description" + "core/audits/dobetterweb/paste-preventing-inputs.js | description": [ + "audits[paste-preventing-inputs].description" ], "core/audits/dobetterweb/uses-passive-event-listeners.js | title": [ "audits[uses-passive-event-listeners].title" @@ -13157,10 +13157,10 @@ } } }, - "password-inputs-can-be-pasted-into": { - "id": "password-inputs-can-be-pasted-into", - "title": "Allows users to paste into password fields", - "description": "Preventing password pasting undermines good security policy. [Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/).", + "paste-preventing-inputs": { + "id": "paste-preventing-inputs", + "title": "Allows users to paste into input fields", + "description": "Preventing input pasting is a UX anti-pattern, and undermines good security policy. [Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/).", "score": 1, "scoreDisplayMode": "binary", "details": { @@ -13712,7 +13712,7 @@ ], "auditRefs": [ { - "id": "password-inputs-can-be-pasted-into", + "id": "paste-preventing-inputs", "weight": 1, "group": "best-practices-ux" }, @@ -15050,7 +15050,7 @@ }, { "startTime": 76, - "name": "lh:audit:password-inputs-can-be-pasted-into", + "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, @@ -15536,11 +15536,11 @@ "core/audits/dobetterweb/js-libraries.js | columnVersion": [ "audits[js-libraries].details.headings[1].label" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": [ - "audits[password-inputs-can-be-pasted-into].title" + "core/audits/dobetterweb/paste-preventing-inputs.js | title": [ + "audits[paste-preventing-inputs].title" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": [ - "audits[password-inputs-can-be-pasted-into].description" + "core/audits/dobetterweb/paste-preventing-inputs.js | description": [ + "audits[paste-preventing-inputs].description" ], "core/audits/seo/meta-description.js | title": [ "audits[meta-description].title" @@ -18825,10 +18825,10 @@ "items": [] } }, - "password-inputs-can-be-pasted-into": { - "id": "password-inputs-can-be-pasted-into", - "title": "Allows users to paste into password fields", - "description": "Preventing password pasting undermines good security policy. [Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/).", + "paste-preventing-inputs": { + "id": "paste-preventing-inputs", + "title": "Allows users to paste into input fields", + "description": "Preventing input pasting is a UX anti-pattern, and undermines good security policy. [Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/).", "score": 1, "scoreDisplayMode": "binary", "details": { @@ -19748,7 +19748,7 @@ "group": "best-practices-trust-safety" }, { - "id": "password-inputs-can-be-pasted-into", + "id": "paste-preventing-inputs", "weight": 1, "group": "best-practices-ux" }, @@ -21798,7 +21798,7 @@ }, { "startTime": 209, - "name": "lh:audit:password-inputs-can-be-pasted-into", + "name": "lh:audit:paste-preventing-inputs", "duration": 1, "entryType": "measure" }, @@ -22966,11 +22966,11 @@ "core/audits/dobetterweb/notification-on-start.js | description": [ "audits[notification-on-start].description" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": [ - "audits[password-inputs-can-be-pasted-into].title" + "core/audits/dobetterweb/paste-preventing-inputs.js | title": [ + "audits[paste-preventing-inputs].title" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": [ - "audits[password-inputs-can-be-pasted-into].description" + "core/audits/dobetterweb/paste-preventing-inputs.js | description": [ + "audits[paste-preventing-inputs].description" ], "core/audits/dobetterweb/uses-passive-event-listeners.js | title": [ "audits[uses-passive-event-listeners].title" diff --git a/core/test/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste-test.js b/core/test/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste-test.js deleted file mode 100644 index 16b8a9662b..0000000000 --- a/core/test/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste-test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * @license Copyright 2017 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. - */ - -import assert from 'assert/strict'; - -import PasswordInputsWithPreventedPasteGatherer from - '../../../../gather/gatherers/dobetterweb/password-inputs-with-prevented-paste.js'; - -let gatherer; - -describe('PasswordInputsWithPreventedPaste gatherer', () => { - beforeEach(() => { - gatherer = new PasswordInputsWithPreventedPasteGatherer(); - }); - - it('returns an artifact', () => { - return gatherer - .afterPass({ - driver: { - executionContext: { - async evaluate() { - return [ - { - node: { - snippet: '', - }, - }, - ]; - }, - }, - }, - }) - .then(artifact => { - assert.ok(typeof artifact === 'object'); - assert.ok(artifact[0].node.snippet.length > 0); - }); - }); -}); diff --git a/core/test/results/artifacts/artifacts.json b/core/test/results/artifacts/artifacts.json index 4dfbcb401b..247b443147 100644 --- a/core/test/results/artifacts/artifacts.json +++ b/core/test/results/artifacts/artifacts.json @@ -10541,7 +10541,7 @@ } ], "IFrameElements": [], - "MainDocumentContent": "\n\n\n\n\n\nDoBetterWeb Mega Tester... Of Death\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\nShifter\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Do better web tester page\n Hi there!\n\n \n \n Facebook\n \n \n \n\n\ntouchmove section\n\n\n \n external link\n \n external link\n \n external link\n \n external link that uses rel noopener and another unrelated rel attribute\n \n external link that uses rel noreferrer and another unrelated rel attribute\n \n external link that uses rel noopener\n \n external link that uses rel noreferrer\n \n external link that uses rel noopener and noreferrer\n \n internal link is ok\n \n \n \n \n\n\n\n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nDo something\nDo something else\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nhi\n\n\n\n", + "MainDocumentContent": "\n\n\n\n\n\nDoBetterWeb Mega Tester... Of Death\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\nShifter\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Do better web tester page\n Hi there!\n\n \n \n Facebook\n \n \n \n\n\ntouchmove section\n\n\n \n external link\n \n external link\n \n external link\n \n external link that uses rel noopener and another unrelated rel attribute\n \n external link that uses rel noreferrer and another unrelated rel attribute\n \n external link that uses rel noopener\n \n external link that uses rel noreferrer\n \n external link that uses rel noopener and noreferrer\n \n internal link is ok\n \n \n \n \n\n\n\n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nDo something\nDo something else\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nhi\n\n\n\n", "GatherContext": { "gatherMode": "navigation" }, @@ -10656,42 +10656,6 @@ "resourceSize": 24620 } ], - "PasswordInputsWithPreventedPaste": [ - { - "node": { - "lhId": "page-9-INPUT", - "devtoolsNodePath": "3,HTML,1,BODY,61,INPUT", - "selector": "body > input", - "boundingRect": { - "top": 1274, - "bottom": 1295, - "left": 192, - "right": 345, - "width": 153, - "height": 21 - }, - "snippet": "", - "nodeLabel": "body > input" - } - }, - { - "node": { - "lhId": "page-10-INPUT", - "devtoolsNodePath": "3,HTML,1,BODY,65,INPUT", - "selector": "body > input", - "boundingRect": { - "top": 1296, - "bottom": 1317, - "left": 165, - "right": 318, - "width": 153, - "height": 21 - }, - "snippet": "", - "nodeLabel": "body > input" - } - } - ], "ResponseCompression": [ { "requestId": "6913DB840A4B952A23AAEB21C42F130A", @@ -12361,8 +12325,9 @@ "attribute": null, "prediction": null }, + "preventsPaste": true, "node": { - "lhId": "5-41-INPUT", + "lhId": "1-10-INPUT", "devtoolsNodePath": "2,HTML,1,BODY,61,INPUT", "selector": "body > input", "boundingRect": { @@ -12388,8 +12353,9 @@ "attribute": null, "prediction": null }, + "preventsPaste": false, "node": { - "lhId": "5-42-INPUT", + "lhId": "1-11-INPUT", "devtoolsNodePath": "2,HTML,1,BODY,63,INPUT", "selector": "body > input", "boundingRect": { @@ -12415,8 +12381,9 @@ "attribute": null, "prediction": null }, + "preventsPaste": true, "node": { - "lhId": "5-43-INPUT", + "lhId": "1-12-INPUT", "devtoolsNodePath": "2,HTML,1,BODY,65,INPUT", "selector": "body > input", "boundingRect": { @@ -12722,7 +12689,7 @@ "length": 5060, "scriptLanguage": "JavaScript", "embedderName": "http://localhost:10200/dobetterweb/dbw_tester.html", - "content": "\nfunction stampTemplate(id, location) {\n const template = document.querySelector('#' + id);\n location.appendChild(template.content.cloneNode(true));\n}\n\nfunction dateNowTest() {\n function helloDate() {\n // FAIL - Date.now() usage in a function.\n return Date.now();\n }\n helloDate();\n const d = Date.now(); // FAIL\n eval('Date.now()'); // FAIL\n new Function('Date.now()')() // FAIL\n}\n\nfunction consoleTimeTest() {\n // FAIL\n console.time('arg1');\n for (let i = 0; i < 2; i++) {\n // FAIL\n console.time('arg2');\n }\n console.timeEnd('arg1');\n console.timeEnd('arg2');\n\n eval(\"console.time('arg3')\"); // FAIL\n}\n\nfunction documentWriteTest() {\n document.write('Hi'); // FAIL\n document.write('There'); // FAIL\n document.write('2.0!'); // FAIL\n}\n\nfunction passiveEventsListenerTest() {\n // FAIL or PASS - field trial for document level defaulting to passive M71+\n window.addEventListener('wheel', function(e) {\n console.log('wheel');\n });\n\n // PASS - document level defaults to passive M56+\n window.addEventListener('touchstart', function(e) {\n console.log('touchstart');\n });\n\n // PASS - passive:false doesn't get a warning now. crbug.com/770208\n window.addEventListener('mousewheel', function(e) {\n console.log('mousewheel');\n }, {passive: false});\n\n // PASS - document level defaults to passive M56+\n document.addEventListener('touchstart', function(e) {\n console.log('touchstart document');\n });\n\n // PASS - document level defaults to passive M56+\n document.body.addEventListener('touchmove', function(e) {\n console.log('touchmove');\n });\n\n // FAIL\n const el = document.querySelector('#touchmove-section');\n el.addEventListener('touchmove', function(e) {\n console.log('touchmove');\n });\n\n // PASS - calls preventDefault() but isnt passive;\n document.addEventListener('touchstart', function(e) {\n\n e.preventDefault(); // intentionally surrounded by whitespace.\n\n console.log('touchstart - preventDefault called');\n });\n\n // PASS\n document.body.addEventListener('touchstart', function(e) {\n console.log('touchstart');\n }, {passive: true});\n\n // PASS\n window.addEventListener('touchstart', function(e) {\n console.log('touchstart passive');\n }, {passive: true});\n\n // PASS - another event on window that isn't wheel/touch\n window.addEventListener('scroll', function(e) {\n console.log('scroll');\n });\n}\n\nfunction geolocationOnStartTest() {\n navigator.geolocation.getCurrentPosition(function(position) {\n // noop\n });\n\n const watchID = navigator.geolocation.watchPosition(function(position) {\n navigator.geolocation.clearWatch(watchID);\n });\n}\n\nfunction notificationOnStartTest() {\n Notification.requestPermission().then(function () {\n // noop\n });\n}\n\nfunction oldCSSFlexboxTest() {\n stampTemplate('old-flexbox-tmpl', document.body);\n}\n\nfunction linksBlockingFirstPaintTest() {\n stampTemplate('links-blocking-first-paint-tmpl', document.head);\n}\n\nfunction noRelOpenLinksTest() {\n stampTemplate('noopener-links-tmpl', document.body);\n}\n\nfunction passwordInputsCanBePastedIntoTest() {\n stampTemplate('password-inputs-can-be-pasted-into', document.body);\n}\n\n\nfunction deprecationsTest() {\n // TODO: some deprecated API messages are not currently being logged correctly.\n // See: https://crbug.com/680832\n\n // FAIL\n const xhr = new XMLHttpRequest();\n xhr.open('GET', 'dbw_tester.html', false);\n xhr.send();\n\n // One more failure in dbw_tester.js\n}\n\nfunction isOnHttps() {\n // Check blob URL.\n const blob = new Blob(['fake'])\n const img = document.createElement('img');\n img.src = URL.createObjectURL(blob);\n document.body.appendChild(img); // PASS\n}\n\nfunction noUnloadListenersTest() {\n window.addEventListener('unload', () => {\n console.log('unload on unload');\n });\n}\n\n// Figure out which tests to fun.\nconst params = new URLSearchParams(location.search);\nif (location.search === '') {\n documentWriteTest();\n dateNowTest();\n consoleTimeTest();\n passiveEventsListenerTest();\n geolocationOnStartTest();\n notificationOnStartTest();\n linksBlockingFirstPaintTest();\n noRelOpenLinksTest();\n // oldCSSFlexboxTest();\n deprecationsTest();\n passwordInputsCanBePastedIntoTest();\n isOnHttps();\n noUnloadListenersTest();\n} else {\n if (params.has('documentWrite')) {\n documentWriteTest();\n }\n if (params.has('dateNow')) {\n dateNowTest();\n }\n if (params.has('consoleTime')) {\n consoleTimeTest();\n }\n if (params.has('passiveEvents')) {\n passiveEventsListenerTest();\n }\n if (params.has('geolocation')) {\n geolocationOnStartTest();\n }\n if (params.has('notifications')) {\n notificationOnStartTest();\n }\n if (params.has('linksblockfp')) {\n linksBlockingFirstPaintTest();\n }\n if (params.has('relnoopener')) {\n noRelOpenLinksTest();\n }\n // if (params.has('oldcssflexbox')) {\n // oldCSSFlexboxTest();\n // }\n if (params.has('deprecations')) {\n deprecationsTest();\n }\n if (params.has('passwordinputs')) {\n passwordInputsCanBePastedIntoTest();\n }\n if (params.has('isonhttps')) {\n isOnHttps();\n }\n}\n" + "content": "\nfunction stampTemplate(id, location) {\n const template = document.querySelector('#' + id);\n location.appendChild(template.content.cloneNode(true));\n}\n\nfunction dateNowTest() {\n function helloDate() {\n // FAIL - Date.now() usage in a function.\n return Date.now();\n }\n helloDate();\n const d = Date.now(); // FAIL\n eval('Date.now()'); // FAIL\n new Function('Date.now()')() // FAIL\n}\n\nfunction consoleTimeTest() {\n // FAIL\n console.time('arg1');\n for (let i = 0; i < 2; i++) {\n // FAIL\n console.time('arg2');\n }\n console.timeEnd('arg1');\n console.timeEnd('arg2');\n\n eval(\"console.time('arg3')\"); // FAIL\n}\n\nfunction documentWriteTest() {\n document.write('Hi'); // FAIL\n document.write('There'); // FAIL\n document.write('2.0!'); // FAIL\n}\n\nfunction passiveEventsListenerTest() {\n // FAIL or PASS - field trial for document level defaulting to passive M71+\n window.addEventListener('wheel', function(e) {\n console.log('wheel');\n });\n\n // PASS - document level defaults to passive M56+\n window.addEventListener('touchstart', function(e) {\n console.log('touchstart');\n });\n\n // PASS - passive:false doesn't get a warning now. crbug.com/770208\n window.addEventListener('mousewheel', function(e) {\n console.log('mousewheel');\n }, {passive: false});\n\n // PASS - document level defaults to passive M56+\n document.addEventListener('touchstart', function(e) {\n console.log('touchstart document');\n });\n\n // PASS - document level defaults to passive M56+\n document.body.addEventListener('touchmove', function(e) {\n console.log('touchmove');\n });\n\n // FAIL\n const el = document.querySelector('#touchmove-section');\n el.addEventListener('touchmove', function(e) {\n console.log('touchmove');\n });\n\n // PASS - calls preventDefault() but isnt passive;\n document.addEventListener('touchstart', function(e) {\n\n e.preventDefault(); // intentionally surrounded by whitespace.\n\n console.log('touchstart - preventDefault called');\n });\n\n // PASS\n document.body.addEventListener('touchstart', function(e) {\n console.log('touchstart');\n }, {passive: true});\n\n // PASS\n window.addEventListener('touchstart', function(e) {\n console.log('touchstart passive');\n }, {passive: true});\n\n // PASS - another event on window that isn't wheel/touch\n window.addEventListener('scroll', function(e) {\n console.log('scroll');\n });\n}\n\nfunction geolocationOnStartTest() {\n navigator.geolocation.getCurrentPosition(function(position) {\n // noop\n });\n\n const watchID = navigator.geolocation.watchPosition(function(position) {\n navigator.geolocation.clearWatch(watchID);\n });\n}\n\nfunction notificationOnStartTest() {\n Notification.requestPermission().then(function () {\n // noop\n });\n}\n\nfunction oldCSSFlexboxTest() {\n stampTemplate('old-flexbox-tmpl', document.body);\n}\n\nfunction linksBlockingFirstPaintTest() {\n stampTemplate('links-blocking-first-paint-tmpl', document.head);\n}\n\nfunction noRelOpenLinksTest() {\n stampTemplate('noopener-links-tmpl', document.body);\n}\n\nfunction passwordInputsCanBePastedIntoTest() {\n stampTemplate('inputs-can-be-pasted-into', document.body);\n}\n\n\nfunction deprecationsTest() {\n // TODO: some deprecated API messages are not currently being logged correctly.\n // See: https://crbug.com/680832\n\n // FAIL\n const xhr = new XMLHttpRequest();\n xhr.open('GET', 'dbw_tester.html', false);\n xhr.send();\n\n // One more failure in dbw_tester.js\n}\n\nfunction isOnHttps() {\n // Check blob URL.\n const blob = new Blob(['fake'])\n const img = document.createElement('img');\n img.src = URL.createObjectURL(blob);\n document.body.appendChild(img); // PASS\n}\n\nfunction noUnloadListenersTest() {\n window.addEventListener('unload', () => {\n console.log('unload on unload');\n });\n}\n\n// Figure out which tests to fun.\nconst params = new URLSearchParams(location.search);\nif (location.search === '') {\n documentWriteTest();\n dateNowTest();\n consoleTimeTest();\n passiveEventsListenerTest();\n geolocationOnStartTest();\n notificationOnStartTest();\n linksBlockingFirstPaintTest();\n noRelOpenLinksTest();\n // oldCSSFlexboxTest();\n deprecationsTest();\n passwordInputsCanBePastedIntoTest();\n isOnHttps();\n noUnloadListenersTest();\n} else {\n if (params.has('documentWrite')) {\n documentWriteTest();\n }\n if (params.has('dateNow')) {\n dateNowTest();\n }\n if (params.has('consoleTime')) {\n consoleTimeTest();\n }\n if (params.has('passiveEvents')) {\n passiveEventsListenerTest();\n }\n if (params.has('geolocation')) {\n geolocationOnStartTest();\n }\n if (params.has('notifications')) {\n notificationOnStartTest();\n }\n if (params.has('linksblockfp')) {\n linksBlockingFirstPaintTest();\n }\n if (params.has('relnoopener')) {\n noRelOpenLinksTest();\n }\n // if (params.has('oldcssflexbox')) {\n // oldCSSFlexboxTest();\n // }\n if (params.has('deprecations')) {\n deprecationsTest();\n }\n if (params.has('passwordinputs')) {\n passwordInputsCanBePastedIntoTest();\n }\n if (params.has('isonhttps')) {\n isOnHttps();\n }\n}\n" }, { "name": "http://localhost:10200/dobetterweb/third_party/aggressive-promise-polyfill.js", diff --git a/core/test/results/sample_v2.json b/core/test/results/sample_v2.json index cb0f500830..e4aec8311c 100644 --- a/core/test/results/sample_v2.json +++ b/core/test/results/sample_v2.json @@ -4950,10 +4950,10 @@ ] } }, - "password-inputs-can-be-pasted-into": { - "id": "password-inputs-can-be-pasted-into", - "title": "Prevents users to paste into password fields", - "description": "Preventing password pasting undermines good security policy. [Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/).", + "paste-preventing-inputs": { + "id": "paste-preventing-inputs", + "title": "Prevents users from pasting into input fields", + "description": "Preventing input pasting is a UX anti-pattern, and undermines good security policy. [Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/).", "score": 0, "scoreDisplayMode": "binary", "details": { @@ -4969,38 +4969,40 @@ { "node": { "type": "node", - "lhId": "page-9-INPUT", - "path": "3,HTML,1,BODY,61,INPUT", + "lhId": "1-10-INPUT", + "path": "2,HTML,1,BODY,61,INPUT", "selector": "body > input", "boundingRect": { - "top": 1274, - "bottom": 1295, + "top": 1278, + "bottom": 1300, "left": 192, - "right": 345, - "width": 153, - "height": 21 + "right": 339, + "width": 147, + "height": 22 }, "snippet": "", "nodeLabel": "body > input" - } + }, + "type": "password" }, { "node": { "type": "node", - "lhId": "page-10-INPUT", - "path": "3,HTML,1,BODY,65,INPUT", + "lhId": "1-12-INPUT", + "path": "2,HTML,1,BODY,65,INPUT", "selector": "body > input", "boundingRect": { - "top": 1296, - "bottom": 1317, - "left": 165, - "right": 318, - "width": 153, - "height": 21 + "top": 1301, + "bottom": 1322, + "left": 159, + "right": 306, + "width": 147, + "height": 22 }, "snippet": "", "nodeLabel": "body > input" - } + }, + "type": "password" } ] } @@ -6128,7 +6130,7 @@ "group": "best-practices-trust-safety" }, { - "id": "password-inputs-can-be-pasted-into", + "id": "paste-preventing-inputs", "weight": 1, "group": "best-practices-ux" }, @@ -8390,7 +8392,7 @@ }, { "startTime": 0, - "name": "lh:audit:password-inputs-can-be-pasted-into", + "name": "lh:audit:paste-preventing-inputs", "duration": 100, "entryType": "measure" }, @@ -9439,7 +9441,7 @@ "audits.label.details.headings[0].label", "audits[link-name].details.headings[0].label", "audits[object-alt].details.headings[0].label", - "audits[password-inputs-can-be-pasted-into].details.headings[0].label" + "audits[paste-preventing-inputs].details.headings[0].label" ], "core/audits/accessibility/html-lang-valid.js | title": [ "audits[html-lang-valid].title" @@ -9771,11 +9773,11 @@ "core/audits/dobetterweb/notification-on-start.js | description": [ "audits[notification-on-start].description" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": [ - "audits[password-inputs-can-be-pasted-into].title" + "core/audits/dobetterweb/paste-preventing-inputs.js | failureTitle": [ + "audits[paste-preventing-inputs].title" ], - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": [ - "audits[password-inputs-can-be-pasted-into].description" + "core/audits/dobetterweb/paste-preventing-inputs.js | description": [ + "audits[paste-preventing-inputs].description" ], "core/audits/dobetterweb/uses-http2.js | title": [ "audits[uses-http2].title" diff --git a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap index 1f586300a5..7075824f9f 100644 --- a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap +++ b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap @@ -103,7 +103,7 @@ Array [ "object-alt", "offscreen-content-hidden", "offscreen-images", - "password-inputs-can-be-pasted-into", + "paste-preventing-inputs", "performance-budget", "plugins", "preload-fonts", @@ -258,7 +258,7 @@ Array [ "object-alt", "offscreen-content-hidden", "offscreen-images", - "password-inputs-can-be-pasted-into", + "paste-preventing-inputs", "performance-budget", "plugins", "preload-fonts", @@ -368,7 +368,7 @@ Array [ "meta-viewport", "object-alt", "offscreen-content-hidden", - "password-inputs-can-be-pasted-into", + "paste-preventing-inputs", "plugins", "robots-txt", "structured-data", diff --git a/shared/localization/locales/ar-XB.json b/shared/localization/locales/ar-XB.json index 9d8e4d8397..b007a1c035 100644 --- a/shared/localization/locales/ar-XB.json +++ b/shared/localization/locales/ar-XB.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Avoids requesting the notification permission on page load" }, - "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/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Prevents users to paste into password fields" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Allows users to paste into password fields" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" }, diff --git a/shared/localization/locales/ar.json b/shared/localization/locales/ar.json index aa05eff234..b970e1e6df 100644 --- a/shared/localization/locales/ar.json +++ b/shared/localization/locales/ar.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "يتم تجنُّب طلب إذن الإشعار عند تحميل الصفحة" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "يؤدي منع لصق كلمة المرور إلى تقويض سياسة الأمان الجيدة. [مزيد من المعلومات](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "يتم منع المستخدمين من اللصق في حقول كلمات المرور" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "يتم السماح للمستخدمين باللصق في حقول كلمات المرور" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "البروتوكول" }, diff --git a/shared/localization/locales/bg.json b/shared/localization/locales/bg.json index 8a9cbb53aa..e19fa6007d 100644 --- a/shared/localization/locales/bg.json +++ b/shared/localization/locales/bg.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Избягва да иска разрешение за известяване при зареждането на страницата" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Забраната на поставянето на пароли неутрализира добра практика за сигурност. [Научете повече](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Не позволява на потребителите да поставят в полетата за парола" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Разрешава на потребителите да поставят в полетата за парола" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Протокол" }, diff --git a/shared/localization/locales/ca.json b/shared/localization/locales/ca.json index dccc498ba0..f1d013d52c 100644 --- a/shared/localization/locales/ca.json +++ b/shared/localization/locales/ca.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evita sol·licitar el permís de notificació en carregar la pàgina" }, - "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/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Evita que els usuaris enganxin contingut als camps de contrasenya" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Permet que els usuaris enganxin contingut als camps de contrasenya" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" }, diff --git a/shared/localization/locales/cs.json b/shared/localization/locales/cs.json index a585621688..6f51df0398 100644 --- a/shared/localization/locales/cs.json +++ b/shared/localization/locales/cs.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Nežádá při načtení stránky o oprávnění zobrazovat oznámení" }, - "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/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Brání uživatelům ve vkládání obsahu do polí pro hesla" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Povoluje uživatelům vkládání obsahu do polí pro hesla" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/da.json b/shared/localization/locales/da.json index 3fb6930161..c5e1212abd 100644 --- a/shared/localization/locales/da.json +++ b/shared/localization/locales/da.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Undgår at anmode om tilladelse til notifikationer ved indlæsning af siden" }, - "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/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Forhindrer brugere i at indsætte indhold i adgangskodefelter" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Tillader, at brugere indsætter indhold i adgangskodefelter" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/de.json b/shared/localization/locales/de.json index 0a1a6f3a39..06318c59db 100644 --- a/shared/localization/locales/de.json +++ b/shared/localization/locales/de.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Fordert während des Seitenaufbaus keine Benachrichtigungsberechtigung an" }, - "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/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Hindert Nutzer daran, Inhalte in Passwortfelder einzufügen" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Erlaubt Nutzern, Inhalte in Passwortfelder einzufügen" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokoll" }, diff --git a/shared/localization/locales/el.json b/shared/localization/locales/el.json index e412264812..d7c3b866b8 100644 --- a/shared/localization/locales/el.json +++ b/shared/localization/locales/el.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Αποφυγή αιτήματος για άδεια ειδοποίησης κατά τη φόρτωση σελίδων" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Η απαγόρευση της επικόλλησης κωδικών πρόσβασης υπονομεύει την ορθή πολιτική ασφάλειας. [Μάθετε περισσότερα](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Εμποδίζει την επικόλληση στα πεδία κωδικών πρόσβασης από τους χρήστες" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Επιτρέπει την επικόλληση στα πεδία κωδικών πρόσβασης από τους χρήστες" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Πρωτόκολλο" }, diff --git a/shared/localization/locales/en-GB.json b/shared/localization/locales/en-GB.json index b784f3d441..47a2482d0e 100644 --- a/shared/localization/locales/en-GB.json +++ b/shared/localization/locales/en-GB.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Avoids requesting the notification permission on page load" }, - "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/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Prevents users to paste into password fields" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Allows users to paste into password fields" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" }, diff --git a/shared/localization/locales/en-US.json b/shared/localization/locales/en-US.json index 20f115e8df..71937e96ce 100644 --- a/shared/localization/locales/en-US.json +++ b/shared/localization/locales/en-US.json @@ -764,14 +764,14 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Avoids requesting the notification permission on page load" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Preventing password pasting undermines good security policy. [Learn more about user-friendly password fields](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/)." + "core/audits/dobetterweb/paste-preventing-inputs.js | description": { + "message": "Preventing input pasting is a UX anti-pattern, and undermines good security policy. [Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/)." }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Prevents users to paste into password fields" + "core/audits/dobetterweb/paste-preventing-inputs.js | failureTitle": { + "message": "Prevents users from pasting into input fields" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Allows users to paste into password fields" + "core/audits/dobetterweb/paste-preventing-inputs.js | title": { + "message": "Allows users to paste into input fields" }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" diff --git a/shared/localization/locales/en-XA.json b/shared/localization/locales/en-XA.json index 4f6813b927..19e6c3a7cf 100644 --- a/shared/localization/locales/en-XA.json +++ b/shared/localization/locales/en-XA.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "[Åvöîðš ŕéqûéšţîñĝ ţĥé ñöţîƒîçåţîöñ þéŕmîššîöñ öñ þåĝé ļöåð one two three four five six seven eight nine ten eleven twelve]" }, - "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]" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "[Þŕévéñţš ûšéŕš ţö þåšţé îñţö þåššŵöŕð ƒîéļðš one two three four five six seven eight nine]" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "[Åļļöŵš ûšéŕš ţö þåšţé îñţö þåššŵöŕð ƒîéļðš one two three four five six seven eight nine]" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "[Þŕöţöçöļ one]" }, diff --git a/shared/localization/locales/en-XL.json b/shared/localization/locales/en-XL.json index 1d02910a63..df75a8459e 100644 --- a/shared/localization/locales/en-XL.json +++ b/shared/localization/locales/en-XL.json @@ -764,14 +764,14 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Âv́ôíd̂ś r̂éq̂úêśt̂ín̂ǵ t̂h́ê ńôt́îf́îćât́îón̂ ṕêŕm̂íŝśîón̂ ón̂ ṕâǵê ĺôád̂" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "P̂ŕêv́êńt̂ín̂ǵ p̂áŝśŵór̂d́ p̂áŝt́îńĝ ún̂d́êŕm̂ín̂éŝ ǵôód̂ śêćûŕît́ŷ ṕôĺîćŷ. [Ĺêár̂ń m̂ór̂é âb́ôút̂ úŝér̂-f́r̂íêńd̂ĺŷ ṕâśŝẃôŕd̂ f́îél̂d́ŝ](https://developer.chrome.com/docs/lighthouse/best-practices/password-inputs-can-be-pasted-into/)." + "core/audits/dobetterweb/paste-preventing-inputs.js | description": { + "message": "P̂ŕêv́êńt̂ín̂ǵ îńp̂út̂ ṕâśt̂ín̂ǵ îś â ÚX̂ án̂t́î-ṕât́t̂ér̂ń, âńd̂ ún̂d́êŕm̂ín̂éŝ ǵôód̂ śêćûŕît́ŷ ṕôĺîćŷ. [Ĺêár̂ń m̂ór̂é âb́ôút̂ úŝér̂-f́r̂íêńd̂ĺŷ ín̂ṕût́ f̂íêĺd̂ś](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/)." }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "P̂ŕêv́êńt̂ś ûśêŕŝ t́ô ṕâśt̂é îńt̂ó p̂áŝśŵór̂d́ f̂íêĺd̂ś" + "core/audits/dobetterweb/paste-preventing-inputs.js | failureTitle": { + "message": "P̂ŕêv́êńt̂ś ûśêŕŝ f́r̂óm̂ ṕâśt̂ín̂ǵ îńt̂ó îńp̂út̂ f́îél̂d́ŝ" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Âĺl̂óŵś ûśêŕŝ t́ô ṕâśt̂é îńt̂ó p̂áŝśŵór̂d́ f̂íêĺd̂ś" + "core/audits/dobetterweb/paste-preventing-inputs.js | title": { + "message": "Âĺl̂óŵś ûśêŕŝ t́ô ṕâśt̂é îńt̂ó îńp̂út̂ f́îél̂d́ŝ" }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "P̂ŕôt́ôćôĺ" diff --git a/shared/localization/locales/es-419.json b/shared/localization/locales/es-419.json index 2ef88d9a31..eae8a8b1bd 100644 --- a/shared/localization/locales/es-419.json +++ b/shared/localization/locales/es-419.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evita solicitar el permiso de notificaciones al cargar la página" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Evitar el pegado de contraseñas debilita las buenas políticas de seguridad. [Obtén más información](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Evita que los usuarios peguen contenido en los campos de contraseña" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Permite que los usuarios peguen contenido en los campos de contraseña" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocolo" }, diff --git a/shared/localization/locales/es.json b/shared/localization/locales/es.json index 7de207ff19..8df12716e8 100644 --- a/shared/localization/locales/es.json +++ b/shared/localization/locales/es.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evita solicitar el permiso de notificación al cargar la página" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Evitar que se pueda pegar texto en el campo de contraseña debilita una buena política de seguridad. [Más información](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Impide que los usuarios peguen texto en los campos de contraseña" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Permite que los usuarios peguen texto en los campos de contraseña" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocolo" }, diff --git a/shared/localization/locales/fi.json b/shared/localization/locales/fi.json index 3c24d0f48e..a7997e6919 100644 --- a/shared/localization/locales/fi.json +++ b/shared/localization/locales/fi.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Välttää ilmoitusten käyttöoikeuden pyytämistä sivun latauksessa" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Salasanan liittämisen estäminen on hyvän tietoturvakäytännön vastaista. [Lue lisää](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Estää käyttäjiä liittämästä sisältöä salasanakenttiin" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Sallii käyttäjien liittää sisältöä salasanakenttiin" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokolla" }, diff --git a/shared/localization/locales/fil.json b/shared/localization/locales/fil.json index b957967b72..e78eb0b16e 100644 --- a/shared/localization/locales/fil.json +++ b/shared/localization/locales/fil.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Iniiwasan ang paghiling ng pahintulot sa notification sa pag-load ng page" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Pinapahina ng paghadlang sa pag-paste ng password ang magandang patakarang panseguridad. [Matuto pa](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Pinipigilan ang mga user na mag-paste sa mga field ng password" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Pinapayagan ang mga user na mag-paste sa mga field ng password" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" }, diff --git a/shared/localization/locales/fr.json b/shared/localization/locales/fr.json index 06847a4cf2..ead37653c4 100644 --- a/shared/localization/locales/fr.json +++ b/shared/localization/locales/fr.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Aucune autorisation d'envoi de notifications n'est demandée au chargement de la page" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Empêcher la copie de contenu dans les champs de mot de passe nuit aux règles de sécurité. [En savoir plus](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "La copie de contenu n'est pas autorisée dans les champs de mot de passe" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Autoriser les utilisateurs à copier un contenu dans les champs de mot de passe" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocole" }, diff --git a/shared/localization/locales/he.json b/shared/localization/locales/he.json index 43981d849f..2199336494 100644 --- a/shared/localization/locales/he.json +++ b/shared/localization/locales/he.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "הדף לא מבקש הרשאה להתראות במהלך טעינת הדף" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "מניעה של הדבקת סיסמאות פוגעת ביכולת לקיים מדיניות אבטחה טובה. [מידע נוסף](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "בדף הזה משתמשים לא יכולים להדביק תוכן מועתק לתוך שדות של סיסמאות" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "בדף הזה משתמשים יכולים להדביק תוכן מועתק לתוך שדות של סיסמאות" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "פרוטוקול" }, diff --git a/shared/localization/locales/hi.json b/shared/localization/locales/hi.json index fa9a307e84..b936ff8e1c 100644 --- a/shared/localization/locales/hi.json +++ b/shared/localization/locales/hi.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "पेज लोड पर सूचना भेजने की मंज़ूरी का अनुरोध नहीं किया जाता" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "पासवर्ड वाले फ़ील्ड में कुछ कॉपी करके चिपकाने की सुविधा न लागू करने का मतलब है एक अच्छी सुरक्षा नीति को कमज़ोर समझना. [ज़्यादा जानें](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "इस्तेमाल करने वालों को पासवर्ड फ़ील्ड में पहले से कॉपी की गई जानकारी चिपकाने से रोकता है" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "इस्तेमाल करने वालों को पासवर्ड फ़ील्ड में पहले से कॉपी की गई जानकारी चिपकाने देता है" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "प्रोटोकॉल" }, diff --git a/shared/localization/locales/hr.json b/shared/localization/locales/hr.json index 2c28f1558f..9fb9ac9e1e 100644 --- a/shared/localization/locales/hr.json +++ b/shared/localization/locales/hr.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Izbjegava traženje dopuštenja za obavještavanje pri učitavanju stranice" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Sprječavanje lijepljenja zaporke narušava kvalitetu dobrih sigurnosnih pravila. [Saznajte više](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Onemogućuje korisnicima lijepljenje u polja za zaporku" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Omogućuje korisnicima lijepljenje u polja za zaporku" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/hu.json b/shared/localization/locales/hu.json index c495913cfd..d440a8d711 100644 --- a/shared/localization/locales/hu.json +++ b/shared/localization/locales/hu.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Kerüli az értesítésekre vonatkozó engedély kérését oldalbetöltéskor" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "A jelszóbeillesztés megakadályozása rossz biztonsági gyakorlat. [További információ](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Megakadályozza, hogy a felhasználók szöveget illesszenek be a jelszómezőkbe" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Lehetővé teszi, hogy a felhasználók beillesszenek a jelszómezőkbe" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokoll" }, diff --git a/shared/localization/locales/id.json b/shared/localization/locales/id.json index be49a5485f..d4a071cd25 100644 --- a/shared/localization/locales/id.json +++ b/shared/localization/locales/id.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Menghindari meminta izin notifikasi pada pemuatan halaman" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Mencegah menempelkan sandi akan merusak kebijakan keamanan yang baik. [Pelajari lebih lanjut](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Mencegah pengguna menempelkan sesuatu ke kolom sandi." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Mengizinkan pengguna menempelkan sesuatu ke kolom sandi" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/it.json b/shared/localization/locales/it.json index a94be75c62..fb1a5aa4dc 100644 --- a/shared/localization/locales/it.json +++ b/shared/localization/locales/it.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evita di chiedere l'autorizzazione di accesso alle notifiche durante il caricamento della pagina" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Impedire di incollare le password pregiudica l'efficacia delle norme di sicurezza. [Ulteriori informazioni](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Impedisce agli utenti di incollare contenuti nei campi delle password" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Consente agli utenti di incollare contenuti nei campi delle password" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocollo" }, diff --git a/shared/localization/locales/ja.json b/shared/localization/locales/ja.json index f2868a97c9..44447515d4 100644 --- a/shared/localization/locales/ja.json +++ b/shared/localization/locales/ja.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "ページの読み込み時に通知の許可はリクエストされません" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "パスワードの貼り付けを禁止すると、良好なセキュリティ ポリシーが損なわれます。[詳細](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "ユーザーはパスワード欄に貼り付けできません" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "ユーザーはパスワード欄に貼り付けできます" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "プロトコル" }, diff --git a/shared/localization/locales/ko.json b/shared/localization/locales/ko.json index a8ae856147..a5632ddb08 100644 --- a/shared/localization/locales/ko.json +++ b/shared/localization/locales/ko.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "페이지 로드 시 알림 권한 요청 방지하기" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "비밀번호 붙여넣기 방지로 인해 타당한 보안 정책이 저해됩니다. [자세히 알아보기](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "사용자가 비밀번호 입력란에 내용을 붙여넣지 못하도록 차단" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "사용자가 비밀번호 입력란에 붙여넣을 수 있도록 허용" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "프로토콜" }, diff --git a/shared/localization/locales/lt.json b/shared/localization/locales/lt.json index e7d517ff60..48f1ce2582 100644 --- a/shared/localization/locales/lt.json +++ b/shared/localization/locales/lt.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Įkeliant puslapį vengiama pateikti užklausą dėl pranešimų leidimo" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Neleidžiant įklijuoti slaptažodžių, pažeidžiama tinkamos saugos politika. [Sužinokite daugiau](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Naudotojams neleidžiama įklijuoti teksto į slaptažodžių laukus" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Naudotojams leidžiama įklijuoti tekstą į slaptažodžių laukus" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokolas" }, diff --git a/shared/localization/locales/lv.json b/shared/localization/locales/lv.json index f060975291..4ff515a8a7 100644 --- a/shared/localization/locales/lv.json +++ b/shared/localization/locales/lv.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Netiek pieprasīta paziņojumu atļauja lapas ielādei" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Paroles ielīmēšanas novēršana neatbilst labai drošības politikai. [Uzziniet vairāk](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Neļauj lietotājiem ielīmēt paroles laukos" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Ļauj lietotājiem ielīmēt paroles laukos" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokols" }, diff --git a/shared/localization/locales/nl.json b/shared/localization/locales/nl.json index ad2f1cd72b..dc3cade4b1 100644 --- a/shared/localization/locales/nl.json +++ b/shared/localization/locales/nl.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Vermijdt verzoeken om de meldingsrechten bij laden van pagina" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Verhindering van het plakken van wachtwoorden ondermijnt een goed beveiligingsbeleid. [Meer informatie](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Voorkomt dat gebruikers kunnen plakken in wachtwoordvelden" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Laat gebruikers plakken in wachtwoordvelden" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" }, diff --git a/shared/localization/locales/no.json b/shared/localization/locales/no.json index 0f9ac5caf5..07c524fa5d 100644 --- a/shared/localization/locales/no.json +++ b/shared/localization/locales/no.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Unngår å spørre om varseltillatelsen ved sideinnlasting" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Å hindre brukere i å lime inn passord underminerer gode retningslinjer for sikkerhet. [Finn ut mer](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Forhindrer brukere fra å lime inn i passordfelt" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Brukerne kan lime inn i passordfelt" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokoll" }, diff --git a/shared/localization/locales/pl.json b/shared/localization/locales/pl.json index e7bc8ee80c..48f5c396f9 100644 --- a/shared/localization/locales/pl.json +++ b/shared/localization/locales/pl.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Nie pyta o zgodę na wyświetlanie powiadomień podczas wczytywania strony" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Uniemożliwianie wklejania haseł jest sprzeczne z dobrymi zasadami bezpieczeństwa. [Więcej informacji](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Uniemożliwia wklejanie tekstu w polach haseł" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Pozwala wklejać tekst w polach haseł" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokół" }, diff --git a/shared/localization/locales/pt-PT.json b/shared/localization/locales/pt-PT.json index 50f34bfa5c..d19fb91571 100644 --- a/shared/localization/locales/pt-PT.json +++ b/shared/localization/locales/pt-PT.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evita a solicitação da autorização de notificações no carregamento da página" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Impedir a colagem de palavras-passe compromete o cumprimento de uma política de segurança adequada. [Saiba mais](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Impede que os utilizadores colem conteúdo nos campos de palavra-passe" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Permite que os utilizadores colem nos campos de palavra-passe" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocolo" }, diff --git a/shared/localization/locales/pt.json b/shared/localization/locales/pt.json index f9fae4ff09..0ac9acca8f 100644 --- a/shared/localization/locales/pt.json +++ b/shared/localization/locales/pt.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evita o pedido da permissão de notificação no carregamento de página" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Impedir a colagem da senha prejudica a política de boa segurança. [Saiba mais](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Evita que o usuário cole nos campos de senha" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Permite que o usuário cole nos campos de senha" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocolo" }, diff --git a/shared/localization/locales/ro.json b/shared/localization/locales/ro.json index 6d8b5844f1..099b901410 100644 --- a/shared/localization/locales/ro.json +++ b/shared/localization/locales/ro.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Evită solicitarea permisiunii de notificare la încărcarea paginii" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Împiedicarea inserării parolelor subminează buna politică de securitate. [Află mai multe](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Împiedică utilizatorii să insereze în câmpurile pentru parole" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Permite-le utilizatorilor să insereze în câmpurile pentru parole" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protocol" }, diff --git a/shared/localization/locales/ru.json b/shared/localization/locales/ru.json index 8514ef643d..88be79e084 100644 --- a/shared/localization/locales/ru.json +++ b/shared/localization/locales/ru.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Разрешение на отправку уведомлений не запрашивается при загрузке страницы" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Запрет на вставку пароля из буфера обмена отрицательно сказывается на безопасности пользователей. [Подробнее…](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Вставка пароля из буфера обмена запрещена" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Вставка пароля из буфера обмена разрешена" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Протокол" }, diff --git a/shared/localization/locales/sk.json b/shared/localization/locales/sk.json index f3fa03fcec..bc9a187bc8 100644 --- a/shared/localization/locales/sk.json +++ b/shared/localization/locales/sk.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Nepožaduje povolenie na upozornenie pri načítaní stránky" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Ak zakážete prilepovanie hesiel, zhoršíte kvalitu zabezpečenia. [Ďalšie informácie](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Zabráňte používateľom prilepovať do polí pre heslá" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Umožnite používateľom prilepovať do polí pre heslá" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/sl.json b/shared/localization/locales/sl.json index f21d5a933e..e2c2e9e391 100644 --- a/shared/localization/locales/sl.json +++ b/shared/localization/locales/sl.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Ne zahteva dovoljenja za obvestila pri nalaganju strani" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Preprečevanje lepljenja gesel omeji dober pravilnik o varnosti. [Več o tem](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Uporabnikom preprečuje lepljenje v polja za gesla" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Uporabnikom omogoča lepljenje v polja za gesla" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/sr-Latn.json b/shared/localization/locales/sr-Latn.json index 29afda12dc..e95251636e 100644 --- a/shared/localization/locales/sr-Latn.json +++ b/shared/localization/locales/sr-Latn.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Izbegavajte traženje dozvole za obaveštenja pri učitavanju stranice" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Sprečavanje lepljenja lozinke narušava dobre smernice za bezbednost. [Saznajte više](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Sprečava korisnike da nalepe vrednost u polja za lozinke" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Dozvoljava korisnicima da nalepe vrednost u polja za lozinke" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/sr.json b/shared/localization/locales/sr.json index 01c9d6e8fe..838503238b 100644 --- a/shared/localization/locales/sr.json +++ b/shared/localization/locales/sr.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Избегавајте тражење дозволе за обавештења при учитавању странице" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Спречавање лепљења лозинке нарушава добре смернице за безбедност. [Сазнајте више](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Спречава кориснике да налепе вредност у поља за лозинке" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Дозвољава корисницима да налепе вредност у поља за лозинке" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Протокол" }, diff --git a/shared/localization/locales/sv.json b/shared/localization/locales/sv.json index bb1ddf03fe..f2d8d6eaf3 100644 --- a/shared/localization/locales/sv.json +++ b/shared/localization/locales/sv.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Undviker att begära aviseringsbehörighet vid sidinläsning" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Att förhindra att lösenord klistras in underminerar en bra säkerhetspolicy. [Läs mer](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Användarna tillåts inte att klistra in i lösenordsfält" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Användarna tillåts klistra in i lösenordsfält" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokoll" }, diff --git a/shared/localization/locales/ta.json b/shared/localization/locales/ta.json index 0bb0faa410..9ad1a3ce1a 100644 --- a/shared/localization/locales/ta.json +++ b/shared/localization/locales/ta.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "பக்கம் ஏற்றப்படும்போது அதுகுறித்த அறிவிப்பைத் தெரிந்துகொள்வதற்கான அனுமதியைக் கோராது" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "கடவுச்சொல்லை ஒட்டுவதைத் தடுப்பதால் நல்ல பாதுகாப்புக் கொள்கை பாதிக்கப்படுகிறது. [மேலும் அறிக](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "கடவுச்சொல் புலங்களில் பயனர்கள் ஒட்டுவதைத் தடுக்கும்" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "கடவுச்சொல் புலங்களில் பயனர்கள் ஒட்டுவதை அனுமதிக்கும்" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "நெறிமுறை" }, diff --git a/shared/localization/locales/te.json b/shared/localization/locales/te.json index 1c73394358..8993deb653 100644 --- a/shared/localization/locales/te.json +++ b/shared/localization/locales/te.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "పేజీ లోడ్ సమయంలో నోటిఫికేషన్ అనుమతిని అభ్యర్థించడం నివారిస్తుంది" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "పాస్వర్డ్లో అతికించే చర్యను నిరోధించడం వలన మంచి భద్రతా విధానానికి ఆటంకం ఏర్పడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "పాస్వర్డ్ ఫీల్డ్లలో అతికించడం చేయలేకుండా వినియోగదారులను నిరోధిస్తుంది" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "పాస్వర్డ్ ఫీల్డ్లలో అతికించడానికి వినియోగదారులను అనుమతిస్తుంది" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "ప్రోటోకాల్" }, diff --git a/shared/localization/locales/th.json b/shared/localization/locales/th.json index c373296d24..f74b221716 100644 --- a/shared/localization/locales/th.json +++ b/shared/localization/locales/th.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "หลีกเลี่ยงการขอสิทธิ์การแจ้งเตือนในการโหลดหน้าเว็บ" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "การป้องกันการวางรหัสผ่านทำให้นโยบายความปลอดภัยที่ดีอ่อนแอลง [ดูข้อมูลเพิ่มเติม](https://web.dev/password-inputs-can-be-pasted-into/)" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "ป้องกันผู้ใช้ไม่ให้วางรหัสผ่านในช่อง" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "อนุญาตผู้ใช้ให้วางรหัสผ่านในช่องได้" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "โปรโตคอล" }, diff --git a/shared/localization/locales/tr.json b/shared/localization/locales/tr.json index 594fac90a6..1f1ac1319f 100644 --- a/shared/localization/locales/tr.json +++ b/shared/localization/locales/tr.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Sayfa yüklemede bildirim izni istemiyor" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Şifre yapıştırmanın engellenmesi, iyi güvenlik politikasına zarar verir. [Daha fazla bilgi](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Kullanıcıların şifre alanlarına yapıştırmalarını önler" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Kullanıcıların şifre alanlarına yapıştırmalarına izin verir" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Protokol" }, diff --git a/shared/localization/locales/uk.json b/shared/localization/locales/uk.json index 2f5d38b1a3..9e0ab213bc 100644 --- a/shared/localization/locales/uk.json +++ b/shared/localization/locales/uk.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Уникає надсилання запитів на показ сповіщень під час завантаження сторінки" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Якщо заборонити вставляти пароль, це порушить правила щодо високого рівня безпеки. [Докладніше](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Не дозволяє користувачам вставляти вміст у поля паролів" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Дає змогу користувачам вставляти вміст у поля паролів" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Протокол" }, diff --git a/shared/localization/locales/vi.json b/shared/localization/locales/vi.json index 80de9b827f..d8b51bab38 100644 --- a/shared/localization/locales/vi.json +++ b/shared/localization/locales/vi.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "Tránh yêu cầu quyền truy cập thông báo khi tải trang" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "Việc ngăn dán mật khẩu sẽ làm giảm tác dụng của chính sách bảo mật hiệu quả. [Tìm hiểu thêm](https://web.dev/password-inputs-can-be-pasted-into/)." - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "Ngăn người dùng dán vào các trường mật khẩu" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "Cho phép người dùng dán vào các trường mật khẩu" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "Giao thức" }, diff --git a/shared/localization/locales/zh-HK.json b/shared/localization/locales/zh-HK.json index 90b6434981..fd8c4b275a 100644 --- a/shared/localization/locales/zh-HK.json +++ b/shared/localization/locales/zh-HK.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "避免在載入網頁時要求使用者允許網站顯示通知" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "禁止貼上密碼會對安全政策造成不良影響。[瞭解詳情](https://web.dev/password-inputs-can-be-pasted-into/)。" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "禁止使用者貼到密碼欄位" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "允許使用者貼到密碼欄位" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "通訊協定" }, diff --git a/shared/localization/locales/zh-TW.json b/shared/localization/locales/zh-TW.json index 664695aff8..d3c81b4f85 100644 --- a/shared/localization/locales/zh-TW.json +++ b/shared/localization/locales/zh-TW.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "避免在載入網頁時要求使用者允許網站顯示通知" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "禁止貼上密碼會對安全性政策造成不良影響[瞭解詳情](https://web.dev/password-inputs-can-be-pasted-into/)。" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "禁止使用者貼到密碼欄位" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "允許使用者貼到密碼欄位" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "通訊協定" }, diff --git a/shared/localization/locales/zh.json b/shared/localization/locales/zh.json index b700ee8f98..245bd3d3b1 100644 --- a/shared/localization/locales/zh.json +++ b/shared/localization/locales/zh.json @@ -863,15 +863,6 @@ "core/audits/dobetterweb/notification-on-start.js | title": { "message": "避免在网页加载时请求通知权限" }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": { - "message": "阻止密码粘贴,会破坏良好的安全政策。[了解详情](https://web.dev/password-inputs-can-be-pasted-into/)。" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": { - "message": "不允许用户粘贴内容到密码字段" - }, - "core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": { - "message": "允许用户粘贴内容到密码字段" - }, "core/audits/dobetterweb/uses-http2.js | columnProtocol": { "message": "协议" }, diff --git a/tsconfig.json b/tsconfig.json index 3e3617f8f2..33aa5443b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -48,7 +48,6 @@ "core/test/gather/gatherers/console-messages-test.js", "core/test/gather/gatherers/devtools-log-test.js", "core/test/gather/gatherers/dobetterweb/optimized-images-test.js", - "core/test/gather/gatherers/dobetterweb/password-inputs-with-prevented-paste-test.js", "core/test/gather/gatherers/dobetterweb/response-compression-test.js", "core/test/gather/gatherers/dobetterweb/tags-blocking-first-paint-test.js", "core/test/gather/gatherers/full-page-screenshot-test.js", diff --git a/types/artifacts.d.ts b/types/artifacts.d.ts index af794cf6e1..b5862be319 100644 --- a/types/artifacts.d.ts +++ b/types/artifacts.d.ts @@ -159,8 +159,6 @@ export interface GathererArtifacts extends PublicGathererArtifacts,LegacyBaseArt MixedContent: {url: string}; /** Size and compression opportunity information for all the images in the page. */ OptimizedImages: Array; - /** HTML snippets and node paths from any password inputs that prevent pasting. */ - PasswordInputsWithPreventedPaste: Artifacts.PasswordInputsWithPreventedPaste[]; /** Size info of all network records sent without compression and their size after gzipping. */ ResponseCompression: {requestId: string, url: string, mimeType: string, transferSize: number, resourceSize: number, gzipSize?: number}[]; /** Information on fetching and the content of the /robots.txt file. */ @@ -312,8 +310,6 @@ declare module Artifacts { node: NodeDetails | null } - interface PasswordInputsWithPreventedPaste {node: NodeDetails} - interface Script extends Omit { /** * Set by a sourceURL= magic comment if present, otherwise this is the same as the URL. @@ -851,7 +847,8 @@ declare module Artifacts { property: string; attribute: string | null; prediction: string | null; - } + }; + preventsPaste?: boolean; node: NodeDetails; }