Skip to content

Commit

Permalink
fix(publish-metadata): use fail message for rules with reviewOnFail:t…
Browse files Browse the repository at this point in the history
…rue (#2987)

* fix(publish-metadata): use fail message for rules with reviewOnFail:true

* revert

* fix tests
  • Loading branch information
straker authored and WilcoFiers committed Jun 17, 2021
1 parent de35215 commit b2d8daa
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 11 deletions.
23 changes: 12 additions & 11 deletions lib/core/utils/publish-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function getIncompleteReason(checkData, messages) {
}
if (checkData && checkData.missingData) {
try {
var msg = messages.incomplete[checkData.missingData[0].reason];
const msg = messages.incomplete[checkData.missingData[0].reason];
if (!msg) {
throw new Error();
}
Expand All @@ -46,16 +46,17 @@ function getIncompleteReason(checkData, messages) {
* Extend checksData with the correct result message
* @param {Object} checksData The check result data
* @param {Boolean} shouldBeTrue Result of pass/fail check run
* @param {Object} rule The rule metadata
* @return {Function}
* @private
*/
function extender(checksData, shouldBeTrue) {
function extender(checksData, shouldBeTrue, rule) {
return check => {
var sourceData = checksData[check.id] || {};
var messages = sourceData.messages || {};
var data = Object.assign({}, sourceData);
const sourceData = checksData[check.id] || {};
const messages = sourceData.messages || {};
const data = Object.assign({}, sourceData);
delete data.messages;
if (check.result === undefined) {
if (!rule.reviewOnFail && check.result === undefined) {
// handle old doT template
if (
typeof messages.incomplete === 'object' &&
Expand Down Expand Up @@ -89,14 +90,14 @@ function extender(checksData, shouldBeTrue) {
*/
function publishMetaData(ruleResult) {
// TODO: es-modules_audit
var checksData = axe._audit.data.checks || {};
var rulesData = axe._audit.data.rules || {};
var rule = findBy(axe._audit.rules, 'id', ruleResult.id) || {};
const checksData = axe._audit.data.checks || {};
const rulesData = axe._audit.data.rules || {};
const rule = findBy(axe._audit.rules, 'id', ruleResult.id) || {};

ruleResult.tags = clone(rule.tags || []);

var shouldBeTrue = extender(checksData, true);
var shouldBeFalse = extender(checksData, false);
const shouldBeTrue = extender(checksData, true, rule);
const shouldBeFalse = extender(checksData, false, rule);
ruleResult.nodes.forEach(detail => {
detail.any.forEach(shouldBeTrue);
detail.all.forEach(shouldBeTrue);
Expand Down
104 changes: 104 additions & 0 deletions test/core/utils/publish-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -1136,4 +1136,108 @@ describe('axe.utils.publishMetaData', function() {
});
});
});

it('should use fail message for rules with "reviewOnFaill: true"', function() {
axe._load({
rules: [
{
id: 'cats',
reviewOnFail: true
}
],
data: {
rules: {
cats: {
help: function() {
return 'cats-rule';
}
}
},
checks: {
'cats-NONE': {
messages: {
fail: function() {
return 'fail-NONE';
},
pass: function() {
return 'pass-NONE';
}
}
},
'cats-ANY': {
messages: {
fail: function() {
return 'fail-ANY';
},
pass: function() {
return 'pass-ANY';
}
}
},
'cats-ALL': {
messages: {
fail: function() {
return 'fail-ALL';
},
pass: function() {
return 'pass-ALL';
}
}
}
}
}
});

var result = {
id: 'cats',
nodes: [
{
any: [
{
result: undefined,
id: 'cats-ANY'
}
],
none: [
{
result: undefined,
id: 'cats-NONE'
}
],
all: [
{
result: undefined,
id: 'cats-ALL'
}
]
}
]
};
axe.utils.publishMetaData(result);
assert.deepEqual(result.nodes, [
{
any: [
{
result: undefined,
id: 'cats-ANY',
message: 'fail-ANY'
}
],
none: [
{
result: undefined,
id: 'cats-NONE',
message: 'fail-NONE'
}
],
all: [
{
result: undefined,
id: 'cats-ALL',
message: 'fail-ALL'
}
]
}
]);
});
});

0 comments on commit b2d8daa

Please sign in to comment.