1 | 'use strict';
|
2 |
|
3 | const fs = require('fs');
|
4 | const { consoleError, consoleInfo } = require('../helpers/console');
|
5 | const filename = 'yaspeller_report.junit.xml';
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | const msToSec = (ms) => ms / 1000;
|
11 |
|
12 | module.exports = {
|
13 | name: 'junit',
|
14 | onComplete(data) {
|
15 | try {
|
16 | const header = '<?xml version="1.0" encoding="UTF-8"?>\n<testsuites><testsuite name="speller" time="">\n';
|
17 | const footer = '\n</testsuite></testsuites>';
|
18 | const items = data.map(([, item]) => {
|
19 | const errors = item.data.map(error =>
|
20 | `<error message="${error.word} ${error.suggest ? '-> ' + error.suggest.join(', ') : ''}"/>`
|
21 | ).join('');
|
22 | return `<testcase classname="${item.resource}" name="${item.resource}" file="${item.resource}" time="${msToSec(item.time)}">
|
23 | ${errors}
|
24 | </testcase>`;
|
25 | }).join('\n');
|
26 | fs.writeFileSync(filename, header + items + footer);
|
27 | consoleInfo(`Junit report: ./${filename}`);
|
28 | } catch (e) {
|
29 | consoleError(e);
|
30 | }
|
31 | }
|
32 | };
|