Playwright ARIA Snapshot & Accessibility Tree Change Monitor avatar

Playwright ARIA Snapshot & Accessibility Tree Change Monitor

Pricing

$12.00 / 1,000 aria page snapshot checkeds

Go to Apify Store
Playwright ARIA Snapshot & Accessibility Tree Change Monitor

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

ProdukDigitalAli

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

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

FieldDefaultBehavior
urlshttps://example.com/1-10 public HTTP(S) URLs; duplicates removed
monitorKeyhomepage-dailyStable 3-64 character label; letters, numbers, hyphens, underscores
viewportdesktopdesktop 1365x768 or mobile 390x844
waitUntildomcontentloadeddomcontentloaded, load, or networkidle
settleMs1000Additional 0-10,000 ms wait before capture
navigationTimeoutSeconds305-60 seconds per page
maxChanges501-200 change examples
resetBaselinefalseReplace current baseline without comparison
proxyConfigurationunsetOptional 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

  1. Daily homepage check: desktop, stable monitorKey, resetBaseline false.
  2. Mobile release regression: mobile, a separate monitorKey, same URL list.
  3. 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.