Guide

Screenshots in GitHub Actions

Capture the deploy preview on every pull request, so a visual change is something you can see in the diff.

Visual regressions are found late because nothing looks at the page. Tests assert behaviour, review reads the diff, and the rendered result is the one artefact nobody produces. Capturing it costs one step.

The step

Add to any workflow that has a preview URL.

- uses: ironfang-ltd/renderwolf-action@v1
  with:
    api-key: ${{ secrets.RENDERWOLF_API_KEY }}
    urls: |
      https://preview.example.com/
      https://preview.example.com/pricing
    width: 1440
    full-page: true
    format: webp

The step writes a table into the job summary - what it captured, the size, the render time and the credits it used - and uploads the images as artefacts. Reviewers see the table without leaving the pull request.

Why re-runs are free

Identical requests are served from cache and are not charged. Re-running a workflow on an unchanged page costs nothing, which matters on a repository where CI runs on every push and most pushes do not touch the front end.

Doing it without the action

The action is a convenience. Any runner with curl can do the same thing, which is useful on GitLab CI, Jenkins or anything else.

curl -X POST https://api.ironfang.uk/renderwolf/v1/screenshot \
  -H "Authorization: Bearer $RENDERWOLF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://preview.example.com", "width": 1440, "full_page": true}' \
  --output preview.png

Next