UNPKG

json-reporter

Version:

Common plugin for testplane and hermione which is intended to aggregate the results of tests running

73 lines (57 loc) 1.88 kB
'use strict'; const _ = require('lodash'); const Promise = require('bluebird'); const fs = Promise.promisifyAll(require('fs-extra')); const DataCollector = require('./data-collector'); module.exports = class Collector { static create(toolCollector, config) { return new Collector(toolCollector, config); } constructor(toolCollector, config) { this._toolCollector = toolCollector; this._dataCollector = DataCollector.create(); this._config = config; } addSuccess(result) { this._addTestResult(result, {status: 'success'}); } addFail(result) { const {err: {message, stack}} = result; this._addTestResult(result, { status: 'fail', errorReason: {message, stack}, retries: [] }); } addSkipped(result) { this._addTestResult(result, { status: 'skipped', skipReason: this._toolCollector.getSkipReason(result) }); } addRetry(result) { const {startTime, duration, err: {message, stack}} = result; this._addTestResult(result, { status: 'fail', errorReason: {message, stack}, retries: [{message, stack, startTime, duration}] }); } addError(result) { const {message, stack} = result; this._addTestResult(result, { status: 'error', errorReason: {message, stack}, retries: [] }); } saveFile() { return fs.outputJsonAsync(this._config.path, this._dataCollector.getData()) .catch(console.error); } _addTestResult(result, props) { const configuredResult = this._toolCollector.configureTestResult(result, this._config); const test = _.extend(configuredResult, props); this._dataCollector.append(test); } };