Catch visual regressions before they reach production. Screenshot-based testing that plugs into your CI/CD pipeline.
A small CSS change can cascade into broken layouts across dozens of pages. Unit tests don't catch visual regressions, and manual QA is too slow to run on every deploy. Teams ship broken UIs because they can't see what changed.
Capture screenshots of key pages before and after deploys. Compare them programmatically to catch visual regressions automatically.
Screenshot your key pages on the main branch to establish a visual baseline.
On each pull request, capture the same pages from the preview deployment.
Compare screenshots pixel-by-pixel and flag differences in the PR.
A single API call is all you need.
// In your CI pipeline
const pages = ["/", "/pricing", "/app", "/settings"];
const baseUrl = process.env.PREVIEW_URL; // e.g., pr-123.preview.example.com
const screenshots = await Promise.all(
pages.map(async (page) => {
const res = await fetch(
`https://api.porto.dev/v1/screenshot?url=${baseUrl}${page}&width=1280&full_page=true`,
{ headers: { Authorization: `Bearer ${process.env.PORTO_API_KEY}` } }
);
return { page, buffer: Buffer.from(await res.arrayBuffer()) };
})
);
// Compare against baseline screenshots from main branchSee results instantly with pre-configured defaults for this use case.
Capture entire pages to catch regressions above and below the fold.
Test desktop, tablet, and mobile viewports in parallel.
Sub-second screenshots keep CI pipelines fast.
Screenshot all critical pages in a single batch request.
No credit card required. Scale up as you need with simple, predictable pricing.
Automate visual bug reports. Capture the exact state of any page when issues are detected.
See exactly how your pages render. Catch SEO issues that crawlers miss with visual audits at scale.
Give your AI agents eyes on the web. Screenshots as structured input for LLMs, vision models, and autonomous workflows.