Problem
With --rerunfailed, a suite produces an original output.xml and a separate rerun output.xml. If only the merged result is uploaded, the dashboard sees one final status per test and loses which tests failed on the first attempt. Consistent first-attempt failures (that pass on retry) signal a real problem, not just flakiness - that signal is valuable and currently invisible.
Why not parse merged output
rebot --merge does not store a structured attempt history. The merged output.xml keeps only the final test body plus a message annotation (Old status: FAIL -> New status: PASS). That yields a single first-status flag at best, requires users to actually run the merge step, and gives no per-attempt timings or error detail. So this issue takes the linked-uploads approach instead.
Proposed direction
Upload the original run and each rerun as separate runs, and link them so the dashboard can group and diff attempts.
- Linking mechanism - a CLI/API field on upload, e.g.
--rerun-of <run_start|alias> (or a tag convention like rerun:<parent-id>). The rerun upload references its parent so they form an attempt chain.
- Storage - add
parent_run (or rerun_group) to the run/test data so linked attempts are queryable.
- Display - in the statistics / test graph, group linked attempts under one logical run; mark tests that failed on attempt 1 but passed later (flaky), and tests that failed every attempt (hard fail). Optional toggle "Show first-attempt failures".
Benefits over merge-parsing
- No dependency on users running
rebot --merge.
- Full per-attempt data (status, timing, message) for every attempt, not just a flag.
- Natural fit with existing run-based model.
Open questions
- Link via explicit CLI/API field, or a tag convention?
- Reference parent by
run_start, alias, or a user-supplied group id?
- How to render attempt chains in the existing graphs without cluttering non-rerun runs?
Problem
With
--rerunfailed, a suite produces an originaloutput.xmland a separate rerunoutput.xml. If only the merged result is uploaded, the dashboard sees one final status per test and loses which tests failed on the first attempt. Consistent first-attempt failures (that pass on retry) signal a real problem, not just flakiness - that signal is valuable and currently invisible.Why not parse merged output
rebot --mergedoes not store a structured attempt history. The mergedoutput.xmlkeeps only the final test body plus a message annotation (Old status: FAIL -> New status: PASS). That yields a single first-status flag at best, requires users to actually run the merge step, and gives no per-attempt timings or error detail. So this issue takes the linked-uploads approach instead.Proposed direction
Upload the original run and each rerun as separate runs, and link them so the dashboard can group and diff attempts.
--rerun-of <run_start|alias>(or a tag convention likererun:<parent-id>). The rerun upload references its parent so they form an attempt chain.parent_run(orrerun_group) to the run/test data so linked attempts are queryable.Benefits over merge-parsing
rebot --merge.Open questions
run_start,alias, or a user-supplied group id?