diff --git a/__tests__/__outputs__/dotnet-trx.md b/__tests__/__outputs__/dotnet-trx.md
index 0fc9f7b..013649d 100644
--- a/__tests__/__outputs__/dotnet-trx.md
+++ b/__tests__/__outputs__/dotnet-trx.md
@@ -1,12 +1,11 @@

-## ❌ fixtures/dotnet-trx.trx
+## ❌ fixtures/dotnet-trx.trx
**11** tests were completed in **1s** with **5** passed, **5** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[DotnetTests.XUnitTests.CalculatorTests](#r0s0)|5✅|5❌|1⚪|118ms|
-### ❌ DotnetTests.XUnitTests.CalculatorTests
+|[DotnetTests.XUnitTests.CalculatorTests](#r0s0)|5✔️|5❌|1✖️|118ms|
+### ❌ DotnetTests.XUnitTests.CalculatorTests
```
-✅ Custom Name
❌ Exception_In_TargetTest
System.DivideByZeroException : Attempted to divide by zero.
❌ Exception_In_Test
@@ -15,17 +14,12 @@
Assert.Equal() Failure
Expected: 3
Actual: 2
-✅ Is_Even_Number(i: 2)
❌ Is_Even_Number(i: 3)
Assert.True() Failure
Expected: True
Actual: False
-✅ Passing_Test
-✅ Should be even number(i: 2)
❌ Should be even number(i: 3)
Assert.True() Failure
Expected: True
Actual: False
-⚪ Skipped_Test
-✅ Timeout_Test
```
\ No newline at end of file
diff --git a/__tests__/__snapshots__/dotnet-trx.test.ts.snap b/__tests__/__snapshots__/dotnet-trx.test.ts.snap
index 0301a56..4ef9479 100644
--- a/__tests__/__snapshots__/dotnet-trx.test.ts.snap
+++ b/__tests__/__snapshots__/dotnet-trx.test.ts.snap
@@ -1,5 +1,134 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`dotnet-trx tests matches report snapshot (only failed tests) 1`] = `
+TestRunResult {
+ "path": "fixtures/dotnet-trx.trx",
+ "suites": Array [
+ TestSuiteResult {
+ "groups": Array [
+ TestGroupResult {
+ "name": null,
+ "tests": Array [
+ TestCaseResult {
+ "error": undefined,
+ "name": "Custom Name",
+ "result": "success",
+ "time": 0.1371,
+ },
+ TestCaseResult {
+ "error": Object {
+ "details": "System.DivideByZeroException : Attempted to divide by zero.
+ at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.Unit\\\\Calculator.cs:line 9
+ at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 33",
+ "line": 9,
+ "message": "System.DivideByZeroException : Attempted to divide by zero.",
+ "path": "DotnetTests.Unit/Calculator.cs",
+ },
+ "name": "Exception_In_TargetTest",
+ "result": "failed",
+ "time": 0.8377,
+ },
+ TestCaseResult {
+ "error": Object {
+ "details": "System.Exception : Test
+ at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 39",
+ "line": 39,
+ "message": "System.Exception : Test",
+ "path": "DotnetTests.XUnitTests/CalculatorTests.cs",
+ },
+ "name": "Exception_In_Test",
+ "result": "failed",
+ "time": 2.5175,
+ },
+ TestCaseResult {
+ "error": Object {
+ "details": "Assert.Equal() Failure
+Expected: 3
+Actual: 2
+ at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 27",
+ "line": 27,
+ "message": "Assert.Equal() Failure
+Expected: 3
+Actual: 2",
+ "path": "DotnetTests.XUnitTests/CalculatorTests.cs",
+ },
+ "name": "Failing_Test",
+ "result": "failed",
+ "time": 3.8697,
+ },
+ TestCaseResult {
+ "error": undefined,
+ "name": "Is_Even_Number(i: 2)",
+ "result": "success",
+ "time": 0.0078,
+ },
+ TestCaseResult {
+ "error": Object {
+ "details": "Assert.True() Failure
+Expected: True
+Actual: False
+ at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 59",
+ "line": 59,
+ "message": "Assert.True() Failure
+Expected: True
+Actual: False",
+ "path": "DotnetTests.XUnitTests/CalculatorTests.cs",
+ },
+ "name": "Is_Even_Number(i: 3)",
+ "result": "failed",
+ "time": 0.41409999999999997,
+ },
+ TestCaseResult {
+ "error": undefined,
+ "name": "Passing_Test",
+ "result": "success",
+ "time": 0.1365,
+ },
+ TestCaseResult {
+ "error": undefined,
+ "name": "Should be even number(i: 2)",
+ "result": "success",
+ "time": 0.0097,
+ },
+ TestCaseResult {
+ "error": Object {
+ "details": "Assert.True() Failure
+Expected: True
+Actual: False
+ at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 67",
+ "line": 67,
+ "message": "Assert.True() Failure
+Expected: True
+Actual: False",
+ "path": "DotnetTests.XUnitTests/CalculatorTests.cs",
+ },
+ "name": "Should be even number(i: 3)",
+ "result": "failed",
+ "time": 0.6537000000000001,
+ },
+ TestCaseResult {
+ "error": undefined,
+ "name": "Skipped_Test",
+ "result": "skipped",
+ "time": 1,
+ },
+ TestCaseResult {
+ "error": undefined,
+ "name": "Timeout_Test",
+ "result": "success",
+ "time": 108.42580000000001,
+ },
+ ],
+ },
+ ],
+ "name": "DotnetTests.XUnitTests.CalculatorTests",
+ "totalTime": undefined,
+ },
+ ],
+ "totalTime": 1116,
+}
+`;
+
exports[`dotnet-trx tests matches report snapshot 1`] = `
TestRunResult {
"path": "fixtures/dotnet-trx.trx",
@@ -18,8 +147,8 @@ TestRunResult {
TestCaseResult {
"error": Object {
"details": "System.DivideByZeroException : Attempted to divide by zero.
- at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.Unit\\\\Calculator.cs:line 9
- at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 33",
+ at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.Unit\\\\Calculator.cs:line 9
+ at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 33",
"line": 9,
"message": "System.DivideByZeroException : Attempted to divide by zero.",
"path": "DotnetTests.Unit/Calculator.cs",
@@ -31,7 +160,7 @@ TestRunResult {
TestCaseResult {
"error": Object {
"details": "System.Exception : Test
- at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 39",
+ at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 39",
"line": 39,
"message": "System.Exception : Test",
"path": "DotnetTests.XUnitTests/CalculatorTests.cs",
@@ -45,7 +174,7 @@ TestRunResult {
"details": "Assert.Equal() Failure
Expected: 3
Actual: 2
- at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 27",
+ at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 27",
"line": 27,
"message": "Assert.Equal() Failure
Expected: 3
@@ -67,7 +196,7 @@ Actual: 2",
"details": "Assert.True() Failure
Expected: True
Actual: False
- at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 59",
+ at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 59",
"line": 59,
"message": "Assert.True() Failure
Expected: True
@@ -95,7 +224,7 @@ Actual: False",
"details": "Assert.True() Failure
Expected: True
Actual: False
- at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 67",
+ at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporting\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 67",
"line": 67,
"message": "Assert.True() Failure
Expected: True
@@ -1577,7 +1706,7 @@ TestRunResult {
},
TestCaseResult {
"error": undefined,
- "name": "Valid_email_addresses_aspnetcore_compatible(email: \\" @someDomain.com\\")",
+ "name": "Valid_email_addresses_aspnetcore_compatible(email: \\" @someDomain.com\\")",
"result": "success",
"time": 0.0173,
},
@@ -6268,4 +6397,4 @@ TestRunResult {
],
"totalTime": 1257,
}
-`;
+`;
\ No newline at end of file
diff --git a/__tests__/dotnet-trx.test.ts b/__tests__/dotnet-trx.test.ts
index d4d5dac..85ef75d 100644
--- a/__tests__/dotnet-trx.test.ts
+++ b/__tests__/dotnet-trx.test.ts
@@ -3,7 +3,7 @@ import * as path from 'path'
import {DotnetTrxParser} from '../src/parsers/dotnet-trx/dotnet-trx-parser'
import {ParseOptions} from '../src/test-parser'
-import {getReport} from '../src/report/get-report'
+import {getReport, ReportOptions} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('dotnet-trx tests', () => {
@@ -44,6 +44,32 @@ describe('dotnet-trx tests', () => {
fs.writeFileSync(outputPath, report)
})
+ it('matches report snapshot (only failed tests)', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'dotnet-trx.trx')
+ const outputPath = path.join(__dirname, '__outputs__', 'dotnet-trx-only-failed.md')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: ['DotnetTests.Unit/Calculator.cs', 'DotnetTests.XUnitTests/CalculatorTests.cs']
+ }
+
+ const parser = new DotnetTrxParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result).toMatchSnapshot()
+
+ const reportOptions: ReportOptions = {
+ listSuites: 'all',
+ listTests: 'failed',
+ onlySummary: false,
+ baseUrl: ''
+ }
+ const report = getReport([result], reportOptions)
+ fs.mkdirSync(path.dirname(outputPath), {recursive: true})
+ fs.writeFileSync(outputPath, report)
+ })
+
it('report from FluentValidation test results matches snapshot', async () => {
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'FluentValidation.Tests.trx')
const outputPath = path.join(__dirname, '__outputs__', 'fluent-validation-test-results.md')
diff --git a/src/report/get-report.ts b/src/report/get-report.ts
index 2cc1f16..0c449aa 100644
--- a/src/report/get-report.ts
+++ b/src/report/get-report.ts
@@ -1,7 +1,6 @@
import * as core from '@actions/core'
import {TestExecutionResult, TestRunResult, TestSuiteResult} from '../test-results'
import {Align, formatTime, Icon, link, table} from '../utils/markdown-utils'
-import {DEFAULT_LOCALE} from '../utils/node-utils'
import {getFirstNonEmptyLine} from '../utils/parse-utils'
import {slug} from '../utils/slugger'
@@ -80,9 +79,9 @@ function trimReport(lines: string[]): string {
}
function applySort(results: TestRunResult[]): void {
- results.sort((a, b) => a.path.localeCompare(b.path, DEFAULT_LOCALE))
+ results.sort((a, b) => a.path.localeCompare(b.path))
for (const res of results) {
- res.suites.sort((a, b) => a.name.localeCompare(b.name, DEFAULT_LOCALE))
+ res.suites.sort((a, b) => a.name.localeCompare(b.name))
}
}
@@ -232,6 +231,9 @@ function getTestsReport(ts: TestSuiteResult, runIndex: number, suiteIndex: numbe
}
const space = grp.name ? ' ' : ''
for (const tc of grp.tests) {
+ if (options.listTests === 'failed' && tc.result !== 'failed') {
+ continue
+ }
const result = getResultIcon(tc.result)
sections.push(`${space}${result} ${tc.name}`)
if (tc.error) {