diff --git a/.github/workflows/gradle_pr.yml b/.github/workflows/gradle_pr.yml index cd13099f6e..4ae241fd3e 100644 --- a/.github/workflows/gradle_pr.yml +++ b/.github/workflows/gradle_pr.yml @@ -33,6 +33,20 @@ jobs: run: ./gradlew test --tests "io.reactivex.rxjava4.validators.*" --stacktrace --no-daemon - name: Build RxJava run: ./gradlew build --stacktrace + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0 + if: always() # important: run even if tests failed + with: + files: | + **/build/test-results/**/TEST-*.xml + **/build/test-results/**/*.xml + **/build/test-results/testNG/TEST-*.xml + comment_mode: failures + fail_on: test failures + check_name: "🧪 RxJava Test Results" + report_individual_runs: false + - name: Upload to Codecov uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3 - name: Generate Javadoc diff --git a/.github/workflows/gradle_snapshot.yml b/.github/workflows/gradle_snapshot.yml index 617a44d8c6..0e5dca3833 100644 --- a/.github/workflows/gradle_snapshot.yml +++ b/.github/workflows/gradle_snapshot.yml @@ -36,6 +36,20 @@ jobs: run: ./gradlew test --tests "io.reactivex.rxjava4.validators.*" --stacktrace --no-daemon - name: Build RxJava run: ./gradlew build --stacktrace --no-daemon + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0 + if: always() # important: run even if tests failed + with: + files: | + **/build/test-results/**/TEST-*.xml + **/build/test-results/**/*.xml + **/build/test-results/testNG/TEST-*.xml + comment_mode: failures + fail_on: test_failures + check_name: "🧪 RxJava Test Results" + report_individual_runs: false + prerelease: needs: build runs-on: ubuntu-latest diff --git a/build.gradle b/build.gradle index 349b67b449..b0fc0a7348 100644 --- a/build.gradle +++ b/build.gradle @@ -194,6 +194,13 @@ tasks.register('testNG', Test) { maxParallelForks = 1 + // Ensure JUnit-compatible XML output in the standard location + reports { + html.required = true + junitXml.required = true + junitXml.outputLocation = file("${buildDir}/test-results/test") // ← important + } + // Optional: fine-tune includes/excludes // include '**/*NgTest.class', '**/*TestNG.class' // exclude '**/*JUnitTest.class' @@ -212,8 +219,6 @@ tasks.register('testNG', Test) { warn.events = testLoggingConfig warn.exceptionFormat = "full" } - reports.html.required = true - reports.junitXml.required = true // if you want JUnit-compatible XML too } check.dependsOn testNG