@@ -12,18 +12,25 @@ concurrency:
1212
1313jobs :
1414 tests :
15- name : Integration Tests (${{ matrix.os }})
15+ name : Integration Tests (${{ matrix.os }} / Electron ${{ matrix.electronVersion }} )
1616 runs-on : ${{ matrix.os }}
1717 strategy :
1818 fail-fast : false
1919 matrix :
20+ electronVersion : ['30.4.0', '38.2.2']
2021 include :
22+ - os : ubuntu-22.04
23+ rid : linux-x64
2124 - os : ubuntu-24.04
2225 rid : linux-x64
2326 - os : windows-2022
2427 rid : win-x64
25- - os : macos-14
28+ - os : windows-2025
29+ rid : win-x64
30+ - os : macos-26
2631 rid : osx-arm64
32+ - os : macos-14-large
33+ rid : osx-x64
2734
2835 env :
2936 DOTNET_SKIP_FIRST_TIME_EXPERIENCE : 1
@@ -46,10 +53,10 @@ jobs:
4653 node-version : ' 22'
4754
4855 - name : Restore
49- run : dotnet restore -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj
56+ run : dotnet restore -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj
5057
5158 - name : Build
52- run : dotnet build --no-restore -c Release -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj
59+ run : dotnet build --no-restore -c Release -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj
5360
5461 - name : Install Linux GUI dependencies
5562 if : runner.os == 'Linux'
@@ -64,32 +71,32 @@ jobs:
6471 if : runner.os == 'Linux'
6572 continue-on-error : true
6673 run : |
67- mkdir -p test-results/Ubuntu
74+ mkdir -p test-results
6875 xvfb-run -a dotnet test src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj \
69- -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} \
70- --logger "trx;LogFileName=Ubuntu .trx" \
76+ -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -p:ElectronVersion=${{ matrix.electronVersion }} \
77+ --logger "trx;LogFileName=${{ runner.os }}-electron-${{ matrix.electronVersion }} .trx" \
7178 --logger "console;verbosity=detailed" \
7279 --results-directory test-results
7380
7481 - name : Run tests (Windows)
7582 if : runner.os == 'Windows'
7683 continue-on-error : true
7784 run : |
78- New-Item -ItemType Directory -Force -Path test-results/Windows | Out-Null
79- dotnet test src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -- logger "trx;LogFileName=Windows .trx" --logger "console;verbosity=detailed" --results-directory test-results
85+ New-Item -ItemType Directory -Force -Path test-results | Out-Null
86+ 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=${{ runner.os }}-electron-${{ matrix.electronVersion }} .trx" --logger "console;verbosity=detailed" --results-directory test-results
8087
8188 - name : Run tests (macOS)
8289 if : runner.os == 'macOS'
8390 continue-on-error : true
8491 run : |
85- mkdir -p test-results/macOS
86- dotnet test src/ElectronNET.IntegrationTests/ElectronNET.IntegrationTests.csproj -c Release --no-build -r ${{ matrix.rid }} -p:RuntimeIdentifier=${{ matrix.rid }} -- logger "trx;LogFileName=macOS .trx" --logger "console;verbosity=detailed" --results-directory test-results
92+ mkdir -p test-results
93+ 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=${{ runner.os }}-electron-${{ matrix.electronVersion }} .trx" --logger "console;verbosity=detailed" --results-directory test-results
8794
8895 - name : Upload raw test results
8996 if : always()
9097 uses : actions/upload-artifact@v4
9198 with :
92- name : test-results-${{ matrix.os }}
99+ name : test-results-${{ matrix.os }}-electron-${{ matrix.electronVersion }}
93100 path : test-results/*.trx
94101 retention-days : 7
95102
@@ -121,23 +128,25 @@ jobs:
121128 dotnet new tool-manifest
122129 dotnet tool install DotnetCtrfJsonReporter --local
123130
124- - name : Convert TRX → CTRF and clean names (keep suites; set filePath=OS)
131+ - name : Convert TRX → CTRF and clean names (filePath=OS|Electron X.Y.Z )
125132 shell : bash
126133 run : |
127134 set -euo pipefail
128135 mkdir -p ctrf
129- shopt -s globstar nullglob
136+ shopt -s nullglob
130137 conv=0
131- for trx in test-results/**/*.trx; do
132- fname="$(basename "$trx")"
133- os="${fname%.trx}"
134- outdir="ctrf/${os}"
138+ for trx in test-results/*.trx; do
139+ base="$(basename "$trx" .trx)" # e.g. Windows-electron-30.4.0
140+ os="${base%%-electron-*}" # part before -electron-
141+ electron="${base#*-electron-}" # part after -electron-
142+ label="$os|Electron $electron"
143+ outdir="ctrf/${label}"
135144 mkdir -p "$outdir"
136145 out="${outdir}/ctrf-report.json"
137146
138147 dotnet tool run DotnetCtrfJsonReporter -p "$trx" -d "$outdir" -f "ctrf-report.json"
139148
140- jq --arg os "$os " '.results.tests |= map(.filePath = $os )' "$out" > "${out}.tmp" && mv "${out}.tmp" "$out"
149+ jq --arg fp "$label " '.results.tests |= map(.filePath = $fp )' "$out" > "${out}.tmp" && mv "${out}.tmp" "$out"
141150
142151 echo "Converted & normalized $trx -> $out"
143152 conv=$((conv+1))
0 commit comments