skuratovicha/Visual Preview
Per-branch visual gallery + PR visual-diff comments. Boots your app in CI (command-based contract), captures a screenshot catalog, image-diffs base vs head, and posts only the changed screens to the PR — plus publishes an always-current gallery per tracked branch to GitHub Pages.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| config-path | Path to the project visual-preview.config.json | no | visual-preview.config.json |
| mode | branch | pr | gate — branch: (re)publish the per-branch gallery. pr: diff head vs base and comment. gate: cheap standalone probe — validate the config and emit the should-run output WITHOUT booting anything; run it in a tiny job (checkout only, no pnpm/Playwright) and condition the heavy job on it, so non-UI PRs never pay for toolchain setup. | yes | — |
| pages-branch | Orphan branch to publish galleries to | no | previews |
| comment-mode | sticky (update one comment) | new (one per run) | no | sticky |
| capture-base-fallback | pr mode: when the published base gallery is missing/stale, capture a fresh base at the merge-base in a worktree (true|false). When false, the run establishes a new baseline instead of diffing. | no | true |
| summary-api-key | Optional API key enabling the LLM change-summary step (non-blocking). Omit for mechanical-only. | no | "" |
| github-token | Token for commenting / pushing to the pages branch. Read-only on forks. | no | ${{ github.token }} |
Outputs
| name | description |
|---|---|
| should-run | Whether the changed files warrant a capture run (gate mode's whole purpose; also emitted in branch/pr modes). "true" | "false". |
| changed-count | Number of screens that changed (pr mode) |
| gallery-url | URL of the published/updated gallery |
| image-artifact-dir | Dir of staged diff images to upload as an artifact (imageHosting=artifact) |