From 0841c8130ed6243a18f17c6b3778d9fcf2579f68 Mon Sep 17 00:00:00 2001 From: Michael Marcus Date: Thu, 27 Mar 2025 12:33:59 -0400 Subject: [PATCH] Feature: Add summary title Add new option `report-title` to add H1 title to the Markdown report Resolves #540 --- __tests__/__outputs__/dart-json.md | 1 + __tests__/__outputs__/dotnet-nunit.md | 1 + __tests__/__outputs__/dotnet-trx.md | 1 + .../fluent-validation-test-results.md | 1 + __tests__/__outputs__/jest-junit-eslint.md | 1 + __tests__/__outputs__/jest-junit.md | 1 + .../jest-react-component-test-results.md | 1 + __tests__/__outputs__/jest-test-results.md | 1 + __tests__/__outputs__/junit-with-message.md | 1 + __tests__/__outputs__/mocha-json.md | 1 + __tests__/__outputs__/mocha-test-results.md | 1 + .../__outputs__/provider-test-results.md | 1 + .../pulsar-test-results-no-merge.md | 1 + __tests__/__outputs__/pulsar-test-results.md | 1 + __tests__/__outputs__/rspec-json.md | 1 + .../__outputs__/silent-notes-test-results.md | 1 + __tests__/__outputs__/swift-xunit.md | 1 + dist/index.js | 27 ++++++++++++++++--- src/main.ts | 23 +++++++++++++--- src/report/get-report.ts | 6 ++++- 20 files changed, 65 insertions(+), 8 deletions(-) diff --git a/__tests__/__outputs__/dart-json.md b/__tests__/__outputs__/dart-json.md index 9805d20..37aa462 100644 --- a/__tests__/__outputs__/dart-json.md +++ b/__tests__/__outputs__/dart-json.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-1%20passed%2C%204%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/dotnet-nunit.md b/__tests__/__outputs__/dotnet-nunit.md index e33c66d..a706bb0 100644 --- a/__tests__/__outputs__/dotnet-nunit.md +++ b/__tests__/__outputs__/dotnet-nunit.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-3%20passed%2C%205%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/dotnet-trx.md b/__tests__/__outputs__/dotnet-trx.md index eedab46..0c6435d 100644 --- a/__tests__/__outputs__/dotnet-trx.md +++ b/__tests__/__outputs__/dotnet-trx.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-5%20passed%2C%205%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/fluent-validation-test-results.md b/__tests__/__outputs__/fluent-validation-test-results.md index 9337a62..7a1ef40 100644 --- a/__tests__/__outputs__/fluent-validation-test-results.md +++ b/__tests__/__outputs__/fluent-validation-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests passed successfully](https://img.shields.io/badge/tests-803%20passed%2C%201%20skipped-success)
Expand for details diff --git a/__tests__/__outputs__/jest-junit-eslint.md b/__tests__/__outputs__/jest-junit-eslint.md index d3ad9b9..a2052d4 100644 --- a/__tests__/__outputs__/jest-junit-eslint.md +++ b/__tests__/__outputs__/jest-junit-eslint.md @@ -1,3 +1,4 @@ +# Test Results ![Tests passed successfully](https://img.shields.io/badge/tests-1%20passed-success)
Expand for details diff --git a/__tests__/__outputs__/jest-junit.md b/__tests__/__outputs__/jest-junit.md index ed5a174..8b9086e 100644 --- a/__tests__/__outputs__/jest-junit.md +++ b/__tests__/__outputs__/jest-junit.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-1%20passed%2C%204%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/jest-react-component-test-results.md b/__tests__/__outputs__/jest-react-component-test-results.md index d71db4c..d8ff9a2 100644 --- a/__tests__/__outputs__/jest-react-component-test-results.md +++ b/__tests__/__outputs__/jest-react-component-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests passed successfully](https://img.shields.io/badge/tests-1%20passed-success)
Expand for details diff --git a/__tests__/__outputs__/jest-test-results.md b/__tests__/__outputs__/jest-test-results.md index 5b154f8..2c72c93 100644 --- a/__tests__/__outputs__/jest-test-results.md +++ b/__tests__/__outputs__/jest-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-4207%20passed%2C%202%20failed%2C%2030%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/junit-with-message.md b/__tests__/__outputs__/junit-with-message.md index 988d8fc..3c1197a 100644 --- a/__tests__/__outputs__/junit-with-message.md +++ b/__tests__/__outputs__/junit-with-message.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-1%20failed-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/mocha-json.md b/__tests__/__outputs__/mocha-json.md index 50419e1..29ad677 100644 --- a/__tests__/__outputs__/mocha-json.md +++ b/__tests__/__outputs__/mocha-json.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-1%20passed%2C%204%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/mocha-test-results.md b/__tests__/__outputs__/mocha-test-results.md index 8831d7b..dfc8903 100644 --- a/__tests__/__outputs__/mocha-test-results.md +++ b/__tests__/__outputs__/mocha-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests passed successfully](https://img.shields.io/badge/tests-833%20passed%2C%206%20skipped-success)
Expand for details diff --git a/__tests__/__outputs__/provider-test-results.md b/__tests__/__outputs__/provider-test-results.md index b2216ad..450a425 100644 --- a/__tests__/__outputs__/provider-test-results.md +++ b/__tests__/__outputs__/provider-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-268%20passed%2C%201%20failed-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/pulsar-test-results-no-merge.md b/__tests__/__outputs__/pulsar-test-results-no-merge.md index b1738a4..baf94dc 100644 --- a/__tests__/__outputs__/pulsar-test-results-no-merge.md +++ b/__tests__/__outputs__/pulsar-test-results-no-merge.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-1%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/pulsar-test-results.md b/__tests__/__outputs__/pulsar-test-results.md index a9a5290..ed2e54c 100644 --- a/__tests__/__outputs__/pulsar-test-results.md +++ b/__tests__/__outputs__/pulsar-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-793%20passed%2C%201%20failed%2C%2014%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/rspec-json.md b/__tests__/__outputs__/rspec-json.md index 7444608..8b9d300 100644 --- a/__tests__/__outputs__/rspec-json.md +++ b/__tests__/__outputs__/rspec-json.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-1%20passed%2C%201%20failed%2C%201%20skipped-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/__tests__/__outputs__/silent-notes-test-results.md b/__tests__/__outputs__/silent-notes-test-results.md index 34f5bab..b397c16 100644 --- a/__tests__/__outputs__/silent-notes-test-results.md +++ b/__tests__/__outputs__/silent-notes-test-results.md @@ -1,3 +1,4 @@ +# Test Results ![Tests passed successfully](https://img.shields.io/badge/tests-67%20passed%2C%2012%20skipped-success)
Expand for details diff --git a/__tests__/__outputs__/swift-xunit.md b/__tests__/__outputs__/swift-xunit.md index 6f9ed46..be1f937 100644 --- a/__tests__/__outputs__/swift-xunit.md +++ b/__tests__/__outputs__/swift-xunit.md @@ -1,3 +1,4 @@ +# Test Results ![Tests failed](https://img.shields.io/badge/tests-2%20passed%2C%201%20failed-critical) |Report|Passed|Failed|Skipped|Time| |:---|---:|---:|---:|---:| diff --git a/dist/index.js b/dist/index.js index dc37566..a6710fc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -307,6 +307,7 @@ class TestReporter { onlySummary = core.getInput('only-summary', { required: false }) === 'true'; useActionsSummary = core.getInput('use-actions-summary', { required: false }) === 'true'; badgeTitle = core.getInput('badge-title', { required: false }); + reportTitle = core.getInput('report-title', { required: false }); token = core.getInput('token', { required: true }); octokit; context = (0, github_utils_1.getCheckRunContext)(); @@ -399,10 +400,18 @@ class TestReporter { throw error; } } - const { listSuites, listTests, onlySummary, useActionsSummary, badgeTitle } = this; + const { listSuites, listTests, onlySummary, useActionsSummary, badgeTitle, reportTitle } = this; let baseUrl = ''; if (this.useActionsSummary) { - const summary = (0, get_report_1.getReport)(results, { listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle }); + const summary = (0, get_report_1.getReport)(results, { + listSuites, + listTests, + baseUrl, + onlySummary, + useActionsSummary, + badgeTitle, + reportTitle + }); core.info('Summary content:'); core.info(summary); await core.summary.addRaw(summary).write(); @@ -421,7 +430,15 @@ class TestReporter { }); core.info('Creating report summary'); baseUrl = createResp.data.html_url; - const summary = (0, get_report_1.getReport)(results, { listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle }); + const summary = (0, get_report_1.getReport)(results, { + listSuites, + listTests, + baseUrl, + onlySummary, + useActionsSummary, + badgeTitle, + reportTitle + }); core.info('Creating annotations'); const annotations = (0, get_annotations_1.getAnnotations)(results, this.maxAnnotations); const isFailed = this.failOnError && results.some(tr => tr.result === 'failed'); @@ -1800,7 +1817,8 @@ const defaultOptions = { baseUrl: '', onlySummary: false, useActionsSummary: true, - badgeTitle: 'tests' + badgeTitle: 'tests', + reportTitle: 'Test Results' }; function getReport(results, options = defaultOptions) { core.info('Generating check run summary'); @@ -1863,6 +1881,7 @@ function getByteLength(text) { } function renderReport(results, options) { const sections = []; + sections.push(`# ${options.reportTitle}`); const badge = getReportBadge(results, options); sections.push(badge); const runs = getTestRunsReport(results, options); diff --git a/src/main.ts b/src/main.ts index 31eda0d..109d75b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -47,6 +47,7 @@ class TestReporter { readonly onlySummary = core.getInput('only-summary', {required: false}) === 'true' readonly useActionsSummary = core.getInput('use-actions-summary', {required: false}) === 'true' readonly badgeTitle = core.getInput('badge-title', {required: false}) + readonly reportTitle = core.getInput('report-title', {required: false}) readonly token = core.getInput('token', {required: true}) readonly octokit: InstanceType readonly context = getCheckRunContext() @@ -164,11 +165,19 @@ class TestReporter { } } - const {listSuites, listTests, onlySummary, useActionsSummary, badgeTitle} = this + const {listSuites, listTests, onlySummary, useActionsSummary, badgeTitle, reportTitle} = this let baseUrl = '' if (this.useActionsSummary) { - const summary = getReport(results, {listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle}) + const summary = getReport(results, { + listSuites, + listTests, + baseUrl, + onlySummary, + useActionsSummary, + badgeTitle, + reportTitle + }) core.info('Summary content:') core.info(summary) @@ -188,7 +197,15 @@ class TestReporter { core.info('Creating report summary') baseUrl = createResp.data.html_url as string - const summary = getReport(results, {listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle}) + const summary = getReport(results, { + listSuites, + listTests, + baseUrl, + onlySummary, + useActionsSummary, + badgeTitle, + reportTitle + }) core.info('Creating annotations') const annotations = getAnnotations(results, this.maxAnnotations) diff --git a/src/report/get-report.ts b/src/report/get-report.ts index a16dba1..4557960 100644 --- a/src/report/get-report.ts +++ b/src/report/get-report.ts @@ -15,6 +15,7 @@ export interface ReportOptions { onlySummary: boolean useActionsSummary: boolean badgeTitle: string + reportTitle: string } const defaultOptions: ReportOptions = { @@ -23,7 +24,8 @@ const defaultOptions: ReportOptions = { baseUrl: '', onlySummary: false, useActionsSummary: true, - badgeTitle: 'tests' + badgeTitle: 'tests', + reportTitle: 'Test Results' } export function getReport(results: TestRunResult[], options: ReportOptions = defaultOptions): string { @@ -101,6 +103,8 @@ function getByteLength(text: string): number { function renderReport(results: TestRunResult[], options: ReportOptions): string[] { const sections: string[] = [] + sections.push(`# ${options.reportTitle}`) + const badge = getReportBadge(results, options) sections.push(badge)