Skip to content

Your Playwright report, online before the run finishes

Playwright's HTML report is a full interactive website — traces, screenshots, videos, network logs. GitHub's answer is to zip it and hide it in the artifacts tab. Here's the two-line fix that puts a clickable link on every run instead.

The artifact dead-end

The default flow punishes anyone who wants to look at results: find the workflow run, scroll to artifacts, download a zip, extract it, open index.html — and then watch half the assets 404, because browsers sandbox file:// pages and Playwright's report wasn't built for them.

So reviewers don't look. A red PR gets approved on vibes because opening the report costs two minutes of faff. The information existed; it just wasn't reachable.

Two lines to a live link

Generate the report like you already do, then hand the folder to the action:

Generate the report

npx playwright test

.github/workflows/ci.yml

- uses: bitgate/ship-page-action@v1
  if: always()
  with:
    path: playwright-report/

Omit path entirely and the action auto-detects playwright-report/ on its own. The URL lands in the job summary — add comment: true and it lands on the pull request too.

What you get

  • Traces, screenshots and videos all resolve — every drop mounts at the root of its own subdomain, exactly like localhost did
  • if: always() publishes the report even when tests fail, which is precisely the run you want to inspect
  • Add name: pr-${{ github.event.number }} and an API key for a stable per-PR URL that every push redeploys in place

Questions

Does the link work without an account?

Yes. Anonymous deploys need zero config and stay live for 7 days. Viewers never log in — the URL is the access control.

What about sharded or merged reports?

Point path at whatever directory holds your final report — after npx playwright merge-reports, or each shard's own folder deployed as separate drops. Omit path entirely and the action auto-detects playwright-report/ on its own.

How is this different from GitHub Pages?

No gh-pages branch, no commit churn, no per-repo site limit, no waiting on a Pages build. The report folder is served as-is, seconds after the test step ends.

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.