Skip to content

ReportTestResults

ReportTestResults #187

Workflow file for this run

name: ReportTestResults
on:
workflow_run:
workflows:
- PullRequest
types:
- completed
permissions:
contents: read
actions: read
checks: write
jobs:
Report:
runs-on: ubuntu-latest
steps:
- name: 'Add default settings to node calls'
shell: bash
run: |
#
# The later used dorny/test-reporter@v1 action can throw the following exception when enough tests have been
# executed:
# RangeError: Maximum call stack size exceeded
#
# We explicitly increase the stack max. stack size here to work around this issue.
#
which node
node --version
mv /usr/local/bin/node /usr/local/bin/node_org
echo '#!/bin/bash' >> /usr/local/bin/node
echo '/usr/local/bin/node_org --stack-size=4096 $@' >> /usr/local/bin/node
cat /usr/local/bin/node
chmod +x /usr/local/bin/node
which node
node --version
- name: Checkout
uses: actions/checkout@v4
with:
repository: ${{ github.event.workflow_run.head_repository.full_name }}
ref: ${{ github.event.workflow_run.head_branch }}
fetch-depth: 1
# The dorny/test-reporter@v1 action doesn't support actions/upload-artifact@v4 yet.
# We therefore download the artifact manually and feed it to dorny/test-reporter@v1 as local files.
- name: 'Download Test Results'
id: DownloadTestResults
uses: actions/github-script@v7
with:
script: |
var allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
console.log('context.repo.owner = ' + context.repo.owner);
console.log('context.repo.repo = ' + context.repo.repo);
var artifacts = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "test-results";
});
if (artifacts.length > 0) {
var download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: artifacts[0].id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{ github.workspace }}/test-results.zip', Buffer.from(download.data));
core.setOutput('hasTestResultsArtifact', 'true');
}
- name: 'Extract Artifact'
id: ExtractArtifact
if: steps.DownloadTestResults.outputs.hasTestResultsArtifact == 'true'
shell: pwsh
run: |
Expand-Archive test-results.zip -DestinationPath './test-results' -Force
dir -Recurse | Select-Object -ExpandProperty FullName
- name: 'Publish Test Report'
if: steps.ExtractArtifact.conclusion == 'success'
uses: dorny/test-reporter@v1
env:
#
# Can throw the following exception, when enough tests have been executed:
# FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
#
# We explicitly increase the max. heap size here to work around this issue.
#
NODE_OPTIONS: --max-old-space-size=8192
with:
name: 'All Tests'
# artifact: test-results
# use '**/*.trx' for artifact and 'test-results/**/*.trx' for local files
path: 'test-results/**/*.trx'
reporter: dotnet-trx
only-summary: 'true'
fail-on-error: 'false'
fail-on-empty: 'true'