Skip to content

Robot Framework reports with a real URL, not a file share

Robot Framework already writes a complete static site: report.html for the summary, log.html for the blow-by-blow, all cross-linked. Two lines of YAML and that folder is a URL your whole team can open.

Drop your Robot Framework report here — get a live link

free, no account, live for 7 days.

The artifact dead-end

The summary says 3 tests failed. The why lives in log.html — which is sitting in an artifacts zip, cross-linked to report.html in a way that only survives if you extract everything and open it locally.

So the report gets screenshotted into tickets, or someone re-runs the suite locally to see the log. The website Robot wrote for you never gets served as one.

Two lines to a live link

Build your output like you already do, then hand the folder to the action:

Run the suite

robot --outputdir results tests/

.github/workflows/ci.yml

- uses: bitgate/ship-page-action@v1
  if: always()
  with:
    path: results/
    root-file: report.html

path: results/ deploys exactly what the tool wrote — no detection to configure. root-file: report.html injects a tiny redirect index, so the live URL opens on report.html instead of a directory listing. The link goes in the job summary — add comment: true and it lands on the pull request too.

What you get

  • report.html ↔ log.html cross-links keep working — the output directory is served exactly as Robot wrote it
  • root-file: report.html injects a tiny redirect, so the URL opens on the summary instead of a directory listing
  • if: always() means the failing run is the one that publishes — the log you need most is never skipped

Questions

What is root-file doing exactly?

Robot names its entry point report.html, not index.html. The action injects a minimal redirect index so the live URL lands on report.html; every other file serves at its normal path, so links into log.html work.

Should I deploy output.xml too?

It comes along for the ride when you deploy the directory — harmless, and useful if anyone wants to reprocess results. Exclude it with exclude: results/output.xml if you'd rather not publish raw result data.

Can I keep one stable URL per suite?

Yes: name: regression plus an sp_ API key redeploys the same URL on every run — the link in your dashboard or wiki never goes stale.

Try it on your next run

Anonymous deploys need no account and no key — paste the step, get a link. When you want stable URLs that redeploy in place, an API key and a name are all it takes.

Need to share the report with someone outside GitHub? How to share a GitHub Actions artifact without a login.