Visual Tests catch UI regressions that functional tests cannot see. A functional test asserts that a button exists and can be clicked - it says nothing about the button rendering off-screen, a CSS refactor shifting the layout, or a font update breaking line wrapping. Visual Tests work on the rendered pixels: they capture snapshots of your app, compare them with a previously approved version, and report every visual difference for review.
Snapshots can come from wherever your UI already runs. Add a Buddy plugin to your existing Playwright, Selenium, Cypress or Puppeteer tests, upload a built Storybook to cover components without writing test code, or go scriptless and hand Buddy a list of URLs or a sitemap.
Each run creates a session in a suite, with snapshots rendered across every browser, system and device resolution enabled in the suite settings, and compared against the approved baseline. A session without differences passes automatically; a session with differences waits for review, which you can also use as an approval gate before a deployment.
bdy CLI, so they can run anywhere - in Buddy pipelines, in GitHub Actions, or on your own machine.
In this section
| Page | What it covers |
|---|---|
| Getting started | What Visual Tests are, the bugs they catch, and how suites, sessions and approvals fit together. |
| E2E frameworks | Add the Buddy visual testing plugin to existing Playwright, Selenium, Cypress or Puppeteer tests. |
| Storybook | Upload a built Storybook to get component coverage with no test code, plus a hosted Storybook per version. |
| Scriptless Testing | Snapshot a list of URLs or a whole sitemap from the Visual Tests action or the CLI. |
| Running Visual Tests | Where sessions can run: Buddy pipelines, GitHub Actions, or locally. |
| Suite Settings | Every suite setting explained - browsers, devices, baseline branch, threshold, timeouts and per-snapshot overrides. |
| Sessions, Snapshots & Baselines | How sessions and snapshots work, and how the baseline for each snapshot is picked. |
| Reviewing & Approvals | Navigate diffs, approve or reject snapshots, auto-approve branches, and gate deployments on approval. |
| Troubleshooting | Fixes for dynamic content, flaky rendering, authenticated pages and lazy-loaded elements. |
Getting started
Learn what Visual Tests in Buddy are, why they catch bugs functional tests miss, and how suites, sessions, and approvals work together.
E2E frameworks
Add Buddy visual testing plugins to your existing E2E tests - Playwright, Selenium, Cypress, and Puppeteer.
Storybook
Run visual tests on your Storybook in Buddy - upload the built Storybook, compare stories with approved baselines, and get a hosted Storybook per version.
Scriptless Testing
Visual testing without any test code - point Buddy at URLs or a sitemap and let it capture and compare snapshots, via CLI or a pipeline action.
Running Visual Tests
Where to run Buddy Visual Tests - in Buddy pipelines, GitHub Actions, or locally with the CLI.
Suite Settings
Every Visual Tests suite setting explained - browsers, devices, baseline branch, threshold, timeouts, and per-snapshot overrides.
Sessions, Snapshots & Baselines
How Visual Tests sessions and snapshots work, and how the baseline for each snapshot is determined.
Reviewing & Approvals
Review visual test sessions in Buddy - navigate diffs, approve or reject snapshots, configure auto-approve branches, and gate deployments on approval.
Troubleshooting
Fix common Visual Tests problems - dynamic content, flaky rendering diffs, authenticated pages, and lazy-loaded elements.