UNPKG

1.16 kBJavaScriptView Raw
1'use strict';
2
3const fs = require('fs');
4const { consoleError, consoleInfo } = require('../helpers/console');
5const filename = 'yaspeller_report.junit.xml';
6/**
7 * @param {number} ms
8 * @returns {number}
9 */
10const msToSec = (ms) => ms / 1000;
11
12module.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};