Screenshot Comparison for QA - DiffShot
Pricing
from $0.12 / image pair compared
Screenshot Comparison for QA - DiffShot
Compare before and after screenshots for meaningful text, price, and layout changes. Read the default dataset. Set maxTotalChargeUsd above $0.12.
Pricing
from $0.12 / image pair compared
Rating
0.0
(0)
Developer
Dravara LLC
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
DiffShot
Compare the before and after screenshots for meaningful changes.
DiffShot compares a before screenshot with an after screenshot and reports what changed in human terms. It is not another website-change monitor: its job is to separate substantive changes from pixel or formatting noise.
Changes it can explain
- Added, removed, or revised text
- Changed numbers, dates, and prices
- Added, removed, or changed controls
- Changed obligations or policy language visible in the images
- Moved elements
- Formatting-only changes when explicitly requested
The result includes structured before/after regions, severity, an explanation, a deterministic pixel-change ratio, and a side-by-side annotated PNG.
Output example
This sanitized example shows the complete dataset contract. The adapter stores the comparison PNG in the run's key-value store and returns its storage key.
{"summary": "The renewal price increased and the call-to-action label changed.","changes": [{"change_type": "price","severity": "high","title": "Annual renewal price increased","before_text": "$99 per year","after_text": "$129 per year","explanation": "The visible annual price increased by $30.","regions": {"before": {"x": 0.61, "y": 0.24, "width": 0.18, "height": 0.06},"after": {"x": 0.61, "y": 0.24, "width": 0.18, "height": 0.06}}}],"limitations": [],"comparison_image": {"filename": "diffshot-comparison.png","mime_type": "image/png","storage_key": "diffshot-comparison.png","sha256": "1111111111111111111111111111111111111111111111111111111111111111","width": 2400,"height": 900},"before_sha256": "2222222222222222222222222222222222222222222222222222222222222222","after_sha256": "3333333333333333333333333333333333333333333333333333333333333333","pixel_change_ratio": 0.0342,"ci_gate": {"status": "not_evaluated","passed": null,"policy": null,"checks": [],"decision_summary": "No CI gate policy was supplied. The comparison was not used to pass or fail a build.","evidence_notice": "The pixel-change ratio is deterministic; review model-produced findings against the numbered evidence."},"review_notice": "Verify each claimed change against its numbered before/after region."}
Optional CI gate
Add ci_gate_policy when the comparison should pass or fail a build. Supported
criteria are:
- Maximum pixel-change ratio
- Maximum meaningful-change count
- Blocked severities
- Blocked change types
- Any reported limitation
At least one criterion is required. A value exactly equal to a maximum passes.
The result always includes ci_gate: not_evaluated when no policy was
supplied, otherwise passed or failed with one check per criterion and the
numbered changes that caused a failure.
The gate evaluation itself is deterministic. The pixel ratio is computed by image code. Meaningful-change count, severity, type, and limitations depend on model-produced findings. Review the numbered regions and comparison PNG before accepting a baseline.
A failed CI gate is still a completed comparison and successful result event; it does not turn the Actor run into a provider failure or remove the creator charge.
Supported input
Exactly two PNG, JPEG, or WebP images per run; each at most 12 MB, 8,192 pixels per side, and 20 megapixels. Images selected with the Apify Console file uploader are read inside this limited Actor with its scoped storage access. Direct inline data URLs should stay at or below 6 MB of raw image bytes each because Apify run-input requests have a smaller limit than uploaded or remote files. Image order is always before, then after. Identical normalized images skip model analysis and return an exact no-change result.
Automation boundary
API and CI callers should keep approved baseline images under their own review and start one Actor run for each before-and-after pair. This Actor does not replace baselines or combine several pairs under one result event. Each pair therefore keeps the same input limits, result contract, and creator charge as a console run.
For API starts, check the live Actor pricing first and send an explicit Apify
maxTotalChargeUsd ceiling for each run. Do not rely on a client default.
This Actor accepts images, not page URLs. Reliable URL capture requires a separate hardened browser Actor with private-network blocking, redirect revalidation, navigation limits, and browser isolation. That Actor is not part of this release.
Self-service run and recovery
No separate Dravara account, API key, integration, or support handoff is
required. Upload the before image first and the after image second, start one
run, read the default-dataset item, and open diffshot-comparison.png from the
run's key-value store. Review reported limitations before acting on the
comparison.
If input validation fails, correct the files or named field and start a new
run. If the analysis service is temporarily unavailable, wait a few minutes
and start one new run; a failed run does not continue in the background. If a
charge, dataset, or artifact state ever looks unclear, do not loop automatic
retries: inspect that run's Charges, default dataset, and key-value store
first. The Self-service failure details output opens the sanitized
key-value-store OUTPUT record with the stable error code, retry guidance,
and next action.
Billing
Dravara's creator charge for a successful run is $0.40005: the $0.00005
apify-actor-start event plus $0.40 for image-pair-compared. Apify
separately passes its variable platform usage to the customer and determines
the final displayed total; Dravara does not reduce its creator charge to absorb
that usage. The result event is captured only after the comparison artifact and
dataset item exist. Validation or provider failures skip the result charge,
but the Actor-start charge and Apify platform usage can still apply. The
synthetic sample input is billed like any other run.
Privacy
Both images and optional context are processed by Dravara, LLC's private
service and the OpenAI API using store: false; applicable provider
abuse-monitoring retention may still apply. Apify retains normal run storage
under the runner's settings. Remove credentials and unrelated personal or
regulated information before upload.
Optional defect contact: support@dravarahq.com. Send only the Apify run ID and safe error text, never the input. Support does not complete or deliver failed runs.
