From 75ab9c52903f1a40b537b3121685164c8cef9bc9 Mon Sep 17 00:00:00 2001 From: Giovanny Andres Gongora Granada Date: Mon, 26 Sep 2022 21:29:38 +0200 Subject: [PATCH] make the test results fit in a table with timestamps --- src/test-runner/index.ts | 1 + src/utils/tableReporter.ts | 49 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/utils/tableReporter.ts diff --git a/src/test-runner/index.ts b/src/test-runner/index.ts index b5c61bb846..97cfb0e2ff 100644 --- a/src/test-runner/index.ts +++ b/src/test-runner/index.ts @@ -31,6 +31,7 @@ const debug = require("debug")("zombie::test-runner"); const { assert, expect } = chai; const { Test, Suite } = Mocha; const mocha = new Mocha(); +mocha.reporter("../utils/tableReporter"); import { JSDOM } from "jsdom"; import { Environment } from "nunjucks"; diff --git a/src/utils/tableReporter.ts b/src/utils/tableReporter.ts new file mode 100644 index 0000000000..c1ff98871e --- /dev/null +++ b/src/utils/tableReporter.ts @@ -0,0 +1,49 @@ +import Mocha from "mocha"; + +import { CreateLogTable } from "../utils/tableCli"; +import { decorators } from "../utils/colors"; + +const { EVENT_RUN_END, EVENT_TEST_FAIL, EVENT_TEST_PASS } = + Mocha.Runner.constants; + +interface TableReporterProps { + runner: Mocha.Runner; +} + +export class TableReporter { + constructor({ runner }: TableReporterProps) { + const stats: any = runner.stats; + + const logTable = new CreateLogTable({ + head: [ + { + colSpan: 2, + hAlign: "center", + content: `${decorators.green("Test Results")}`, + }, + ], + colWidths: [30, 100], + }); + + runner + .on(EVENT_TEST_PASS, (test: any) => { + logTable.pushTo([[new Date(), test.fullTitle()]]); + }) + .on(EVENT_TEST_FAIL, (test: any, err: any) => { + logTable.pushTo([[new Date(), test.fullTitle()]]); + }) + .once(EVENT_RUN_END, () => { + logTable.pushTo([ + [ + { + colSpan: 2, + hAlign: "left", + content: `end: ${stats.passes}/${ + stats.passes + stats.failures + } ok`, + }, + ], + ]); + }); + } +}