We publish test reports in Continuous Integration (CI) to see test results easily after every code change. It helps teams quickly find and fix problems.
Report publishing in CI in Selenium Java
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class TestReportPublisher { @Test public void sampleTest() { // Your Selenium test code here Assertions.assertTrue(true); } @AfterAll public static void publishReport() { // Code to publish or archive test reports in CI // Usually handled by CI tool configuration } }
Test report publishing is often configured in the CI tool, not fully in code.
Use test frameworks like JUnit or TestNG that generate reports automatically.
/* Example: JUnit test with Maven Surefire plugin generates reports automatically */ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class SimpleTest { @Test public void testExample() { Assertions.assertEquals(5, 2 + 3); } }
/* Jenkins pipeline snippet to publish JUnit reports */ pipeline { stages { stage('Test') { steps { sh 'mvn test' junit 'target/surefire-reports/*.xml' } } } }
/* GitHub Actions step to publish test reports */ - name: Run tests run: mvn test - name: Publish test report uses: actions/upload-artifact@v3 with: name: test-report path: target/surefire-reports/
This simple JUnit test shows a passing test. The message after all tests reminds that report publishing is handled by CI tools.
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class ReportPublishingTest { @Test public void simpleTest() { Assertions.assertTrue(3 > 1); } @AfterAll public static void publishReport() { // In real CI, reports are published by CI tool, not code System.out.println("Test completed. Reports are generated by the test framework and published by CI."); } }
CI tools like Jenkins, GitHub Actions, or GitLab CI handle report publishing using plugins or built-in steps.
Test frameworks generate reports in formats like XML or HTML automatically during test runs.
Common mistake: expecting code to publish reports directly instead of configuring the CI tool properly.
Publishing test reports in CI helps teams see test results quickly after code changes.
Test frameworks generate reports; CI tools publish and display them.
Configure your CI pipeline to collect and show these reports for best results.
Practice
Solution
Step 1: Understand CI pipeline goals
CI pipelines aim to integrate code changes frequently and provide feedback quickly.Step 2: Role of test reports in CI
Publishing test reports helps teams see if tests passed or failed right after changes.Final Answer:
To quickly show test results after code changes -> Option DQuick Check:
Test reports in CI = Quick feedback [OK]
- Confusing report publishing with speeding up tests
- Thinking reports reduce test cases
- Believing reports fix tests automatically
Solution
Step 1: Identify Jenkins syntax for JUnit reports
Jenkins uses thejunitstep with a file pattern to locate XML reports.Step 2: Match correct usage
junit '**/target/surefire-reports/*.xml'correctly points to JUnit XML files generated by Maven Surefire plugin.Final Answer:
Use thejunit '**/target/surefire-reports/*.xml'step in the pipeline script -> Option AQuick Check:
Jenkins pipeline uses junit step with XML path [OK]
- Trying to publish reports from Java code directly
- Using wrong Jenkins steps for report publishing
- Archiving HTML instead of XML for JUnit reports
junit '**/target/surefire-reports/*.xml' step if no XML files are found?
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'mvn test'
junit '**/target/surefire-reports/*.xml'
}
}
}
}Solution
Step 1: Understand junit step behavior with missing files
If no XML files match, Jenkins does not fail the build but records no test results.Step 2: Confirm build status
Since no test results are found, the build passes but shows zero tests executed.Final Answer:
The build will pass with no test results recorded -> Option BQuick Check:
No XML files = build passes, no tests recorded [OK]
- Assuming build fails if reports missing
- Thinking tests are marked skipped automatically
- Expecting automatic retries on missing reports
Solution
Step 1: Check report file paths in CI config
If the CI pipeline looks for reports in the wrong folder, it won't find or display them.Step 2: Verify report generation location
Ensure test reports are generated where the CI expects them, matching the configured path.Final Answer:
The test report files are generated in a different directory than specified in the CI config -> Option CQuick Check:
Report path mismatch = no reports shown [OK]
- Blaming test assertions for missing reports
- Assuming CI server cannot publish reports
- Thinking deprecated APIs affect report visibility
Solution
Step 1: Save test reports as artifacts
Useactions/upload-artifactto store test report files after running tests.Step 2: Use a report action to display results
Configureactions/junit-reportor similar to parse and show test results in GitHub UI.Final Answer:
Run tests with Maven, then useactions/upload-artifactto save reports, and configureactions/junit-reportto display them -> Option AQuick Check:
Upload artifact + report action = published test results [OK]
- Using upload-test-report action which does not exist
- Downloading artifacts instead of uploading
- Skipping report display step after upload
Ready to prove it?
Pass the test and this pattern moves unknown
