mirror of
https://github.com/dorny/test-reporter.git
synced 2025-12-15 22:07:09 +01:00
Feature: Add summary title
Add new option `report-title` to add H1 title to the Markdown report Resolves #540
This commit is contained in:
parent
d1bf678c89
commit
0841c8130e
20 changed files with 65 additions and 8 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
<details><summary>Expand for details</summary>
|
<details><summary>Expand for details</summary>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
<details><summary>Expand for details</summary>
|
<details><summary>Expand for details</summary>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
<details><summary>Expand for details</summary>
|
<details><summary>Expand for details</summary>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
<details><summary>Expand for details</summary>
|
<details><summary>Expand for details</summary>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
<details><summary>Expand for details</summary>
|
<details><summary>Expand for details</summary>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Test Results
|
||||||

|

|
||||||
|Report|Passed|Failed|Skipped|Time|
|
|Report|Passed|Failed|Skipped|Time|
|
||||||
|:---|---:|---:|---:|---:|
|
|:---|---:|---:|---:|---:|
|
||||||
|
|
|
||||||
27
dist/index.js
generated
vendored
27
dist/index.js
generated
vendored
|
|
@ -307,6 +307,7 @@ class TestReporter {
|
||||||
onlySummary = core.getInput('only-summary', { required: false }) === 'true';
|
onlySummary = core.getInput('only-summary', { required: false }) === 'true';
|
||||||
useActionsSummary = core.getInput('use-actions-summary', { required: false }) === 'true';
|
useActionsSummary = core.getInput('use-actions-summary', { required: false }) === 'true';
|
||||||
badgeTitle = core.getInput('badge-title', { required: false });
|
badgeTitle = core.getInput('badge-title', { required: false });
|
||||||
|
reportTitle = core.getInput('report-title', { required: false });
|
||||||
token = core.getInput('token', { required: true });
|
token = core.getInput('token', { required: true });
|
||||||
octokit;
|
octokit;
|
||||||
context = (0, github_utils_1.getCheckRunContext)();
|
context = (0, github_utils_1.getCheckRunContext)();
|
||||||
|
|
@ -399,10 +400,18 @@ class TestReporter {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const { listSuites, listTests, onlySummary, useActionsSummary, badgeTitle } = this;
|
const { listSuites, listTests, onlySummary, useActionsSummary, badgeTitle, reportTitle } = this;
|
||||||
let baseUrl = '';
|
let baseUrl = '';
|
||||||
if (this.useActionsSummary) {
|
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 content:');
|
||||||
core.info(summary);
|
core.info(summary);
|
||||||
await core.summary.addRaw(summary).write();
|
await core.summary.addRaw(summary).write();
|
||||||
|
|
@ -421,7 +430,15 @@ class TestReporter {
|
||||||
});
|
});
|
||||||
core.info('Creating report summary');
|
core.info('Creating report summary');
|
||||||
baseUrl = createResp.data.html_url;
|
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');
|
core.info('Creating annotations');
|
||||||
const annotations = (0, get_annotations_1.getAnnotations)(results, this.maxAnnotations);
|
const annotations = (0, get_annotations_1.getAnnotations)(results, this.maxAnnotations);
|
||||||
const isFailed = this.failOnError && results.some(tr => tr.result === 'failed');
|
const isFailed = this.failOnError && results.some(tr => tr.result === 'failed');
|
||||||
|
|
@ -1800,7 +1817,8 @@ const defaultOptions = {
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
onlySummary: false,
|
onlySummary: false,
|
||||||
useActionsSummary: true,
|
useActionsSummary: true,
|
||||||
badgeTitle: 'tests'
|
badgeTitle: 'tests',
|
||||||
|
reportTitle: 'Test Results'
|
||||||
};
|
};
|
||||||
function getReport(results, options = defaultOptions) {
|
function getReport(results, options = defaultOptions) {
|
||||||
core.info('Generating check run summary');
|
core.info('Generating check run summary');
|
||||||
|
|
@ -1863,6 +1881,7 @@ function getByteLength(text) {
|
||||||
}
|
}
|
||||||
function renderReport(results, options) {
|
function renderReport(results, options) {
|
||||||
const sections = [];
|
const sections = [];
|
||||||
|
sections.push(`# ${options.reportTitle}`);
|
||||||
const badge = getReportBadge(results, options);
|
const badge = getReportBadge(results, options);
|
||||||
sections.push(badge);
|
sections.push(badge);
|
||||||
const runs = getTestRunsReport(results, options);
|
const runs = getTestRunsReport(results, options);
|
||||||
|
|
|
||||||
23
src/main.ts
23
src/main.ts
|
|
@ -47,6 +47,7 @@ class TestReporter {
|
||||||
readonly onlySummary = core.getInput('only-summary', {required: false}) === 'true'
|
readonly onlySummary = core.getInput('only-summary', {required: false}) === 'true'
|
||||||
readonly useActionsSummary = core.getInput('use-actions-summary', {required: false}) === 'true'
|
readonly useActionsSummary = core.getInput('use-actions-summary', {required: false}) === 'true'
|
||||||
readonly badgeTitle = core.getInput('badge-title', {required: false})
|
readonly badgeTitle = core.getInput('badge-title', {required: false})
|
||||||
|
readonly reportTitle = core.getInput('report-title', {required: false})
|
||||||
readonly token = core.getInput('token', {required: true})
|
readonly token = core.getInput('token', {required: true})
|
||||||
readonly octokit: InstanceType<typeof GitHub>
|
readonly octokit: InstanceType<typeof GitHub>
|
||||||
readonly context = getCheckRunContext()
|
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 = ''
|
let baseUrl = ''
|
||||||
if (this.useActionsSummary) {
|
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 content:')
|
||||||
core.info(summary)
|
core.info(summary)
|
||||||
|
|
@ -188,7 +197,15 @@ class TestReporter {
|
||||||
|
|
||||||
core.info('Creating report summary')
|
core.info('Creating report summary')
|
||||||
baseUrl = createResp.data.html_url as string
|
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')
|
core.info('Creating annotations')
|
||||||
const annotations = getAnnotations(results, this.maxAnnotations)
|
const annotations = getAnnotations(results, this.maxAnnotations)
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ export interface ReportOptions {
|
||||||
onlySummary: boolean
|
onlySummary: boolean
|
||||||
useActionsSummary: boolean
|
useActionsSummary: boolean
|
||||||
badgeTitle: string
|
badgeTitle: string
|
||||||
|
reportTitle: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultOptions: ReportOptions = {
|
const defaultOptions: ReportOptions = {
|
||||||
|
|
@ -23,7 +24,8 @@ const defaultOptions: ReportOptions = {
|
||||||
baseUrl: '',
|
baseUrl: '',
|
||||||
onlySummary: false,
|
onlySummary: false,
|
||||||
useActionsSummary: true,
|
useActionsSummary: true,
|
||||||
badgeTitle: 'tests'
|
badgeTitle: 'tests',
|
||||||
|
reportTitle: 'Test Results'
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getReport(results: TestRunResult[], options: ReportOptions = defaultOptions): string {
|
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[] {
|
function renderReport(results: TestRunResult[], options: ReportOptions): string[] {
|
||||||
const sections: string[] = []
|
const sections: string[] = []
|
||||||
|
sections.push(`# ${options.reportTitle}`)
|
||||||
|
|
||||||
const badge = getReportBadge(results, options)
|
const badge = getReportBadge(results, options)
|
||||||
sections.push(badge)
|
sections.push(badge)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue