Skip to content

Commit db3f324

Browse files
authored
All audits must specify helpText and failureDescription (#2737)
1 parent ac99084 commit db3f324

File tree

15 files changed

+25
-13
lines changed

15 files changed

+25
-13
lines changed

docs/recipes/custom-audit/searchable-audit.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class LoadAudit extends Audit {
2020
category: 'MyCustomCategory',
2121
name: 'searchable-audit',
2222
description: 'Search box initialized and ready',
23+
failureDescription: 'Search box slow to initialize',
2324
helpText: 'Used to measure time from navigationStart to when the search' +
2425
' box is initialized and ready to search.',
2526

lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ class PasswordInputsCanBePastedIntoAudit extends Audit {
1717
name: 'password-inputs-can-be-pasted-into',
1818
description: 'Allows users to paste into password fields',
1919
failureDescription: 'Prevents users to paste into password fields',
20-
helpText: '',
20+
helpText: 'Preventing password pasting undermines good security policy. ' +
21+
'[Learn more](https://www.ncsc.gov.uk/blog-post/let-them-paste-passwords)',
2122
requiredArtifacts: ['PasswordInputsWithPreventedPaste']
2223
};
2324
}

lighthouse-core/config/config.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,17 @@ function assertValidAudit(auditDefinition, auditPath) {
193193
if (typeof auditDefinition.meta.failureDescription !== 'string' &&
194194
auditDefinition.meta.informative !== true &&
195195
auditDefinition.meta.scoringMode !== Audit.SCORING_MODES.NUMERIC) {
196-
log.warn('config', `${auditName} has no failureDescription and should.`);
196+
throw new Error(`${auditName} has no failureDescription and should.`);
197197
}
198198

199199
if (typeof auditDefinition.meta.helpText !== 'string') {
200200
throw new Error(
201201
`${auditName} has no meta.helpText property, or the property is not a string.`
202202
);
203+
} else if (auditDefinition.meta.helpText === '') {
204+
throw new Error(
205+
`${auditName} has an empty meta.helpText string. Please add a description for the UI.`
206+
);
203207
}
204208

205209
if (!Array.isArray(auditDefinition.meta.requiredArtifacts)) {

lighthouse-core/test/config/config-test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ describe('Config', () => {
3838
name: 'MyAudit',
3939
category: 'mine',
4040
description: 'My audit',
41-
helpText: '',
41+
failureDescription: 'My failing audit',
42+
helpText: '.',
4243
requiredArtifacts: []
4344
};
4445
}
@@ -443,6 +444,7 @@ describe('Config', () => {
443444
name: 'custom-audit',
444445
category: 'none',
445446
description: 'none',
447+
failureDescription: 'none',
446448
helpText: 'none',
447449
requiredArtifacts: [],
448450
};

lighthouse-core/test/fixtures/invalid-audits/missing-audit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class MissingRequiredArtifacts extends LighthouseAudit {
2525
name: 'missing-category',
2626
category: 'Custom',
2727
description: 'Missing required artifacts',
28-
helpText: '',
28+
helpText: 'This is missing required artifacts',
2929
requiredArtifacts: ['HTML']
3030
};
3131
}

lighthouse-core/test/fixtures/invalid-audits/missing-category.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class MissingRequiredArtifacts extends LighthouseAudit {
2424
return {
2525
name: 'missing-category',
2626
description: 'Missing required artifacts',
27-
helpText: '',
27+
helpText: 'This is missing a required category',
2828
requiredArtifacts: ['HTML']
2929
};
3030
}

lighthouse-core/test/fixtures/invalid-audits/missing-description.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class MissingRequiredArtifacts extends LighthouseAudit {
2424
return {
2525
name: 'missing-description',
2626
category: 'Custom',
27-
helpText: '',
27+
helpText: 'This is missing required description (and failure description)',
2828
requiredArtifacts: ['HTML']
2929
};
3030
}

lighthouse-core/test/fixtures/invalid-audits/missing-generate-audit-result.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class MissingRequiredArtifacts {
2323
category: 'Custom',
2424
name: 'missing-required-artifacts',
2525
description: 'Missing required artifacts',
26-
helpText: '',
26+
helpText: 'This is missing required artifacts',
2727
requiredArtifacts: ['HTML']
2828
};
2929
}

lighthouse-core/test/fixtures/invalid-audits/missing-help-text.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class MissingRequiredArtifacts extends LighthouseAudit {
2525
name: 'missing-description',
2626
category: 'Custom',
2727
description: 'Missing required artifacts',
28+
failureDescription: 'Missing required artifacts is failing',
2829
requiredArtifacts: ['HTML']
2930
};
3031
}

lighthouse-core/test/fixtures/invalid-audits/missing-name.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class MissingRequiredArtifacts extends LighthouseAudit {
2424
return {
2525
category: 'Custom',
2626
description: 'Missing name',
27-
helpText: '',
27+
helpText: 'This is missing required name',
2828
requiredArtifacts: ['HTML']
2929
};
3030
}

0 commit comments

Comments
 (0)