Files
node/benchmark/test_runner/hooks.js
T
Luan Muniz 3458dead5a benchmark: add test runner hooks and options
Add benchmarks for node:test hooks and test options.

The hooks benchmark covers before, after, beforeEach,
and afterEach, with a none mode as the baseline.

The test options benchmark covers skip and todo behavior.
This adds coverage for part of the benchmark/test_runner gaps
tracked in the issue.

Refs: https://github.com/nodejs/node/issues/55723
Signed-off-by: Luan Muniz <luan@luanmuniz.com.br>
PR-URL: https://github.com/nodejs/node/pull/63754
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
2026-08-09 07:43:52 +00:00

52 lines
988 B
JavaScript

'use strict';
const common = require('../common');
const { finished } = require('node:stream/promises');
const reporter = require('../fixtures/empty-test-reporter');
const {
after,
afterEach,
before,
beforeEach,
describe,
it,
} = require('node:test');
const bench = common.createBenchmark(main, {
n: [1000],
hook: ['before', 'after', 'beforeEach', 'afterEach'],
}, {
// We don't want to test the reporter here.
flags: ['--test-reporter=./benchmark/fixtures/empty-test-reporter.js'],
});
const hookList = {
before: before,
after: after,
beforeEach: beforeEach,
afterEach: afterEach,
};
const noop = () => {};
function run(loopAmount, hookFn) {
for (let i = 0; i < loopAmount; i++) {
describe(`${i}`, () => {
hookFn(noop);
it(`${i}`, noop);
});
}
return finished(reporter);
}
function main(params) {
const hookFn = hookList[params.hook];
bench.start();
run(params.n, hookFn).then(() => {
bench.end(params.n);
});
}