UNPKG

2.23 kBJavaScriptView Raw
1/**
2 * Juint Reporter
3 * @type {JunitReport}
4 */
5class JunitReport {
6
7 /**
8 * Constructor of JunitReport
9 * @param {Object} jsonData - cucumber json report
10 */
11 constructor(jsonData) {
12 this.jsonData = JSON.parse(jsonData);
13 }
14
15 /**
16 * Build xml
17 * @example
18 * new JunitReport(jsonDate).build();
19 */
20 build() {
21 return {
22 testsuites: this.jsonData.map((testSuiteData) => {
23 return {
24 testsuite: {
25 $: this._getTestSuiteAttrs(testSuiteData),
26 properties: this._getProperties(testSuiteData),
27 testcase: this._getTestCases(testSuiteData)
28 }
29 }
30 })
31 }
32 }
33
34 /**
35 * Get test cases data
36 * @param {Array<Object>} testSuiteData
37 * @return {Array<Object>}
38 * @private
39 */
40 _getTestCases(testSuiteData) {
41 return testSuiteData.elements.map((testCase) => {
42 let tc = {
43 $: {
44 name: testCase.name,
45 classname: testSuiteData.name
46 }
47 };
48 const failedStep = testCase.steps.find((testStep) => {
49 return testStep.result.status === "failed"
50 });
51
52 if (failedStep) {
53 tc.failure = failedStep.result.error_message
54 }
55 return tc
56 })
57 }
58
59 /**
60 * Get properties data of test suite
61 * @param {Object} testSuiteData
62 * @return {Array<Object>}
63 * @private
64 */
65 _getProperties(testSuiteData) {
66 return [
67 {
68 property: {
69 $: {
70 name: "URI",
71 value: testSuiteData.uri
72 }
73 }
74 }
75 ]
76 }
77
78 /**
79 * Get test suite attrs
80 * @param {Object} testSuiteData
81 * @return {{name, package, id}}
82 * @private
83 */
84 _getTestSuiteAttrs(testSuiteData) {
85 return {
86 name: testSuiteData.name,
87 package: testSuiteData.name,
88 id: testSuiteData.name
89 }
90 }
91}
92
93
94module.exports = JunitReport;
\No newline at end of file