reg-cli 0.18.15 → 0.19.0-rc0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +155 -46
  2. package/dist/cli.cjs +221 -0
  3. package/dist/cli.d.cts +1 -0
  4. package/dist/cli.d.mts +1 -0
  5. package/dist/cli.mjs +221 -0
  6. package/dist/entry.cjs +119 -0
  7. package/dist/entry.d.cts +15 -0
  8. package/dist/entry.d.mts +15 -0
  9. package/dist/entry.mjs +118 -0
  10. package/dist/index.cjs +212 -0
  11. package/dist/index.d.cts +52 -0
  12. package/dist/index.d.mts +52 -0
  13. package/dist/index.mjs +206 -0
  14. package/dist/progress-BB7D-xke.mjs +28 -0
  15. package/dist/progress-UOiKHaTY.cjs +33 -0
  16. package/dist/reg.wasm +0 -0
  17. package/dist/rolldown-runtime-D_mwlA32.cjs +43 -0
  18. package/{report/ui/dist/worker.js → dist/shared/report-worker.js} +859 -247
  19. package/dist/tracing-7HO8hac9.mjs +378 -0
  20. package/dist/tracing-DlLL541f.cjs +445 -0
  21. package/dist/worker.cjs +143 -0
  22. package/dist/worker.d.cts +1 -0
  23. package/dist/worker.d.mts +1 -0
  24. package/dist/worker.mjs +142 -0
  25. package/dist/ximgdiff-DzkRRnkW.mjs +41 -0
  26. package/dist/ximgdiff-wmW1BH1H.cjs +41 -0
  27. package/package.json +62 -94
  28. package/dist/.keep +0 -0
  29. package/dist/cli.js +0 -214
  30. package/dist/diff.js +0 -80
  31. package/dist/icon.js +0 -12
  32. package/dist/image-finder.js +0 -25
  33. package/dist/index.js +0 -200
  34. package/dist/log.js +0 -21
  35. package/dist/process-adaptor.js +0 -40
  36. package/dist/report.js +0 -170
  37. package/dist/tracing.js +0 -169
  38. package/report/assets/favicon_failure.png +0 -0
  39. package/report/assets/favicon_success.png +0 -0
  40. package/report/sample/actual/sample.png +0 -0
  41. package/report/sample/diff/sample.png +0 -0
  42. package/report/sample/expected/sample.png +0 -0
  43. package/report/ui/dist/report.js +0 -123
  44. package/report/ui/dist/style.css +0 -1
  45. package/template/template.html +0 -20
  46. /package/{template → dist/shared}/worker_pre.js +0 -0
package/dist/diff.js DELETED
@@ -1,80 +0,0 @@
1
- "use strict";
2
-
3
- var _imgDiffJs = require("img-diff-js");
4
- var _md5File = _interopRequireDefault(require("md5-file"));
5
- var _path = _interopRequireDefault(require("path"));
6
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
- // $FlowIgnore
8
- // $FlowIgnore
9
- var getMD5 = file => new Promise((resolve, reject) => {
10
- (0, _md5File.default)(file, (err, hash) => {
11
- if (err) reject(err);
12
- resolve(hash);
13
- });
14
- });
15
- var isPassed = ({
16
- width,
17
- height,
18
- diffCount,
19
- thresholdPixel,
20
- thresholdRate
21
- }) => {
22
- if (typeof thresholdPixel === "number") {
23
- return diffCount <= thresholdPixel;
24
- } else if (typeof thresholdRate === "number") {
25
- var totalPixel = width * height;
26
- var ratio = diffCount / totalPixel;
27
- return ratio <= thresholdRate;
28
- }
29
- return diffCount === 0;
30
- };
31
- var createDiff = ({
32
- actualDir,
33
- expectedDir,
34
- diffDir,
35
- image,
36
- matchingThreshold,
37
- thresholdRate,
38
- thresholdPixel,
39
- enableAntialias
40
- }) => {
41
- return Promise.all([getMD5(_path.default.join(actualDir, image)), getMD5(_path.default.join(expectedDir, image))]).then(([actualHash, expectedHash]) => {
42
- if (actualHash === expectedHash) {
43
- if (!process || !process.send) return;
44
- return process.send({
45
- passed: true,
46
- image
47
- });
48
- }
49
- var diffImage = image.replace(/\.[^\.]+$/, ".png");
50
- return (0, _imgDiffJs.imgDiff)({
51
- actualFilename: _path.default.join(actualDir, image),
52
- expectedFilename: _path.default.join(expectedDir, image),
53
- diffFilename: _path.default.join(diffDir, diffImage),
54
- options: {
55
- threshold: matchingThreshold,
56
- includeAA: !enableAntialias
57
- }
58
- }).then(({
59
- width,
60
- height,
61
- diffCount
62
- }) => {
63
- var passed = isPassed({
64
- width,
65
- height,
66
- diffCount,
67
- thresholdPixel,
68
- thresholdRate
69
- });
70
- if (!process || !process.send) return;
71
- process.send({
72
- passed,
73
- image
74
- });
75
- });
76
- });
77
- };
78
- process.on('message', data => {
79
- createDiff(data);
80
- });
package/dist/icon.js DELETED
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TEARDROP = exports.MULTIPLICATION_X = exports.MINUS = exports.GREEK_CROSS = exports.CHECK_MARK = exports.BALLOT_X = void 0;
7
- var BALLOT_X = exports.BALLOT_X = '\u2718';
8
- var CHECK_MARK = exports.CHECK_MARK = '\u2714';
9
- var TEARDROP = exports.TEARDROP = '\u274B';
10
- var MULTIPLICATION_X = exports.MULTIPLICATION_X = '\u2716';
11
- var GREEK_CROSS = exports.GREEK_CROSS = '\u271A';
12
- var MINUS = exports.MINUS = '\u2212';
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.findImages = void 0;
7
- var _glob = _interopRequireDefault(require("glob"));
8
- var _path = _interopRequireDefault(require("path"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- // $FlowIgnore
11
- var difference = (arrA, arrB) => arrA.filter(a => !arrB.includes(a));
12
- var IMAGE_FILES = '/**/*.+(tiff|jpeg|jpg|gif|png|bmp)';
13
- var findImages = (expectedDir, actualDir) => {
14
- var expectedImages = _glob.default.sync(`${expectedDir}${IMAGE_FILES}`).map(p => _path.default.relative(expectedDir, p)).map(p => p[0] === _path.default.sep ? p.slice(1) : p);
15
- var actualImages = _glob.default.sync(`${actualDir}${IMAGE_FILES}`).map(p => _path.default.relative(actualDir, p)).map(p => p[0] === _path.default.sep ? p.slice(1) : p);
16
- var deletedImages = difference(expectedImages, actualImages);
17
- var newImages = difference(actualImages, expectedImages);
18
- return {
19
- expectedImages,
20
- actualImages,
21
- deletedImages,
22
- newImages
23
- };
24
- };
25
- exports.findImages = findImages;
package/dist/index.js DELETED
@@ -1,200 +0,0 @@
1
- "use strict";
2
-
3
- var _glob = _interopRequireDefault(require("glob"));
4
- var _makeDir = _interopRequireDefault(require("make-dir"));
5
- var _del = _interopRequireDefault(require("del"));
6
- var _fs = _interopRequireDefault(require("fs"));
7
- var _path = _interopRequireDefault(require("path"));
8
- var _lodash = require("lodash");
9
- var _log = _interopRequireDefault(require("./log"));
10
- var _report = _interopRequireDefault(require("./report"));
11
- var _bluebird = _interopRequireDefault(require("bluebird"));
12
- var _events = _interopRequireDefault(require("events"));
13
- var _processAdaptor = _interopRequireDefault(require("./process-adaptor"));
14
- var _imageFinder = require("./image-finder");
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- // $FlowIgnore
17
- // $FlowIgnore
18
- // $FlowIgnore
19
- // $FlowIgnore
20
- var copyImages = (actualImages, {
21
- expectedDir,
22
- actualDir
23
- }) => {
24
- return Promise.all(actualImages.map(image => new Promise((resolve, reject) => {
25
- try {
26
- _makeDir.default.sync(_path.default.dirname(_path.default.join(expectedDir, image)));
27
- var writeStream = _fs.default.createWriteStream(_path.default.join(expectedDir, image));
28
- _fs.default.createReadStream(_path.default.join(actualDir, image)).pipe(writeStream);
29
- writeStream.on('finish', err => {
30
- if (err) reject(err);
31
- resolve();
32
- });
33
- } catch (err) {
34
- reject(err);
35
- }
36
- })));
37
- };
38
- var compareImages = (emitter, {
39
- expectedImages,
40
- actualImages,
41
- dirs,
42
- matchingThreshold,
43
- thresholdPixel,
44
- thresholdRate,
45
- concurrency,
46
- enableAntialias
47
- }) => {
48
- var images = actualImages.filter(actualImage => expectedImages.includes(actualImage));
49
- concurrency = images.length < 20 ? 1 : concurrency || 4;
50
- var processes = (0, _lodash.range)(concurrency).map(() => new _processAdaptor.default(emitter));
51
- return _bluebird.default.map(images, image => {
52
- var p = processes.find(p => !p.isRunning());
53
- if (p) {
54
- return p.run({
55
- ...dirs,
56
- image,
57
- matchingThreshold,
58
- thresholdRate,
59
- thresholdPixel,
60
- enableAntialias
61
- });
62
- }
63
- }, {
64
- concurrency
65
- }).then(result => {
66
- processes.forEach(p => p.close());
67
- return result;
68
- }).filter(r => !!r);
69
- };
70
- var cleanupExpectedDir = (expectedDir, changedFiles) => {
71
- var paths = changedFiles.map(image => {
72
- var directories = expectedDir.split("\\");
73
- return escapeGlob(_path.default.posix.join(...directories, image));
74
- });
75
- // force: true needed to allow deleting outside working directory
76
- return (0, _del.default)(paths, {
77
- force: true
78
- });
79
- };
80
- var escapeGlob = fileName => {
81
- return fileName.replace(/(\*)/g, '[$1]').replace(/(\*)/g, '[$1]').replace(/(\?)/g, '[$1]').replace(/(\[)/g, '[$1]').replace(/(\])/g, '[$1]').replace(/(\{)/g, '[$1]').replace(/(\})/g, '[$1]').replace(/(\))/g, '[$1]').replace(/(\()/g, '[$1]').replace(/(\!)/g, '[$1]');
82
- };
83
- var aggregate = result => {
84
- var passed = result.filter(r => r.passed).map(r => r.image);
85
- var failed = result.filter(r => !r.passed).map(r => r.image);
86
- var diffItems = failed.map(image => image.replace(/\.[^\.]+$/, '.png'));
87
- return {
88
- passed,
89
- failed,
90
- diffItems
91
- };
92
- };
93
- var updateExpected = ({
94
- actualDir,
95
- expectedDir,
96
- diffDir,
97
- deletedImages,
98
- newImages,
99
- diffItems
100
- }) => {
101
- return cleanupExpectedDir(expectedDir, [...deletedImages, ...diffItems]).then(() => copyImages([...newImages, ...diffItems], {
102
- actualDir,
103
- expectedDir,
104
- diffDir
105
- })).then(() => {
106
- _log.default.success(`\nAll images are updated. `);
107
- });
108
- };
109
- module.exports = params => {
110
- var {
111
- actualDir,
112
- expectedDir,
113
- diffDir,
114
- json,
115
- concurrency = 4,
116
- update,
117
- report,
118
- junitReport,
119
- extendedErrors,
120
- urlPrefix,
121
- threshold,
122
- matchingThreshold = 0,
123
- thresholdRate,
124
- thresholdPixel,
125
- enableAntialias,
126
- enableClientAdditionalDetection
127
- } = params;
128
- var dirs = {
129
- actualDir,
130
- expectedDir,
131
- diffDir
132
- };
133
- var emitter = new _events.default();
134
- var {
135
- expectedImages,
136
- actualImages,
137
- deletedImages,
138
- newImages
139
- } = (0, _imageFinder.findImages)(expectedDir, actualDir);
140
- _makeDir.default.sync(expectedDir);
141
- _makeDir.default.sync(diffDir);
142
- setImmediate(() => emitter.emit('start'));
143
- compareImages(emitter, {
144
- expectedImages,
145
- actualImages,
146
- dirs,
147
- matchingThreshold,
148
- thresholdRate: thresholdRate || threshold,
149
- thresholdPixel,
150
- concurrency,
151
- enableAntialias: !!enableAntialias
152
- }).then(result => aggregate(result)).then(({
153
- passed,
154
- failed,
155
- diffItems
156
- }) => {
157
- return (0, _report.default)({
158
- passedItems: passed,
159
- failedItems: failed,
160
- newItems: newImages,
161
- deletedItems: deletedImages,
162
- expectedItems: update ? actualImages : expectedImages,
163
- actualItems: actualImages,
164
- diffItems,
165
- json: json || './reg.json',
166
- actualDir,
167
- expectedDir,
168
- diffDir,
169
- report: report || '',
170
- junitReport: junitReport || '',
171
- extendedErrors: !!extendedErrors,
172
- urlPrefix: urlPrefix || '',
173
- enableClientAdditionalDetection: !!enableClientAdditionalDetection
174
- });
175
- }).then(result => {
176
- deletedImages.forEach(image => emitter.emit('compare', {
177
- type: 'delete',
178
- path: image
179
- }));
180
- newImages.forEach(image => emitter.emit('compare', {
181
- type: 'new',
182
- path: image
183
- }));
184
- if (update) {
185
- return updateExpected({
186
- actualDir,
187
- expectedDir,
188
- diffDir,
189
- deletedImages,
190
- newImages,
191
- diffItems: result.diffItems
192
- }).then(() => {
193
- emitter.emit('update');
194
- return result;
195
- });
196
- }
197
- return result;
198
- }).then(result => emitter.emit('complete', result)).catch(err => emitter.emit('error', err));
199
- return emitter;
200
- };
package/dist/log.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var chalk = require('chalk');
8
- var _default = exports.default = {
9
- info(text) {
10
- console.log(chalk.cyan(text));
11
- },
12
- warn(text) {
13
- console.log(chalk.gray(text));
14
- },
15
- success(text) {
16
- console.log(chalk.green(text));
17
- },
18
- fail(text) {
19
- console.log(chalk.red(text));
20
- }
21
- };
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _child_process = require("child_process");
8
- var _path = _interopRequireDefault(require("path"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- // $FlowIgnore
11
- class ProcessAdaptor {
12
- constructor(emitter) {
13
- this._process = (0, _child_process.fork)(_path.default.resolve(__dirname, './diff.js'));
14
- this._isRunning = false;
15
- this._emitter = emitter;
16
- }
17
- isRunning() {
18
- return this._isRunning;
19
- }
20
- run(params) {
21
- return new Promise((resolve, reject) => {
22
- this._isRunning = true;
23
- if (!this._process || !this._process.send) resolve();
24
- this._process.send(params);
25
- this._process.once('message', result => {
26
- this._isRunning = false;
27
- this._emitter.emit('compare', {
28
- type: result.passed ? 'pass' : 'fail',
29
- path: result.image
30
- });
31
- resolve(result);
32
- });
33
- });
34
- }
35
- close() {
36
- if (!this._process || !this._process.kill) return;
37
- this._process.kill();
38
- }
39
- }
40
- exports.default = ProcessAdaptor;
package/dist/report.js DELETED
@@ -1,170 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _mustache = _interopRequireDefault(require("mustache"));
8
- var detectDiff = _interopRequireWildcard(require("x-img-diff-js"));
9
- var _fs = _interopRequireDefault(require("fs"));
10
- var _makeDir = _interopRequireDefault(require("make-dir"));
11
- var _path = _interopRequireDefault(require("path"));
12
- var xmlBuilder = _interopRequireWildcard(require("xmlbuilder2"));
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- // $FlowIgnore
16
- // $FlowIgnore
17
- // $FlowIgnore
18
- var loadFaviconAsDataURL = type => {
19
- var fname = _path.default.resolve(__dirname, `../report/assets/favicon_${type}.png`);
20
- var buffer = _fs.default.readFileSync(fname);
21
- return 'data:image/png;base64,' + buffer.toString('base64');
22
- };
23
- var encodeFilePath = filePath => {
24
- return filePath.split(_path.default.sep).map(p => encodeURIComponent(p)).join(_path.default.sep);
25
- };
26
- var createJSONReport = params => {
27
- return {
28
- failedItems: params.failedItems,
29
- newItems: params.newItems,
30
- deletedItems: params.deletedItems,
31
- passedItems: params.passedItems,
32
- expectedItems: params.expectedItems,
33
- actualItems: params.actualItems,
34
- diffItems: params.diffItems,
35
- actualDir: `${params.urlPrefix}${_path.default.relative(_path.default.dirname(params.json), params.actualDir)}`,
36
- expectedDir: `${params.urlPrefix}${_path.default.relative(_path.default.dirname(params.json), params.expectedDir)}`,
37
- diffDir: `${params.urlPrefix}${_path.default.relative(_path.default.dirname(params.json), params.diffDir)}`
38
- };
39
- };
40
- var createHTMLReport = params => {
41
- var file = _path.default.join(__dirname, '../template/template.html');
42
- var js = _fs.default.readFileSync(_path.default.join(__dirname, '../report/ui/dist/report.js'));
43
- var css = _fs.default.readFileSync(_path.default.join(__dirname, '../report/ui/dist/style.css'));
44
- var template = _fs.default.readFileSync(file);
45
- var json = {
46
- type: params.failedItems.length === 0 ? 'success' : 'danger',
47
- hasNew: params.newItems.length > 0,
48
- newItems: params.newItems.map(item => ({
49
- raw: item,
50
- encoded: encodeFilePath(item)
51
- })),
52
- hasDeleted: params.deletedItems.length > 0,
53
- deletedItems: params.deletedItems.map(item => ({
54
- raw: item,
55
- encoded: encodeFilePath(item)
56
- })),
57
- hasPassed: params.passedItems.length > 0,
58
- passedItems: params.passedItems.map(item => ({
59
- raw: item,
60
- encoded: encodeFilePath(item)
61
- })),
62
- hasFailed: params.failedItems.length > 0,
63
- failedItems: params.failedItems.map(item => ({
64
- raw: item,
65
- encoded: encodeFilePath(item)
66
- })),
67
- actualDir: params.fromJSON ? params.actualDir : `${params.urlPrefix}${_path.default.relative(_path.default.dirname(params.report), params.actualDir)}`,
68
- expectedDir: params.fromJSON ? params.expectedDir : `${params.urlPrefix}${_path.default.relative(_path.default.dirname(params.report), params.expectedDir)}`,
69
- diffDir: params.fromJSON ? params.diffDir : `${params.urlPrefix}${_path.default.relative(_path.default.dirname(params.report), params.diffDir)}`,
70
- ximgdiffConfig: {
71
- enabled: params.enableClientAdditionalDetection,
72
- workerUrl: `${params.urlPrefix}worker.js`
73
- }
74
- };
75
- var faviconType = json.hasFailed || json.hasNew || json.hasDeleted ? 'failure' : 'success';
76
- var view = {
77
- js,
78
- css,
79
- report: JSON.stringify(json),
80
- faviconData: loadFaviconAsDataURL(faviconType)
81
- };
82
- return _mustache.default.render(template.toString(), view);
83
- };
84
- var createJunitReport = params => {
85
- var failedTests = params.failedItems.length + params.newItems.length + params.deletedItems.length;
86
- var numberOfTests = failedTests + params.passedItems.length;
87
- var doc = xmlBuilder.create({
88
- version: '1.0'
89
- });
90
- var testsuitesElement = doc.ele('testsuites', {
91
- name: 'reg-cli tests',
92
- tests: numberOfTests,
93
- failures: failedTests
94
- });
95
- var testsuiteElement = testsuitesElement.ele('testsuite', {
96
- name: 'reg-cli',
97
- tests: numberOfTests,
98
- failures: failedTests
99
- });
100
- params.failedItems.forEach(item => {
101
- addFailedJunitTestElement(testsuiteElement, item, 'failed');
102
- });
103
- params.newItems.forEach(item => {
104
- if (params.extendedErrors) {
105
- addFailedJunitTestElement(testsuiteElement, item, 'newItem');
106
- } else {
107
- addPassedJunitTestElement(testsuiteElement, item);
108
- }
109
- });
110
- params.deletedItems.forEach(item => {
111
- if (params.extendedErrors) {
112
- addFailedJunitTestElement(testsuiteElement, item, 'deletedItem');
113
- } else {
114
- addPassedJunitTestElement(testsuiteElement, item);
115
- }
116
- });
117
- params.passedItems.forEach(item => {
118
- addPassedJunitTestElement(testsuiteElement, item);
119
- });
120
- return doc.end({
121
- prettyPrint: true
122
- });
123
- };
124
- function addPassedJunitTestElement(testsuiteElement, item) {
125
- testsuiteElement.ele('testcase', {
126
- name: item
127
- });
128
- }
129
- function addFailedJunitTestElement(testsuiteElement, item, reason) {
130
- testsuiteElement.ele('testcase', {
131
- name: item
132
- }).ele('failure', {
133
- message: reason
134
- });
135
- }
136
- function createXimdiffWorker(params) {
137
- var file = _path.default.join(__dirname, '../template/worker_pre.js');
138
- var moduleJs = _fs.default.readFileSync(_path.default.join(__dirname, '../report/ui/dist/worker.js'), 'utf8');
139
- var wasmLoaderJs = _fs.default.readFileSync(detectDiff.getBrowserJsPath(), 'utf8');
140
- var template = _fs.default.readFileSync(file);
141
- var ximgdiffWasmUrl = `${params.urlPrefix}detector.wasm`;
142
- return _mustache.default.render(template.toString(), {
143
- ximgdiffWasmUrl
144
- }) + '\n' + moduleJs + '\n' + wasmLoaderJs;
145
- }
146
- var _default = params => {
147
- if (!!params.report) {
148
- var html = createHTMLReport(params);
149
- _makeDir.default.sync(_path.default.dirname(params.report));
150
- _fs.default.writeFileSync(params.report, html);
151
- if (!!params.enableClientAdditionalDetection) {
152
- var workerjs = createXimdiffWorker(params);
153
- _fs.default.writeFileSync(_path.default.resolve(_path.default.dirname(params.report), 'worker.js'), workerjs);
154
- var wasmBuf = _fs.default.readFileSync(detectDiff.getBrowserWasmPath());
155
- _fs.default.writeFileSync(_path.default.resolve(_path.default.dirname(params.report), 'detector.wasm'), wasmBuf);
156
- }
157
- }
158
- if (!!params.junitReport) {
159
- var junitXml = createJunitReport(params);
160
- _makeDir.default.sync(_path.default.dirname(params.junitReport));
161
- _fs.default.writeFileSync(params.junitReport, junitXml);
162
- }
163
- var json = createJSONReport(params);
164
- if (!params.fromJSON) {
165
- _makeDir.default.sync(_path.default.dirname(params.json));
166
- _fs.default.writeFileSync(params.json, JSON.stringify(json));
167
- }
168
- return json;
169
- };
170
- exports.default = _default;