Jenkins to qTest result mapping precedence for parallel build executions
0 reputation · 15 Nov 2025, 02:44 UTC
0 reputation · 15 Nov 2025, 02:44 UTC
When Jenkins publishes automated test results to qTest Manager via the integration plugin, the system maps JUnit XML outputs to specific test cases based on identifiers. A challenge arises when multiple Jenkins agents or parallel stages execute the same logical test case simultaneously or in rapid succession.
The integration boundary defines how qTest handles overlapping results for a single test case within the same build cycle. If one agent reports a PASS and another concurrent agent reports a FAIL for the same identifier, the system's behavior for determining the final status of the test run is not clear.
Does qTest create distinct test runs for each parallel Jenkins agent, or does it consolidate results into a single run? In the event of conflicting statuses, does the integration follow a 'last-build-wins' logic, or is there environment-specific precedence applied?
qTest does not consolidate parallel Jenkins reports for the same test case identifier into a single run by default. The Jenkins to qTest integration plugin maps JUnit XML to a test case by identifier, e.g., test case ID or name, and pushes each completed execution as a separate Test Run entry within the target Test Cycle.
With that mapping, a PASS from one parallel agent and a FAIL from another concurrent agent for the same identifier will create two distinct run records. The record level is not overwritten with a last-build-wins mechanism. The cycle-level summary you see for the test case is derived from those runs, typically showing the most recent run by timestamp, or an aggregation rule configured in the qTest version you are using.
The overall status shown for a test case in a cycle is often presented as the most recent run, or via a configured aggregation logic. Exact behavior varies significantly between qTest Manager on-premise and qTest Pulse/Cloud, and across plugin versions.
A last-write-wins race can occur only if the integration is configured to update an existing run rather than create a new one. In that update mode, the final status depends on which agent writes last, which is nondeterministic under parallel execution.
Overlapping identifiers across agents can also lead to data duplication if a unique build/run identifier is not used to differentiate executions.
One diagnostic detail that changes the recommendation: which qTest edition and integration plugin mode you are using — create new run per Jenkins build vs update existing run — and whether the same Test Cycle ID is shared across parallel stages.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.