-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcustomMochaReporter.js
43 lines (35 loc) · 1.48 KB
/
customMochaReporter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var Mochawesome = require('mochawesome');
var MochaJUnitReporter = require('mocha-junit-reporter');
var fs = require('fs');
var path = require('path');
var _ = require('lodash');
module.exports = CustomMochaReporter;
function CustomMochaReporter (runner, options) {
var opts = this.getCustomOptions(options);
var artifactsDir = _.get(options, 'reporterOptions.artifactsDir', '');
if (artifactsDir) { artifactsDir += '/'; }
var awesomeOptions = _.clone(options);
opts.awesomeOptions.reporterOptions.reportDir = artifactsDir + opts.awesomeOptions.reporterOptions.reportDir;
awesomeOptions.reporterOptions = opts.awesomeOptions.reporterOptions;
Mochawesome(runner, awesomeOptions);
var jUnitOptions = _.clone(options);
opts.jUnitOptions.reporterOptions.mochaFile = artifactsDir + opts.jUnitOptions.reporterOptions.mochaFile;
jUnitOptions.reporterOptions = opts.jUnitOptions.reporterOptions;
new MochaJUnitReporter(runner, jUnitOptions);
}
CustomMochaReporter.prototype.getCustomOptions = function (options) {
var customOptionsFile = _.get(options, 'reporterOptions.configFile');
var customOptions;
if (customOptionsFile) {
customOptionsFile = path.resolve(customOptionsFile);
customOptions = fs.readFileSync(customOptionsFile).toString();
try {
customOptions = JSON.parse(customOptions);
}
catch (e) {
console.error(e);
throw e;
}
}
return customOptions;
};