diff --git a/README.md b/README.md index bc28d53..f92e3a2 100644 --- a/README.md +++ b/README.md @@ -162,10 +162,6 @@ jobs: # Allows you to generate reports for Actions Summary # https://github.blog/2022-05-09-supercharging-github-actions-with-job-summaries/ use-actions-summary: 'true' - - # Prefix used when generating report anchor slugs. - # Useful to avoid collisions when multiple reports are rendered together. - slug-prefix: '' # Optionally specify a title (Heading level 1) for the report. Leading and trailing whitespace are ignored. # This is useful for separating your test report from other sections in the build summary. @@ -216,6 +212,7 @@ jobs: | time | Test execution time [ms] | | url | Check run URL | | url_html | Check run URL HTML | +| slug_prefix| Random anchor links slug prefix generated for the summary headers | ## Supported formats diff --git a/action.yml b/action.yml index f66ac45..f3bab88 100644 --- a/action.yml +++ b/action.yml @@ -88,10 +88,6 @@ inputs: https://github.com/orgs/github/teams/engineering/discussions/871 default: 'true' required: false - slug-prefix: - description: Prefix used when generating report anchor slugs - required: false - default: '' badge-title: description: Customize badge title required: false @@ -126,6 +122,8 @@ outputs: description: Check run URL url_html: description: Check run URL HTML + slug_prefix: + description: Random prefix added to generated report anchor slugs for this action run runs: using: 'node20' main: 'dist/index.js' diff --git a/dist/index.js b/dist/index.js index f49930a..06ca127 100644 --- a/dist/index.js +++ b/dist/index.js @@ -55383,6 +55383,8 @@ function getOctokit(token, options, ...additionalPlugins) { return new GitHubWithPlugins(getOctokitOptions(token, options)); } //# sourceMappingURL=github.js.map +// EXTERNAL MODULE: external "node:crypto" +var external_node_crypto_ = __nccwpck_require__(7598); // EXTERNAL MODULE: ./node_modules/adm-zip/adm-zip.js var adm_zip = __nccwpck_require__(1316); // EXTERNAL MODULE: ./node_modules/picomatch/index.js @@ -57864,6 +57866,7 @@ class NetteTesterJunitParser { + async function main() { try { @@ -57891,7 +57894,7 @@ class TestReporter { workDirInput = getInput('working-directory', { required: false }); onlySummary = getInput('only-summary', { required: false }) === 'true'; useActionsSummary = getInput('use-actions-summary', { required: false }) === 'true'; - slugPrefix = getInput('slug-prefix', { required: false }); + slugPrefix = `tr-${(0,external_node_crypto_.randomBytes)(4).toString('base64url')}-`; badgeTitle = getInput('badge-title', { required: false }); reportTitle = getInput('report-title', { required: false }); collapsed = getInput('collapsed', { required: false }); @@ -57965,6 +57968,7 @@ class TestReporter { setOutput('failed', failed); setOutput('skipped', skipped); setOutput('time', time); + setOutput('slug_prefix', this.slugPrefix); if (this.failOnError && isFailed) { setFailed(`Failed test were found and 'fail-on-error' option is set to ${this.failOnError}`); return; diff --git a/src/main.ts b/src/main.ts index ead81b3..fc6ea16 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,7 @@ import * as core from '@actions/core' import * as github from '@actions/github' import {GitHub} from '@actions/github/lib/utils' +import {randomBytes} from 'node:crypto' import {ArtifactProvider} from './input-providers/artifact-provider.js' import {LocalFileProvider} from './input-providers/local-file-provider.js' @@ -49,7 +50,7 @@ class TestReporter { readonly workDirInput = core.getInput('working-directory', {required: false}) readonly onlySummary = core.getInput('only-summary', {required: false}) === 'true' readonly useActionsSummary = core.getInput('use-actions-summary', {required: false}) === 'true' - readonly slugPrefix = core.getInput('slug-prefix', {required: false}) + readonly slugPrefix = `tr-${randomBytes(4).toString('base64url')}-` readonly badgeTitle = core.getInput('badge-title', {required: false}) readonly reportTitle = core.getInput('report-title', {required: false}) readonly collapsed = core.getInput('collapsed', {required: false}) as 'auto' | 'always' | 'never' @@ -145,6 +146,7 @@ class TestReporter { core.setOutput('failed', failed) core.setOutput('skipped', skipped) core.setOutput('time', time) + core.setOutput('slug_prefix', this.slugPrefix) if (this.failOnError && isFailed) { core.setFailed(`Failed test were found and 'fail-on-error' option is set to ${this.failOnError}`)