Skip to content

Commit a0f3ad8

Browse files
committed
handled retries in testng
1 parent fd66f39 commit a0f3ad8

File tree

8 files changed

+584
-4
lines changed

8 files changed

+584
-4
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "test-results-parser",
3-
"version": "0.0.3",
3+
"version": "0.0.4",
44
"description": "Parse test results from JUnit, TestNG, xUnit and many more",
55
"main": "src/index.js",
66
"types": "./src/index.d.ts",

src/models/TestResult.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ declare class TestResult {
77
failed: number;
88
errors: number;
99
skipped: number;
10+
retried: number;
1011
duration: number;
1112
status: string;
1213
suites: TestSuite[];

src/models/TestResult.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class TestResult {
88
this.failed = 0;
99
this.errors = 0;
1010
this.skipped = 0;
11+
this.retried = 0;
1112
this.duration = 0;
1213
this.status = 'NA';
1314
this.suites = [];

src/parsers/testng.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ function getTestSuiteFromTest(rawTest) {
2727
suite.total = rawTestMethods.length;
2828
suite.passed = rawTestMethods.filter(test => test['@_status'] === 'PASS').length;
2929
suite.failed = rawTestMethods.filter(test => test['@_status'] === 'FAIL').length;
30+
suite.skipped = rawTestMethods.filter(test => test['@_status'] === 'SKIP').length;
31+
if (suite.skipped) {
32+
suite.total = suite.total - suite.skipped;
33+
}
3034
suite.status = suite.total === suite.passed ? 'PASS' : 'FAIL';
3135
for (let i = 0; i < rawTestMethods.length; i++) {
3236
suite.cases.push(getTestCase(rawTestMethods[i]));
@@ -50,6 +54,10 @@ function getTestSuite(rawSuite) {
5054
suite.total = rawTestMethods.length;
5155
suite.passed = rawTestMethods.filter(test => test['@_status'] === 'PASS').length;
5256
suite.failed = rawTestMethods.filter(test => test['@_status'] === 'FAIL').length;
57+
suite.skipped = rawTestMethods.filter(test => test['@_status'] === 'SKIP').length;
58+
if (suite.skipped) {
59+
suite.total = suite.total - suite.skipped;
60+
}
5361
suite.status = suite.total === suite.passed ? 'PASS' : 'FAIL';
5462
for (let i = 0; i < rawTestMethods.length; i++) {
5563
suite.cases.push(getTestCase(rawTestMethods[i]));
@@ -65,10 +73,16 @@ function parse(options) {
6573
result.failed = results['@_failed'];
6674
result.passed = results['@_passed'];
6775
result.total = results['@_total'];
76+
if (results['@_retried']) {
77+
result.retried = results['@_retried'];
78+
}
6879
const ignored = results['@_ignored'];
6980
if (ignored) {
7081
result.total = result.total - ignored;
7182
}
83+
if (result.retried) {
84+
result.total = result.total - result.retried;
85+
}
7286

7387
const suites = results.suite;
7488
const suitesWithTests = suites.filter(suite => suite.test);

0 commit comments

Comments
 (0)