What you can do with Difora
Visual regression testing for teams that capture in their own CI and want screenshot comparison, storage and backups on EU-owned infrastructure.
Start with one screenshot suite. Add the workflow features you need as your team grows.
Set up your first visual review → · Open the in-app guide →
Bring screenshots from your tests
Use the Playwright fixture or screenshot helper, the Storybook test-runner hook, a Cypress recipe, or any tool that writes PNGs. Difora's public CLI uploads your suite and avoids transferring images already stored for the project.
Your CI runs the browsers. Capture each browser, viewport and theme you need, and give each variant a stable filename. Difora does not run a hosted browser farm.
Capture recipes · Open-source CLI on GitHub
See and review what changed
Inspect baseline and current screenshots side by side, highlight the diff, blend with onion view, swipe between versions, or focus on the current image. Zoom, pan, search, filter and use keyboard navigation to work through a build.
Approve or reject individual snapshots or selected groups. Review progress shows what remains. New and removed screenshots need a decision too. Choose system, light or dark appearance in the app.
Keep branches in context
Approvals update the build's branch baseline. Approved feature-branch images are recognized when they arrive on the baseline branch. When a retained successful build exists at the exact merge-base commit, Difora uses it as the comparison anchor; otherwise the review shows the fallback.
Owners can clean stale branch baselines in Settings → Branches. Active builds and open reviews are protected.
Merge-base setup and cleanup rules
Gate your CI and connect your repository
The CLI uploads, waits for comparison, prints a review link and returns an exit code your CI can use. Branch and commit detection supports nine CI providers. Parallel shards combine into one build and review, with retries and upload progress.
GitHub, GitLab and Bitbucket Cloud can receive repository statuses and
an updated PR/MR summary. Provider setup and permissions are required.
The CLI's optional --post-status posts a status using CI
credentials; PR comments require the server integration.
GitHub Actions · GitLab CI · Bitbucket Pipelines · Other providers · Sharding
Control noise with explicit rules
Set project thresholds, draw ignore rectangles in the viewer, and save
per-snapshot rules. Or keep a versioned
difora.config.json beside your screenshots so the rules
travel with your code. Repository rules take priority over saved UI
rules.
Comparison is deterministic. Ignore rectangles use original screenshot pixels, and image dimension changes still count. Stabilize animations, data and fonts in your capture tests.
Thresholds, patterns, ignore regions and JSON schema
Send results where your team works
Owners configure email, Slack and signed webhooks in project Settings → Notifications. Choose events, send a test and inspect delivery history. Failed deliveries retry automatically; members can view the history.
Repository summaries link to the authenticated review. Screenshot thumbnails are off by default. If enabled by an owner, their preview URLs are public to anyone who has the link, and repository image proxies may cache them outside the EU. Full screenshots remain authenticated.
PR/MR permissions and preview privacy
Review together and manage your data
Invite teammates with owner or member roles. Switch between organizations, manage project CI tokens, see monthly usage and plan limits, and delete projects or your account when needed. Image retention depends on your plan.
Screenshot processing, storage and backups run on EU-owned infrastructure. Optional repository and notification integrations receive the metadata you choose to send. See the privacy policy for the data boundary.
Current availability and limits
- Early access is invitation-only. Request access.
- Until npm publication is complete, install the CLI from its public source or a release tarball. The installation guide explains the current route.
- Capture runs in your CI. There is no hosted browser/device farm, scheduled URL scanner or live Storybook hosting.
- Difora compares PNGs. It does not run accessibility audits, compare DOM/text snapshots or diagnose the source-code cause of a change.
- There are no snapshot discussion threads, reviewer assignments, SSO/SAML or audit-log export yet.
- Use distinct filenames for browser and viewport variants; these are not separate identity fields.