Visual regression checking with figma-first baselines, pixel+SSIM diffing, ignore regions, and HTML reports.
Project description
visualcheck
Visual regression checking with:
- Figma-first baselines (optionally synced via Figma API)
- Runtime baselines (auto-create when missing; never overwrite by default)
- Pixel diff % + SSIM (with optional resize-on-mismatch + WARN)
- Ignore regions (mask dynamic areas via selectors + explicit rects)
- Self-contained HTML report +
report.json
Install
pip install visualcheck
playwright install chromium
Config (visualcheck.yaml)
project: consumer_website
suite: daily_sanity
envs:
prod: "https://www.wakefit.co"
views:
desktop_profiles: ["desktop_1440x900", "macbook_1440x900"]
mobile_devices: ["iPhone 15 Pro Max", "iPhone 13 mini", "Pixel 7"]
pages:
- id: home
url: "/"
wait_for: "body"
full_page: true
# Optional flows (multi-step user journeys)
flows:
- id: search_flow
start_url: "/"
steps:
- action: click
selector: "text=Search"
- action: wait
ms: 500
snapshots:
- id: after_search
wait_for: "body"
full_page: true
baseline:
# Locked resolution order:
# figma -> runtime -> create runtime baseline (if enabled)
priority: ["figma", "runtime"]
create_if_missing: true
never_overwrite: true
on_created: "INFO" # INFO|WARN|FAIL
compare:
resize_on_mismatch: true
mismatch_level: "WARN" # WARN|FAIL
thresholds:
max_pixel_diff_pct: 0.10
min_ssim: 0.995
ignore_regions:
global:
selectors: ["#cookie-banner", ".chat-widget"]
by_snapshot:
home:
rects:
- {x: 0, y: 0, width: 300, height: 120}
# Optional Figma sync (writes into visual_baseline/<project>/<suite>/figma/...)
# figma:
# token_env: FIGMA_TOKEN
# file_key: "<FIGMA_FILE_KEY>"
# frames:
# - id: home
# node_id: "123:456"
# view_id: "desktop_1440x900" # optional
Commands
Run full check
visualcheck run --env prod
Outputs:
- Baselines:
visual_baseline/<project>/<suite>/figma/<view>/<snapshot>.pngvisual_baseline/<project>/<suite>/runtime/<view>/<snapshot>.png
- Run artifacts:
test_report/<project>/visual_runs/<run_id>/current/...test_report/<project>/visual_runs/<run_id>/diff/...test_report/<project>/visual_runs/<run_id>/report/report.htmltest_report/<project>/visual_runs/<run_id>/report/report.json
Capture only
visualcheck capture --env prod --out current
Diff only
visualcheck diff --baseline visual_baseline/myproj/mysuite/runtime --current current --out report
Sync Figma baselines
export FIGMA_TOKEN="..."
visualcheck figma-sync
Approve current run as runtime baseline (explicit)
visualcheck approve --env prod --run-id 20260207_235500
# Overwrite existing runtime baselines only with:
visualcheck approve --env prod --run-id 20260207_235500 --force
Baseline rules (locked)
For each snapshot + view:
- If a Figma baseline exists → use it
- Else if a runtime baseline exists → use it
- Else → capture and create runtime baseline (controlled by
baseline.create_if_missing)
Notes
- Ignore regions are masked with a solid color before diffing.
- If screenshot sizes differ and
compare.resize_on_mismatch=true, current is resized to baseline size and a warning is recorded.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
visualcheck-0.2.0.tar.gz
(16.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file visualcheck-0.2.0.tar.gz.
File metadata
- Download URL: visualcheck-0.2.0.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26e10d48aca5f9b57c8e4b8519b0a25c5a8a1fe9df075e3bbe26c8ab8f021b77
|
|
| MD5 |
18c7720f668c7462cfe1152fcf82492a
|
|
| BLAKE2b-256 |
c9b8348c2bd1c490071d67d568f96ba2b09abff397919a4219924d77c69b4071
|
File details
Details for the file visualcheck-0.2.0-py3-none-any.whl.
File metadata
- Download URL: visualcheck-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
464c7a753c0b1481a586bafd36e9670d79955b29f98b151db79599ebd875c45b
|
|
| MD5 |
8acc2ec43f53125043133c3ee596eb66
|
|
| BLAKE2b-256 |
432ae73d31f260395382f1b3021ad26c4e2d4313b930eef0127316c9c55a062f
|