Checkpoint Lab — Logs, Reports, output.xml, Rebot, and Result Post-Processing
Build a governed evidence pipeline from two local executions, a controlled failure/rerun, a verified Rebot merge, CI-friendly derivatives, and an explicit retention/redaction policy.
Learning objectives
- Predict artifact and status changes before execution and verify them independently.
- Produce raw, combined, rerun, merged, report/log, and xUnit artifacts without overwriting first-failure evidence.
- Verify test counts/statuses, schema/generator metadata, sizes, and checksums.
- Diagnose one intentionally wrong combine/merge choice and repair it without deleting originals.
- Write a concise CI artifact-retention and privacy policy that distinguishes restricted raw evidence from publishable derivatives.
Current compatibility baseline. Verified
2026-08-31: Robot Framework 7.4.2 is the current stable release and
requires Python 3.8+; 7.5b1 is a pre-release and is not required
here. The 7.4.2 result.xsd is schema version
5; default XML outputs carry a
schemaversion attribute and Robot Framework 7.x can
also read legacy output. --legacyoutput exists for
Robot Framework 6.x-compatible consumers. Rebot combines independent
outputs by creating a new parent suite; --merge is for
the same logical top-level suite, including reruns, where later
matching test results replace earlier results and later SKIP results
do not replace originals. The built-in Testdoc tool is deprecated in
7.4.2 in favor of external Testdoc and is not a result-reporting
substitute.
1. Checkpoint scenario
You own a release-evidence pipeline for a synthetic product. Two independent smoke suites must be reported together. A separate release-gate suite intentionally fails once, is rerun with repaired synthetic input, and must be merged so the final view reflects the corrected test while retaining the original failure. Your deliverable is not merely “all green”: it is a reproducible evidence packet explaining every artifact and transformation.
2. Setup and preflight
python --version
python -m robot --version
python -m robot.rebot --version
- Use Robot Framework 7.4.2 stable for the chapter baseline and Python 3.8+.
-
Use a new disposable directory such as
rf14-checkpoint. - No network service, external library, Pabot, browser, database, SSH, CI provider, container, or paid platform is required.
- Use only synthetic values. Do not introduce real credentials or personal data.
-
Create
sources/,tools/, andevidence/; do not point--outputdirat an existing shared results directory.
3. Predict before execution
| Action | Prediction to write down before running |
|---|---|
| Independent run A | One PASS test; new raw/log/report under evidence/a |
| Independent run B | One PASS test; separate root under evidence/b |
| Combine A+B | New parent suite; total two PASS tests |
| Original release-gate run | One FAIL + one PASS; non-zero process status |
| Rerun failed | Only prior failed test executes; repaired input should PASS |
| Merge original+rerun | Full logical suite restored; two PASS tests; replacement provenance recorded |
| xUnit derivative | Summary artifact created without new test execution |
| Privacy scan | No forbidden fake-secret markers in publishable derivatives |
4. Create the checkpoint sources
*** Test Cases ***
API Contract Fixture Is Coherent
[Tags] checkpoint independent
Should Be Equal schema-v1 schema-v1
Save as sources/a.robot.
*** Test Cases ***
Package Fixture Is Coherent
[Tags] checkpoint independent
Should Be Equal As Integers 7 7
Save as sources/b.robot.
*** Variables ***
${STATE} degraded
*** Test Cases ***
Release Gate
[Tags] checkpoint rerun
Should Be Equal ${STATE} healthy msg=Synthetic release state must be healthy
Stable Invariant
[Tags] checkpoint rerun
Should Be Equal stable stable
Save as sources/release.robot. Reuse the read-only
inspector/checksum/privacy scripts from Lesson 2, or recreate them
from that lesson.
5. Execute and combine the independent evidence
python -m robot --outputdir evidence/a sources/a.robot
python -m robot --outputdir evidence/b sources/b.robot
python -m robot.rebot --name "Checkpoint Independent Bundle" --output combined.xml --outputdir evidence/combined evidence/a/output.xml evidence/b/output.xml
Verify the raw inputs still exist. Inspect
combined.xml and confirm two tests beneath a new
aggregate root. Record the exact command and process return code.
6. Capture the controlled failure before rerunning
python -m robot --variable STATE:degraded --outputdir evidence/release/original sources/release.robot
# Preserve the expected non-zero status and first-failure artifacts.
python -m robot --rerunfailed evidence/release/original/output.xml --variable STATE:healthy --outputdir evidence/release/rerun sources/release.robot
Before merging, independently inspect both XML files. The original
must show Release Gate FAIL and
Stable Invariant PASS. The rerun should contain only
Release Gate and it should PASS. If those observations
differ, stop and diagnose selection/input identity rather than
forcing a merge.
7. Intentionally make—and diagnose—the wrong aggregation choice
# Diagnostic exercise only: combining a rerun is semantically wrong for the final view.
python -m robot.rebot --name "WRONG Rerun Bundle" --output wrong-combined.xml --outputdir evidence/release/wrong evidence/release/original/output.xml evidence/release/rerun/output.xml
Inspect the result. You have preserved both roots instead of
replacing the failed test in the same logical suite. This can make a
reviewer see both the old failure and the rerun as independent
evidence. Keep this artifact only as the diagnostic example, then
use --merge for the production-correct derivative.
8. Produce and verify the corrected merged result
python -m robot.rebot --merge --output merged.xml --outputdir evidence/release/merged evidence/release/original/output.xml evidence/release/rerun/output.xml
Verify: same logical top-level suite, two total tests, both final
PASS, replacement note for the rerun test, and the original failure
still preserved under evidence/release/original. A
green merged report is acceptable only because the evidence packet
also explains the earlier failure and rerun.
9. Generate publication derivatives
python -m robot.rebot --xunit xunit.xml --outputdir evidence/release/publish evidence/release/merged/merged.xml
This creates default log/report plus xUnit under the publication directory. For a restricted CI system you may publish all three. For a broader audience, publish only artifacts allowed by your privacy policy; do not assume HTML is inherently safe.
10. Verification checklist
-
Record
generator,generated,schemaversion, top suite, test count, and statuses for each raw/combined/merged XML. - Confirm schema version is expected for the pinned Robot Framework version.
- Confirm independent combination created a new parent rather than replacing tests.
- Confirm the rerun executed only the original failed test.
- Confirm merge restored the full logical suite and final test statuses.
- Confirm original failure artifacts still exist unchanged.
- Record sizes and SHA-256 checksums for raw and derived artifacts.
- Open the log/report and verify hierarchy/status visually.
- Confirm xUnit exists and its test count matches the intended final view.
- Run the synthetic forbidden-marker scan over publishable artifacts.
11. Write the CI retention/redaction policy
| Artifact class | Example policy |
|---|---|
| Raw Robot output | Restricted access; retain failed/release-gate runs for diagnostic/compliance window; checksum and preserve immutably |
| log.html | Engineer access; retain when detailed diagnosis is required; review privacy before broader publication |
| report.html | Publish to normal CI viewers if approved; still treat as potentially sensitive |
| xUnit | Publish to CI test dashboard; retain as summary derivative, not sole Robot evidence |
| Merged/combined XML | Label as derivative with input checksums and Rebot version/command |
| Wrong/stale diagnostic artifacts | Keep only for the lab or incident record; clearly mark non-authoritative |
| Secrets/PII | Prevent at source; no real values in test data/CLI/logs; restrict incident artifacts and rotate real credentials if leaked |
12. Cleanup / rollback
Cleanup is intentionally boring: after the evidence review, remove
only the run-owned rf14-checkpoint directory. Do not
delete parent directories, shared CI workspaces, or repository
source. In a real CI pipeline, cleanup happens only after required
raw and derivative artifacts have been validated and uploaded to
their correct retention tier.
13. What Chapter 14 adds to the production operating model
Chapter 13 made status truthful; Chapter 14 makes that truth durable. Your operating model now includes raw machine-readable evidence, explicit presentation derivatives, schema/version checks, combine-versus-merge identity rules, first-failure retention, artifact checksums, privacy/access tiers, and reproducible Rebot transformations. This is the foundation Chapter 15 will use when selecting tests, rerunning failures, and defining execution profiles.
14. Knowledge check
Why was the wrong combined rerun artifact kept temporarily?
It proves the semantic difference between combine and merge. It is labeled non-authoritative and helps demonstrate why independent aggregation is wrong for a same-suite rerun.
What must be true before --merge is trusted?
Inputs must represent the same logical top-level suite, the rerun/partition selection must be understood, and original inputs must be preserved and independently inspected.
Why retain original failed output after the merged result is green?
The original proves the first failure and supports diagnosis/audit. The merged result is a corrected final view, not a replacement for historical evidence.
Which artifact is best for CI interoperability, and which is best for Robot-aware post-processing?
xUnit is useful for generic CI dashboards; Robot output XML/JSON is the richer Robot-aware source for Rebot and detailed result tooling.
What does Chapter 15 add next?
Command-line selection, tag expressions, rerun mechanics, and execution profiles—using the result-evidence discipline established here.
15. Checkpoint complete
You have built a complete local evidence pipeline: separate raw runs, XML inspection, correct independent combination, preserved controlled failure, failed-test rerun, diagnosed wrong aggregation, correct merge, report/log/xUnit derivatives, checksums, privacy checks, and retention policy. The result is auditable because every transformation is explicit and the original evidence remains attributable.
Further reading
- Robot Framework 7.4.2 User Guide — Post-processing outputs — Rebot, combine, merge, and JSON/XML result processing.
- Robot Framework 7.4.2 User Guide — Different output files — output, log, report, xUnit, and output-directory behavior.
- Robot Framework 7.4.2 User Guide — Removing and flattening keywords — output-size and evidence trade-offs.
- Robot Framework 7.4.2 result.xsd — authoritative XML schema version and root attributes.
- Robot Framework 7.4.2 release notes — stable release details and built-in Testdoc deprecation.
- Robot Framework 7.4.2 on PyPI — pinned package metadata and Python requirement.
- Robot Framework releases — re-check stable/pre-release status when updating this chapter.
Keep the academy open
Support free, practical DevOps education.
Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0
Send only Ethereum/ERC-20 compatible assets to this
address.