Vision SDKEarly access

Your Playwright tests, checked by Delta-QA. One line per page to check.

@delta-qa/vision sends Delta-QA every page your Playwright tests check. Delta-QA compares it with its baseline element by element and tells you which element changed. Your regression tests written in code and your scenarios recorded without code live in the same workspace: same baselines, same review, same report.

The Vision SDK is first available in early access: contact us to use it on your Playwright tests.

Three steps in your tests

  1. Create an API key in your Delta-QA workspace and store it in a CI secret. The SDK reads it from DELTAQA_API_KEY; the workspace is the key's.
  2. Add a check where your test must verify the page: vision.check("Payment"). Its name matches it with its baseline.
  3. Push. On the first run, every test is "New": its first screenshot becomes the baseline. On the second, with the site unchanged, no difference is reported.
import { test } from "@playwright/test";
import { Vision } from "@delta-qa/vision";

const vision = new Vision(); // reads DELTAQA_API_KEY

test("Checkout", async ({ page }) => {
  await vision.open(page, { id: "checkout", name: "Checkout" });
  await page.goto("https://shop.example.com/checkout");
  await vision.check("Payment");
  await vision.close(); // fails the test on an unreviewed difference
});

The SDK exposes only settings Delta-QA applies: none is accepted without effect. The tag and the reference tag are optional; without them, the SDK infers them.

An element-by-element comparison, not pixels

For each check, the SDK sends the page (its HTML, the viewport) and the resources the browser loaded. Delta-QA reopens the page and compares its elements with the baseline's, like a scenario step: the report says which element changed — the "Pay" button, blue then green — not a pixel area.

An unreviewed difference fails the Playwright test, and the CI log gives the batch link. You open the step, read the report and decide: "Intended" or "Bug".

Each resource is recognised by its hash: a resource your workspace already has is never sent again. On a suite's second run, with the site unchanged, only the HTML and the hashes leave.

One baseline per branch, no automatic merge

  • The tag is inferred from your git branch or the CI, and the reference tag from the PR's target, otherwise main. A new branch is compared with main from its first run, and the batch shows "compared with main".
  • "Intended" applies to the tags you tick, "this tag only" by default: other branches see nothing change.
  • A test's history filters by environment and by tag; any scan can be set as the baseline, for the tags you tick.
  • The tests of one CI run form a batch, shared by machines running in parallel; the batch list reads like your CI.

Create your scenarios with an AI agent: the MCP server

Questions about the Vision SDK

Which frameworks does the Vision SDK cover?
Playwright, in TypeScript and JavaScript, on Chromium. Cypress, WebdriverIO, Firefox and WebKit will follow. Your scenarios recorded without code are checked in the same Delta-QA workspace.
Do I have to rewrite my Playwright tests?
No: you add a check where a page must be verified, and the rest of the test stays the same. A check's name matches it with its baseline: two checks with the same name in one test fail the run, naming the duplicate.
What data does the SDK send?
The tested page (HTML, viewport) and the resources the browser loaded, except video and audio. They are used only to compare, and stay in your workspace. Do not test on personal production data: that choice is yours.
Do my no-code scenarios change?
No: recording, replay and the report stay the same. A scenario can now run under a tag, and "Intended" applies to the tags you tick.
Can I use it from another language?
The SDK will be in TypeScript and JavaScript. Another language will be added if users ask for it.

Have Delta-QA check your Playwright tests

To use Vision, contact us: it is first available in early access. Tell us which tests you want checked, and we open your access.