sitespeed.io/lib/plugins/browsertime/axeAggregator.js

46 lines
1.1 KiB
JavaScript

'use strict';
const Stats = require('fast-stats').Stats;
const statsHelpers = require('../../support/statsHelpers');
class AxeAggregator {
constructor(options) {
this.options = options;
this.axeViolations = {
critical: new Stats(),
serious: new Stats(),
minor: new Stats(),
moderate: new Stats()
};
}
addStats(axeData) {
const violations = {
critical: 0,
serious: 0,
minor: 0,
moderate: 0
};
for (let violation of axeData.violations) {
violations[violation.impact] += 1;
}
for (let type of Object.keys(violations)) {
this.axeViolations[type].push(violations[type]);
}
return violations;
}
summarizeStats() {
return {
violations: {
critical: statsHelpers.summarizeStats(this.axeViolations.critical),
serious: statsHelpers.summarizeStats(this.axeViolations.serious),
minor: statsHelpers.summarizeStats(this.axeViolations.minor),
moderate: statsHelpers.summarizeStats(this.axeViolations.moderate)
}
};
}
}
module.exports = AxeAggregator;