CLI and Python¶
Output contains paths to generated reports. Exit code 0 means completed; 1 means invalid input or generation error. A FAIL case does not fail the generator: it is a valid result to report. A missing image produces a warning and visible report card.
Generation requires neither a Robot session nor a browser. The public EvidenceRecorder API records from Python using start, milestone, metadata, event and finish. schema_version versions the data contract.
Generation leaves original JSON unchanged, so you can regenerate with another template version. Each separately recorded case normally produces its own report with a UUID preventing same-name overwrites. Use the explicit merge command when combining attempts.
There is no suite dashboard or aggregate execution index. Each HTML has an individual summary. Execution and generation dates are separate and include their time zones.
Regenerate without rerunning tests
Reuse JSON and images with a new template. Write to another directory to retain the original reports.
Unavailable image
Generation displays a warning beside missing evidence without changing Robot's recorded status.
Report design and institution branding¶
Reports use the same navigation, compact status labels and light/dark controls. Evidence keeps captures in Steps and messages in Logs, with level filters and search. Request opens the first captured request; Failures links directly to the affected assertion. PDF and Word share a clean metadata table, light milestone bands and evidence frames with a status accent.
Branding is optional and free. It changes presentation, not case metadata or assertion behavior. With no configuration, the original tool name, logo and palette remain.
{
"name": "Example QA",
"palette": {
"primary": "#164e63",
"accent": "#155e75",
"primary_dark": "#67e8f9",
"accent_dark": "#7dd3fc"
}
}
Use examples/brand.json as a runnable starting point. Add "logo": "logo.png" to use a local PNG, JPEG or WebP image; its path is relative to the JSON file. Logos are embedded, limited to 5 MiB and resized to at most 512 px. No external request is required to view the report. Colors use six-digit hex values. Primary colors must meet 4.5:1 contrast against the selected control text; invalid configuration fails clearly. PASS, FAIL, WARN and HTTP status colors keep their semantic meaning.
rf-evidence build results/evidence --output results/reports --formats html pdf docx --brand-config examples/brand.json
from rf_evidence_reporter import build_reports
build_reports(
"results/evidence",
"results/reports",
formats=("html", "pdf", "docx"),
brand_config="examples/brand.json",
)
Choose an output format¶
| Capability | HTML | DOCX | |
|---|---|---|---|
| Individual case summary | Yes | Yes | Yes |
| Images and milestones | Yes | Yes | Yes |
| Expand captures and filter logs | Interactive | Static | Static |
| Light/dark toggle | Yes | No | No |
| Editable document | No | No | Yes |
| Read without a report server | Yes | Yes | Yes |
One recording, several deliverables
Generate formats and languages from the same inputs. Captures, case names and user messages retain their original content.