current commit
260809.2 · benchmark: add test runner hooks and options
'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);
  });
}