var clean = require('matcha/lib/matcha/reporters/clean'); function average(list) { if (!list.length) return 0; var sum = list.reduce(function(previous, current) { return previous + current; }); return (sum / list.length).toFixed(0); } // Like clean, but also produces an average: module.exports = function(runner, utils) { var humanize = utils.humanize; var padBefore = utils.padBefore; var color = utils.color; var results = {}; var currentResults = []; runner.on('bench end', function(benchResults) { currentResults.push(benchResults.ops); }); runner.on('suite end', function(suite) { var avg = humanize(average(currentResults)); console.log(padBefore(avg + ' op/s', 22) + ' ยป ' + suite.title); console.log(); results[suite.title] = avg; currentResults = []; }); runner.on('end', function() { for (var k in results) { console.log(color(padBefore(k, 30) + ': ', 'gray') + results[k] + ' op/s'); } console.log(); }); clean(runner, utils); };