axe-core
Version:
Accessibility engine for automated Web UI testing
38 lines (34 loc) • 1.17 kB
JavaScript
function copyToGroup(resultObject, subResult, group) {
var resultCopy = Object.assign({}, subResult);
resultCopy.nodes = (resultCopy[group] || []).concat();
axe.constants.resultGroups.forEach(group => {
delete resultCopy[group];
});
resultObject[group].push(resultCopy);
}
/**
* Calculates the result of a Rule based on its types and the result of its child Checks
* @param {RuleResult} ruleResult The RuleResult to calculate the result of
*/
axe.utils.aggregateResult = function(results) {
let resultObject = {};
// Create an array for each type
axe.constants.resultGroups.forEach(
groupName => (resultObject[groupName] = [])
);
// Fill the array with nodes
results.forEach(function(subResult) {
if (subResult.error) {
copyToGroup(resultObject, subResult, axe.constants.CANTTELL_GROUP);
} else if (subResult.result === axe.constants.NA) {
copyToGroup(resultObject, subResult, axe.constants.NA_GROUP);
} else {
axe.constants.resultGroups.forEach(function(group) {
if (Array.isArray(subResult[group]) && subResult[group].length > 0) {
copyToGroup(resultObject, subResult, group);
}
});
}
});
return resultObject;
};