From 8409beeffb1adc51b04f3a337672507714b02736 Mon Sep 17 00:00:00 2001 From: dharmendrasha Date: Wed, 28 Dec 2022 15:40:43 +0530 Subject: [PATCH] copied files from phoenix-actions/test-reporting --- __tests__/__outputs__/dotnet-trx.md | 12 +- .../__snapshots__/dotnet-trx.test.ts.snap | 145 +++++++++++++++++- __tests__/dotnet-trx.test.ts | 28 +++- src/report/get-report.ts | 8 +- 4 files changed, 172 insertions(+), 21 deletions(-) diff --git a/__tests__/__outputs__/dotnet-trx.md b/__tests__/__outputs__/dotnet-trx.md index 0fc9f7b4..013649de 100644 --- a/__tests__/__outputs__/dotnet-trx.md +++ b/__tests__/__outputs__/dotnet-trx.md @@ -1,12 +1,11 @@ ![Tests failed](https://img.shields.io/badge/tests-5%20passed%2C%205%20failed%2C%201%20skipped-critical) -## ❌ 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 0301a56f..4ef9479a 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 d4d5dac7..85ef75de 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 2cc1f166..0c449aac 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) {