You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
snabbdom/karma-benchmark-reporter.cjs

49 lines
1.3 KiB
JavaScript

const chalk = require('chalk')
const Table = require('tty-table')
exports['reporter:benchmark'] = ['type', BenchmarkReporter]
function BenchmarkReporter (baseReporterDecorator) {
baseReporterDecorator(this)
const resultsPerBrowser = new Map()
this.onBrowserInfo = function (browser, info) {
if (!info.benchmark) return
if (!resultsPerBrowser.has(browser.name)) {
resultsPerBrowser.set(browser.name, info.benchmark)
}
}
this.onRunComplete = function () {
if (resultsPerBrowser.size === 0) return
this.writeCommonMsg(chalk.underline.bold('\nBENCHMARK (times in seconds):\n'))
resultsPerBrowser.forEach((results, browserName) => {
this.writeCommonMsg(` ${chalk.bold(browserName)}:\n`)
const rows = results.map(({ cur, ref }, i) => ({
i: String(i),
cur: cur.toFixed(0),
ref: ref.toFixed(0),
diff: `${(cur / ref * 100).toFixed(2)}%`,
}))
const header = [
{
value: 'i',
align: 'right'
},
{
value: 'ref',
align: 'right'
},
{
value: 'cur',
align: 'right'
},
{
value: 'diff',
align: 'right'
},
]
console.log(Table(header, rows).render())
})
resultsPerBrowser.clear()
}
}