new_audit: paste-preventing-inputs (#14313)

This commit is contained in:
Connor Clark 2023-02-01 14:00:25 -08:00 коммит произвёл GitHub
Родитель dd3cbd3ef9
Коммит b245ca350c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
70 изменённых файлов: 642 добавлений и 742 удалений

10
cli/test/fixtures/dobetterweb/dbw_tester.html поставляемый
Просмотреть файл

@ -196,7 +196,7 @@
<a href="mailto:inbox@email.com" target="_blank"></a>
</template>
<template id="password-inputs-can-be-pasted-into">
<template id="paste-preventing-inputs">
<!-- FAIL - calls preventDefault on event -->
<input type="password" onpaste="event.preventDefault();" />
<!-- PASS -->
@ -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();

Просмотреть файл

@ -341,7 +341,7 @@ const expectations = {
],
},
},
'password-inputs-can-be-pasted-into': {
'paste-preventing-inputs': {
score: 0,
details: {
items: {

Просмотреть файл

@ -50,7 +50,7 @@ const expectations = {
'render-blocking-resources': {
score: 1,
},
'password-inputs-can-be-pasted-into': {
'paste-preventing-inputs': {
score: 1,
},
'service-worker': {

Просмотреть файл

@ -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 () => {

Просмотреть файл

@ -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};

Просмотреть файл

@ -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'},

Просмотреть файл

@ -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<LH.Artifacts['PasswordInputsWithPreventedPaste']>}
*/
getArtifact(passContext) {
return passContext.driver.executionContext.evaluate(findPasswordInputsWithPreventedPaste, {
args: [],
deps: [pageFunctions.getNodeDetails],
});
}
}
export default PasswordInputsWithPreventedPaste;

Просмотреть файл

@ -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),
});

Просмотреть файл

@ -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',

Просмотреть файл

@ -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);
});
});

Просмотреть файл

@ -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');
});
});

Просмотреть файл

@ -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": "<input type=\"text\" autofocus=\"\" name=\"q\" class=\"font-daniel font-bold block w-64 p-4 pb-3 mb-8 w-80 sm:w-128 lg:w-192 roun…\" placeholder=\"That's what she said\" required=\"\" value=\"\">",
"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": "<form class=\"flex flex-col items-center\">",
"nodeLabel": "search any line from The Office\nSEARCHRANDOM"
}
}
],
"labels": []
}
}

Просмотреть файл

@ -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": [],

Просмотреть файл

@ -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": "<input class=\"p-2 mr-2 rounded-md flex-grow\" type=\"text\" aria-label=\"search text\" value=\"call of duty\">",
"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": "<form class=\"flex flex-row items-center mb-4\">",
"nodeLabel": "Go"
}
}
],
"labels": []
}
}

Просмотреть файл

@ -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": "<input type=\"hidden\" name=\"type\" value=\"correction\">",
"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": "<input type=\"email\" class=\"rounded-md\" name=\"email\">",
"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": "<input type=\"text\" class=\"rounded-md\" name=\"episode\">",
"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": "<input type=\"url\" class=\"rounded-md w-full\" name=\"url\" value=\"\">",
"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": "<textarea class=\"w-full rounded-md\" name=\"message\" required=\"\">",
"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": "<form class=\"flex flex-col\">",
"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": "<label class=\"mt-4\">",
"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": "<label class=\"mt-4\">",
"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": "<label class=\"mt-4\">",
"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": "<label class=\"mt-4\">",
"nodeLabel": "Explanation*"
}
}
]
}
}

Просмотреть файл

@ -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"

Просмотреть файл

@ -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: '<input type="password" onpaste="return false"/>',
},
},
];
},
},
},
})
.then(artifact => {
assert.ok(typeof artifact === 'object');
assert.ok(artifact[0].node.snippet.length > 0);
});
});
});

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -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": "<input type=\"password\" onpaste=\"event.preventDefault();\">",
"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": "<input type=\"password\" onpaste=\"return false;\">",
"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"

Просмотреть файл

@ -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",

9
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"
},

9
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": "البروتوكول"
},

9
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": "Протокол"
},

9
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"
},

9
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"
},

9
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"
},

9
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"
},

9
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": "Πρωτόκολλο"
},

9
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"
},

12
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"

9
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]"
},

12
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́ôćôĺ"

9
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"
},

9
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"
},

9
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"
},

9
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"
},

9
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"
},

9
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": "פרוטוקול"
},

9
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": "प्रोटोकॉल"
},

9
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"
},

9
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"
},

9
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"
},

9
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"
},

9
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": "プロトコル"
},

9
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": "프로토콜"
},

9
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"
},

9
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"
},

9
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"
},

9
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"
},

9
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ół"
},

9
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"
},

9
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"
},

9
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"
},

9
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": "Протокол"
},

9
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"
},

9
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"
},

9
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"
},

9
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": "Протокол"
},

9
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"
},

9
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": "நெறிமுறை"
},

9
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": "ప్రోటోకాల్"
},

9
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": "โปรโตคอล"
},

9
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"
},

9
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": "Протокол"
},

9
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"
},

9
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": "通訊協定"
},

9
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": "通訊協定"
},

9
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": "协议"
},

Просмотреть файл

@ -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",

7
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<Artifacts.OptimizedImage | Artifacts.OptimizedImageError>;
/** 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<Crdp.Debugger.ScriptParsedEvent, 'url'|'embedderName'> {
/**
* 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;
}