UNPKG

@academyjs/rover

Version:

Rover allows you to learn programming interactively.

57 lines 1.64 kB
"use strict"; /** * Provides a factory function for a {@link StatsCollector} object. * @module */ Object.defineProperty(exports, "__esModule", { value: true }); const runner_1 = require("./runner"); const { EVENT_TEST_PASS, EVENT_TEST_FAIL, EVENT_SUITE_BEGIN, EVENT_RUN_BEGIN, EVENT_TEST_PENDING, EVENT_RUN_END, EVENT_TEST_END, } = runner_1.constants; const { Date } = global; /** * Provides stats such as test duration, number of tests passed / failed etc., by listening for * events emitted by `runner`. * * @param runner * Runner instance * @throws {TypeError} If falsy `runner` */ const createStatsCollector = (runner) => { /** * @type StatsCollector */ const stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0, }; if (!runner) { throw new TypeError("Missing runner argument"); } runner.stats = stats; runner.once(EVENT_RUN_BEGIN, function () { stats.start = new Date(); }); runner.on(EVENT_SUITE_BEGIN, function (suite) { suite.root || stats.suites++; }); runner.on(EVENT_TEST_PASS, function () { stats.passes++; }); runner.on(EVENT_TEST_FAIL, function () { stats.failures++; }); runner.on(EVENT_TEST_PENDING, function () { stats.pending++; }); runner.on(EVENT_TEST_END, function () { stats.tests++; }); runner.once(EVENT_RUN_END, function () { stats.end = new Date(); stats.duration = stats.end - stats.start; }); }; exports.default = createStatsCollector; //# sourceMappingURL=stats-collector.js.map