Review before your agents ship

Agents change UI faster than anyone can open a browser. Buddy renders every change, diffs it against an approved baseline, and hands you, or your agent, the exact pixels that moved.

Trusted by the world's leading engineering teams

RakutenCostaShellNew York PostAccentureZendeskSonarSprykerDocplannerDecathlonSeequentCGI

Every change clears review

Human or agent written, every change passes the same checkpoint before it lands.

  1. 01PlanA ticket, a prompt, a fix.
  2. 02Change landsAn agent or dev writes it.
  3. 03Visual TestsView diffed, pixel by pixel.
  4. 04Human reviewApprove, or send it back.
  5. 05Baseline updatedThe new reference is set.
What it catches

See what your agents changed

Buddy compares what the browser actually painted, not the code behind it. You get baseline and current displayed side by side, every difference outlined.

Every browser, every device

Chrome, Firefox and Safari, from HD desktop to iPhone, Pixel and Galaxy. Each variant resolves its own baseline, so a mobile-only regression can't hide behind a clean desktop.

Only the changes worth your time

Set the diff threshold, or hand Buddy the CSS and XPath selectors for the parts that never sit still - clocks, carousels, ad slots - so rendering noise never fails a build.

Built for the pipeline

Baselines, approvals and auth - handled in the run that ships your code.

One baseline per branch.

Each branch compares against its own approved baseline - you review a change once.

Gates the pipeline.

The run waits for your approval; on GitHub, the commit status blocks the merge.

Buddy Works behind auth.

Hand Buddy your login state and pages behind auth test like any other.

What it takes

90-second setup

Wrap your existing E2E run and Buddy captures snapshots as your tests navigate, or skip the test code entirely with Storybook.

Set up tests for Playwright

Wrap Playwright's test with the Buddy fixture, then call takeSnap() on any stable UI state.

Playwright docs
import { test as base } from "@playwright/test";
import withVisualTestPluginFixture
  from "@buddy-works/visual-tests-playwright";

const test = withVisualTestPluginFixture(base);

test("Homepage", async ({ page, visualTestPlugin }) => {
  await page.goto("http://localhost:3000/");
  await visualTestPlugin.takeSnap(page, "homepage");
});
What you get

Agent-ready by design

The whole loop runs without a browser: capture, compare, review. Whatever writes your UI can also check it.

CLI

Everything the UI does, scriptable from your terminal.

MCP

Buddy as an MCP server, scoped tools for any agent.

Skills

Portable know-how for agents, added in one command.

Plugin

MCP, skills and commands, bundled.

TerminalMCP · bdy
  1. Connect to Buddy
  2. bdy mcp --tools suites
  3. visual test suites · 1 linked
  4. Run the visual suite
  5. bdy tests visual session create "npx playwright test"
  6. session 128 · 12 views · 3 changed
  7. Read back what changed
  8. pricing/herolayout shift
  9. pricing/plan-cardstyle drift
  10. checkout/summarymissing element
  11. checkout/summary lost its total row - that one's mine
  12. Edit src/checkout/Summary.tsx
  13. Re-run the suite
  14. session 129 · 2 changed · 0 unintended
  15. Handing off 2 intentional changes for review

One CLI to run it all

Scriptless capture, wrapped E2E runs, CI gating - every flow above starts from the bdy CLI. Install it and capture your first snapshot.

>_ Install npm i -g bdy
>_ Capture bdy tests capture --urls "https://your.app"

Get started

Add visual review to your pipeline

Start scriptless with the CLI or wrap your existing tests. Free while in Preview - no credit card required.

Get started