This PR vs base: the cumulative visual changeset
The This PR vs base changeset shows what a whole pull request did to your UI - new, changed, and removed stories - and survives in-PR accepts and merge.
Every UI Verify build reports the per-commit gate: the stories that are unreviewed on that exact commit, diffed against the branch baseline. The This PR vs base changeset is a second, cumulative view. It answers a different question: what has this whole pull request done to the UI compared to the branch it merges into, from the first commit to the latest.
The per-PR changeset vs the per-build gate
The per-build gate is about one commit: is anything here unreviewed, and should the check block the merge. The changeset is about the pull request as a whole: head versus its base branch (usually main), across every commit on the branch. That difference matters because the latest build alone is blind to two things. A story you added and accepted earlier in the PR renders clean on the latest build, so it never shows up as changed, yet the PR still introduces it. A story your branch deleted or renamed is simply not rendered, so no per-build check ever flags it. The changeset catches both.
New, changed, and removed
The changeset sorts every story the PR touches into three buckets, measured against the base branch:
- New: a story that exists on your head but not on the base branch. The PR adds it.
- Changed: a story that exists on both, but its screenshot differs from the base. The PR alters it.
- Removed: a story on the base branch that is absent from your head. The PR deletes it, or a rename reads as a remove plus a new. This is the accidental-deletion catch a per-build diff cannot see.
It survives in-PR accepts and merge
The base of the changeset is the base branch's accepted state, restricted to the point your branch forked from. Because it is computed against that fixed fork point and not against the latest build's baseline, accepting a story inside the PR does not empty the changeset: the story stays listed as the PR's cumulative effect, now marked accepted. The view is recomputed on every review, so it also tracks the base branch advancing and other PRs landing while yours is open. After the PR merges it still resolves against the base each variant diffed against, so a merged PR's changeset does not collapse to nothing.
Where to find it
- On a pull request build's page, a scope switcher toggles between This build (the per-commit gate) and This PR (the cumulative changeset).
- The sticky UI Verify pull-request comment carries a This PR vs base section listing the new, changed, and removed stories with their review status.
- Over MCP, so your coding agent can read it in the same place it opened the PR. See Triage visual changes from your coding agent.
Can my coding agent read the PR changeset?
Yes. The UI Verify MCP exposes get_pr_changeset, which returns the new, changed, and removed lists with per-story review status for a build you select by commit, PR number, or build id, and list_pr_stories, which pages through any one of the three lists. This is how an agent confirms that the whole PR did only what it intended to the UI, not just that the latest commit is reviewed. See Triage visual changes from your coding agent.
Is the PR changeset available on a public project?
Yes. On a public project, anyone viewing a pull request build sees the This PR vs base scope and its changeset without logging in, the same read-only view a member gets. There is no separate flag to enable it.
Visual testing for agents
UI Verify captures your UI on every pull request and an AI judge tells an intended change from a real regression. See how it works.
Get started