Playwright ARIA Snapshot & Accessibility Tree Change Monitor
Pricing
$12.00 / 1,000 aria page snapshot checkeds
Playwright ARIA Snapshot & Accessibility Tree Change Monitor
Detect accessibility-tree changes on public pages with Playwright, persistent baselines, desktop/mobile checks, and privacy-safe hashed change evidence.
Pricing
$12.00 / 1,000 aria page snapshot checkeds
Rating
0.0
(0)
Developer
ProdukDigitalAli
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
Detect changes in the rendered accessibility tree of public web pages. Capture privacy-safe Playwright ARIA snapshots, keep a persistent baseline, and compare subsequent runs on desktop or mobile.
What you can monitor
- Accessibility-tree regressions after website deployments.
- Changes to navigation, forms, component roles, accessible labels, and states.
- Separate desktop and mobile page structures in release QA.
- Recurring checks from an Apify schedule or API workflow.
This Actor detects changes, not whether they violate WCAG. An unchanged snapshot does not certify accessibility. Names and state/text payloads are hashed, so change examples show privacy-safe tokens rather than human-readable page content. Ordering changes can set CHANGED even when added/removed counts are zero.
Quick start
{"urls": ["https://example.com/"],"monitorKey": "homepage-daily","viewport": "desktop","settleMs": 1000,"navigationTimeoutSeconds": 30,"maxChanges": 50,"resetBaseline": false}
The first successful run creates a baseline. Subsequent runs with the same monitorKey, exact URL, and viewport compare against the last successful snapshot and replace it. Use resetBaseline true when intentionally accepting a new baseline. Query strings participate in the identity hash but are removed from displayed URLs.
Input
| Field | Default | Behavior |
|---|---|---|
| urls | https://example.com/ | 1-10 public HTTP(S) URLs; duplicates removed |
| monitorKey | homepage-daily | Stable 3-64 character label; letters, numbers, hyphens, underscores |
| viewport | desktop | desktop 1365x768 or mobile 390x844 |
| waitUntil | domcontentloaded | domcontentloaded, load, or networkidle |
| settleMs | 1000 | Additional 0-10,000 ms wait before capture |
| navigationTimeoutSeconds | 30 | 5-60 seconds per page |
| maxChanges | 50 | 1-200 change examples |
| resetBaseline | false | Replace current baseline without comparison |
| proxyConfiguration | unset | Optional Apify proxy; proxy services may cost extra |
Results
The dataset contains one row per checked page:
- BASELINE_CREATED: first successful capture or intentional reset.
- UNCHANGED: snapshot matches the previous capture.
- CHANGED: snapshot differs; added/removed line counts and capped examples are returned.
- ERROR: capture or persistence failed; no event charge for that failed check.
Rows include safe page URLs, viewport, HTTP status, current/previous snapshot hashes, node counts, changes, duration, transfer statistics, and error code. The OUTPUT record summarizes requested, succeeded, failed, changed, and charged counts. The Output tab links to the dataset and summary.
Baselines are stored in the account's named key-value store playwright-aria-snapshot-baselines. Keys are hashes of monitorKey, URL, and viewport. Preserve the store for scheduled comparisons; deleting the corresponding baseline record causes the next run to initialize it again. Avoid concurrent runs for the same monitorKey and URL because the baseline uses last-write semantics.
Suggested tasks
- Daily homepage check: desktop, stable monitorKey, resetBaseline false.
- Mobile release regression: mobile, a separate monitorKey, same URL list.
- Approve a new baseline: run once with resetBaseline true, then turn it off.
Pricing
Pay per event: USD 0.012 per aria-snapshot-checked event. One successful check is charged after its dataset result and persistent baseline are saved. First-time baseline creation is also one useful check. Failed checks do not receive this event charge. Set the run's maximum charge high enough for the URL count (one page needs USD 0.012). Platform compute/storage and optional proxy charges depend on the user's plan and account.
Security and limits
Public pages only. Credentials, cookies, custom headers, and arbitrary scripts are not supported. Private, loopback, metadata, reserved, and mixed public/private DNS targets are blocked. Browser traffic uses a DNS-pinned egress guard. Downloads and service workers are disabled. Each page is limited to 48 MiB transfer, 250 proxy connections, and 2,000 snapshot lines. Baselines hash all non-role payloads, including names, text, resource URLs, and states. URL queries and fragments are stripped from dataset URLs.
Only rendered body content is captured. This does not interact with menus, scroll lazy-loaded sections, authenticate, or guarantee coverage of embedded documents. Dynamic content can create noise; keep URL, viewport, readiness, and settle settings consistent. A fully failed run exits as FAILED.
Validation
Cloud baseline and comparison smoke tests passed. All four Apify schemas validated. Sixteen local tests cover input limits, redaction, diffs, public DNS enforcement, and proxy behavior. Actual PPE run recorded one successful event after persistence.