# Share a reg-suit Report — Visual Diffs Without an S3 Bucket

Canonical: https://commareports.com/share-reg-suit-report
Published: 2026-09-14

> reg-suit builds an HTML report with side-by-side and slider diffs, then wants a bucket to publish it to. Skip the bucket: publish the report folder to Comma and get a link.

# Share a reg-suit report

Visual regression testing has an audience problem that no amount of tooling
fixes. The tool produces an image diff; the only person qualified to judge it is
a designer; the designer does not have a CI login, a `.reg/` directory, or any
intention of acquiring either.

reg-suit knows this, which is why it ships publish plugins for S3, GCS and
GitHub Pages. Those work, and they also mean provisioning a bucket, an IAM
policy and a lifecycle rule before a single screenshot gets looked at.

## The report is already a folder

```bash
npx reg-suit run
```

```
.reg/
├── index.html      # the comparison UI: side-by-side, slider, blend
├── expected/       # baseline screenshots
├── actual/         # this run
└── diff/           # highlighted differences
```

That is a complete static report. The publish plugins only move it.

## Move it with a drag instead

Drag `.reg/` (or a zip of it) into [Comma](https://commareports.com/):

- `index.html` becomes the **report body**.
- `expected/`, `actual/` and `diff/` upload alongside it, with relative
  references rewritten to the uploaded copies — which is what keeps the slider
  and side-by-side comparisons working.
- Scripts run inside a sandboxed iframe (`allow-scripts`, no
  `allow-same-origin`).

From CI:

```bash
npx reg-suit run || true

REPORT=$(curl -fsS -X POST "https://commareports.com/api/v1/reports" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html .reg/index.html \
        --arg t "Visual diff — PR #$PR_NUMBER" '{title: $t, html: $html}')")
```

Images go up through `POST /api/v1/reports/$REPORT_ID/assets` as base64 — one
call per screenshot, worth scripting once. See the
[API reference](/docs/api) and [publishing from CI](/docs/ci).

`|| true` because reg-suit exits non-zero when it finds differences, which is
the run that needs a link.

## Send the link to the person who can judge it

Access is set per report — private, your team, anyone signed in at your domain,
or anyone with the link. For a contract designer or an external brand reviewer,
link-anyone with comment rights is the setting that removes every obstacle
between them and the diff. See [sharing & access control](/docs/sharing).

Their verdict lands as an anchored thread on the specific comparison:

- "The 2px shift is the new line-height — approved."
- "This one is real: the badge is clipping at 320px."

Which is a far better record than a thumbs-up emoji in a channel, because it
stays attached to the image it was about. See
[commenting on HTML](/comment-on-html).

## Baseline changes get a history

Publishing each run as a report keeps a trail of what the UI looked like and
when it changed — including the intentional changes, which are the ones nobody
documents and everybody later asks about.

## Limits

- **Entry HTML: 5 MB.** Assets: 25 MB per file, **250 MB and 500 files total**.
  A large suite has three images per case, so 500 files is ~160 comparisons —
  publish the changed set rather than the full baseline.
- **60 requests/minute per token.**

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision
history.

**[Publish a visual diff →](https://commareports.com/)**

### Related

- [Share a BackstopJS report](/share-backstopjs-report) · [Share a Percy report](/share-percy-report)
- [Share a Chromatic build](/share-chromatic-build) · [Share an Applitools report](/share-applitools-report)
- [Share a Storybook build](/share-storybook-static) · [Share a Playwright report](/share-playwright-report)
