import { IResult, IReporter } from ".."; function logTests(results: IResult) { results.traverse({ test(result) { if (!result.skipped) { console.log(`${" ".repeat(result.nestLevel)}- ${ result.name }: ${result.passed ? "PASSED" : "FAILED"} (in ${result.elapsed} ms)`); } }, group(result) { if (!result.skipped) { console.log(`${" ".repeat(result.nestLevel)} [ ${ result.name } ] (${result.passedCount}/${result.totalCount})`); } return result.skipped; } }); } function createReporter(options: createReporter.Options = {}): IReporter { return function (results: IResult) { const testsOk = !results.errors.length; console.log(`@ ${results.date}`); if (testsOk) { console.log(`${results.name} passed.`); logTests(results); } else { console.log(`${results.name} tests failed!!`); if (results.definitionsOk) { logTests(results); } console.log(`=== ${results.errors.length} Errors:`); results.errors.forEach((error: Error, i: number) => { console.log(`--- ${i}. ${error.stack}`); }); } return testsOk; } } namespace createReporter { export interface Options { } } export default createReporter;