01
What QaCockpit reads
QaCockpit accepts common JUnit-style XML dialects rather than requiring one vendor's exact schema. The importer preserves suites, test cases, duration, status, failure message, stack evidence, and captured output when the reporter provides it.
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="checkout" tests="2" failures="1" skipped="0" time="1.42">
<testcase classname="CheckoutApiTest" name="createsOrder" time="0.61" />
<testcase classname="CheckoutApiTest" name="rejectsExpiredCard" time="0.81">
<failure message="Expected HTTP 422 but received 500" type="AssertionError">
stack trace or safe diagnostic context
</failure>
</testcase>
</testsuite><testsuites>and a single root<testsuite>are both valid common shapes.- Passed, failed, skipped, error, and unknown results remain distinct technical states.
- File name, extension, artifact name, and directory can follow your repository conventions.
- An empty or missing report is evidence-intake failure, not a passing test run.
02
Common framework outputs
| Framework | Create JUnit XML | Typical path |
|---|---|---|
| Playwright | JUnit reporter with outputFile or PLAYWRIGHT_JUNIT_OUTPUT_FILE | test-results/junit.xml |
| JUnit 5 / REST Assured | mvn test through Maven Surefire | target/surefire-reports/TEST-*.xml |
| pytest | pytest --junitxml=test-results/junit.xml | test-results/junit.xml |
| .NET test | Use a JUnit-compatible test logger in the existing test project | The logger's configured output directory |
The framework writes the report. QaCockpit does not require an SDK inside the test code and does not ask the pipeline to execute a product-owned command.
03
Retain reports on success and failure
The most useful report often comes from a run containing failed tests. Configure the artifact step to run regardless of the test command outcome, verify that at least one report is non-empty, and preserve the original CI conclusion after retention.
if: always()
Upload with actions/upload-artifact.
condition: always()
Publish with PublishPipelineArtifact@1.
04
Keep multiple files and shards unambiguous
- Retain every report produced by Maven modules, matrix jobs, or test shards.
- Give each GitHub matrix job a unique artifact name because retained artifacts are immutable.
- Do not overwrite one shard's XML with another shard at the same shared path.
- Use stable suite and test identity so Test Scope can explain added and missing cases.
- Preserve exact run and attempt context instead of merging results from unrelated executions.
05
Keep the evidence boundary safe
JUnit files, logs, screenshots, and traces may contain URLs, identifiers, payloads, or failure output. Exclude credentials and sensitive customer data before retention. QaCockpit reads provider artifacts through the authorized connection and exposes protected evidence only to permitted organization members.
