Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork740
Merge pull request #948 from softworkz/submit_extend_test_matrix#67
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
| name:Tests | |
| on: | |
| push: | |
| branches:[ develop, main ] | |
| pull_request: | |
| branches:[ develop, main ] | |
| concurrency: | |
| group:integration-tests-${{ github.ref }} | |
| cancel-in-progress:true | |
| jobs: | |
| tests: | |
| name:Integration Tests (${{ matrix.os }} / Electron ${{ matrix.electronVersion }}) | |
| runs-on:${{ matrix.os }} | |
| strategy: | |
| fail-fast:false | |
| matrix: | |
| os:[ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, macos-14, macos-26] | |
| electronVersion:['30.4.0', '38.2.2'] | |
| include: | |
| -os:ubuntu-22.04 | |
| rid:linux-x64 | |
| -os:ubuntu-24.04 | |
| rid:linux-x64 | |
| -os:windows-2022 | |
| rid:win-x64 | |
| -os:windows-2025 | |
| rid:win-x64 | |
| -os:macos-14 | |
| rid:osx-arm64 | |
| -os:macos-26 | |
| rid:osx-arm64 | |
| env: | |
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE:1 | |
| DOTNET_NOLOGO:1 | |
| CI:true | |
| ELECTRON_ENABLE_LOGGING:1 | |
| steps: | |
| -name:Checkout | |
| uses:actions/checkout@v4 | |
| -name:Setup .NET | |
| uses:actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version:'10.0.x' | |
| -name:Setup Node.js | |
| uses:actions/setup-node@v4 | |
| with: | |
| node-version:'22' | |
| -name:Restore | |
| run:dotnet restore -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj | |
| -name:Build | |
| run:dotnet build --no-restore -c Release -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj | |
| -name:Install Linux GUI dependencies | |
| if:runner.os == 'Linux' | |
| run:| | |
| set -e | |
| sudo apt-get update | |
| . /etc/os-release | |
| if [ "$VERSION_ID" = "24.04" ]; then ALSA_PKG=libasound2t64; else ALSA_PKG=libasound2; fi | |
| echo "Using ALSA package: $ALSA_PKG" | |
| sudo apt-get install -y xvfb \ | |
| libgtk-3-0 libnss3 libgdk-pixbuf-2.0-0 libdrm2 libgbm1 libxss1 libxtst6 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libx11-xcb1 "$ALSA_PKG" | |
| -name:Run tests (Linux) | |
| if:runner.os == 'Linux' | |
| continue-on-error:true | |
| run:| | |
| mkdir -p test-results | |
| xvfb-run -a dotnet test src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj \ | |
| -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} \ | |
| --logger "trx;LogFileName=${{ matrix.os }}-electron-${{ matrix.electronVersion }}.trx" \ | |
| --logger "console;verbosity=detailed" \ | |
| --results-directory test-results | |
| -name:Run tests (Windows) | |
| if:runner.os == 'Windows' | |
| continue-on-error:true | |
| run:| | |
| New-Item -ItemType Directory -Force -Path test-results | Out-Null | |
| dotnet test src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} --logger "trx;LogFileName=${{ matrix.os }}-electron-${{ matrix.electronVersion }}.trx" --logger "console;verbosity=detailed" --results-directory test-results | |
| -name:Run tests (macOS) | |
| if:runner.os == 'macOS' | |
| continue-on-error:true | |
| run:| | |
| mkdir -p test-results | |
| dotnet test src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} --logger "trx;LogFileName=${{ matrix.os }}-electron-${{ matrix.electronVersion }}.trx" --logger "console;verbosity=detailed" --results-directory test-results | |
| -name:Upload raw test results | |
| if:always() | |
| uses:actions/upload-artifact@v4 | |
| with: | |
| name:test-results-${{ matrix.os }}-electron-${{ matrix.electronVersion }} | |
| path:test-results/*.trx | |
| retention-days:7 | |
| summary: | |
| name:Test Results | |
| runs-on:ubuntu-24.04 | |
| if:always() | |
| needs:[tests] | |
| permissions: | |
| actions:read | |
| contents:read | |
| checks:write | |
| pull-requests:write | |
| steps: | |
| -name:Download all test results | |
| uses:actions/download-artifact@v4 | |
| with: | |
| path:test-results | |
| -name:Setup .NET (for CTRF conversion) | |
| uses:actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version:'10.0.x' | |
| -name:Install CTRF TRX→CTRF converter (dotnet tool) | |
| run:| | |
| dotnet new tool-manifest | |
| dotnet tool install DotnetCtrfJsonReporter --local | |
| -name:Convert TRX → CTRF and clean names (filePath=OS|Electron X.Y.Z) | |
| shell:bash | |
| run:| | |
| set -euo pipefail | |
| mkdir -p ctrf | |
| shopt -s globstar nullglob | |
| conv=0 | |
| for trx in test-results/**/*.trx; do | |
| base="$(basename "$trx" .trx)" # e.g. ubuntu-22.04-electron-30.4.0 | |
| os="${base%%-electron-*}" | |
| electron="${base#*-electron-}" | |
| label="$os|Electron $electron" | |
| outdir="ctrf/${label}" | |
| mkdir -p "$outdir" | |
| out="${outdir}/ctrf-report.json" | |
| dotnet tool run DotnetCtrfJsonReporter -p "$trx" -d "$outdir" -f "ctrf-report.json" | |
| jq --arg fp "$label" '.results.tests |= map(.filePath = $fp)' "$out" > "${out}.tmp" && mv "${out}.tmp" "$out" | |
| echo "Converted & normalized $trx -> $out" | |
| conv=$((conv+1)) | |
| done | |
| echo "Processed $conv TRX file(s)" | |
| -name:Publish Test Report | |
| if:always() | |
| uses:ctrf-io/github-test-reporter@v1 | |
| with: | |
| report-path:'ctrf/**/*.json' | |
| summary:true | |
| pull-request:false | |
| status-check:false | |
| status-check-name:'Integration Tests' | |
| use-suite-name:true | |
| update-comment:true | |
| always-group-by:true | |
| overwrite-comment:true | |
| exit-on-fail:true | |
| group-by:'suite' | |
| upload-artifact:true | |
| fetch-previous-results:true | |
| summary-report:false | |
| summary-delta-report:true | |
| github-report:true | |
| test-report:false | |
| test-list-report:false | |
| failed-report:true | |
| failed-folded-report:false | |
| skipped-report:true | |
| suite-folded-report:true | |
| suite-list-report:false | |
| file-report:true | |
| previous-results-report:true | |
| insights-report:true | |
| flaky-report:true | |
| flaky-rate-report:true | |
| fail-rate-report:false | |
| slowest-report:false | |
| report-order:'summary-delta-report,failed-report,skipped-report,suite-folded-report,file-report,previous-results-report,github-report' | |
| env: | |
| GITHUB_TOKEN:${{ github.token }} | |
| -name:Save PR Number | |
| if:github.event_name == 'pull_request' | |
| run:echo "PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
| -name:Write PR Number to File | |
| if:github.event_name == 'pull_request' | |
| run:echo "$PR_NUMBER" > pr_number.txt | |
| shell:bash | |
| -name:Upload PR Number Artifact | |
| if:github.event_name == 'pull_request' | |
| uses:actions/upload-artifact@v4 | |
| with: | |
| name:pr_number | |
| path:pr_number.txt | |
| -name:Summary | |
| run:echo "All matrix test jobs completed." |