CLOUDCRUISE UNITED

CloudCruise Demo Website

Test pages for browser automation challenges. Each page demonstrates different web features that can be tricky to automate.

πŸ“

Forms & Input

25 pages

Login

/login

Simple login form with username and password fields

Native Keystroke Tokens

/keypress-tokens

Targets for INPUT_TEXT {{key}} tokens (Tab, arrows, Space, Escape, Ctrl+A/C/V) with a keydown log for assertions

Paste Input

/paste-input

Multi-line textarea target for the INPUT_TEXT Paste (clipboard + Ctrl+V) toggle; echoes value plus char/line counts for assertions

Cookie Session Login

/cookie-login

Login backed by a real Set-Cookie session; page auto-redirects to the dashboard when the cookie is present. For testing session-persistence/browser-state behavior.

Component Params Test

/component-params-test

Three tabbed portals with identical flow but different fields β€” for testing parameterized components

Fingerprint

/fingerprint

Run the admin fingerprint collector from the demo site without logging in

Patient Lookup

/patient-lookup

Patient ID lookup form that rejects invalid IDs (for testing input_required recovery)

Upstream Error Test

/upstream-error-test

Missing expected element / precondition scenarios (no-result, conditional action, stalled post-state) that classify as UPSTREAM_ERROR / PREREQUISITE_NOT_MET β€” for the Fix-with-Builder-Agent button

Shipping

/shipping

Package tracking form with conditional popup for certain inputs

File Upload

/file-upload

Drag-and-drop file uploader with metadata display

Upload Reliability

/upload-reliability?mode=sync&status=500

Controllable upload target for network-signal classification (?mode=sync|commit|async, ?status=, ?delay=, ?commitStatus=, ?verdict=). Issues a real browser POST so the network listener captures server-side upload failures (5xx/4xx/slow, upload-ok-but-commit-failed, async accept/reject).

Select

/select

Basic select dropdowns including one inside an iframe

Scrollable Selects

/select-scrollable

Various select types: native, custom, searchable, multi-select, radio listbox, datalist

Password Expired

/password-expired?variant=kinnser

Password change forms (?variant=kinnser|availity|ecw|onehealthcare|reject-first|alphanumeric)

TFA Setup (Standalone)

/tfa-setup?variant=dismissable

Standalone 2FA setup screens (?variant=dismissable|method-selection|authenticator|authenticator-qr-only|sms-verify|email-verify)

Login + TFA Setup Flow

/tfa-login-flow?variant=dismissable

Stateful login β†’ TFA setup β†’ code entry β†’ dashboard. After setup, subsequent logins ask for code only. Add ?reset=true to clear state (?variant=dismissable|authenticator|authenticator-qr-only)

Component Test

/component-test

Form with breakable selectors for XPath recovery propagation testing (?broken=true swaps selectors)

XPath Healing v2 β€” Full Pipeline E2E

/xpath-healing-v2

Healthcare prior-auth portal simulating framework migration drift. Full self-healing cycle: Stage 0 LLM static attempt β†’ COMPUTER_USE fallback β†’ pre-click capture β†’ crystallize β†’ verify β†’ promote. (?drift=false|true|hard ?delay=<ms>)

Healing Promotion Test

/healing-promotion-test

Button with drifting id (changes every page load) for testing the full healing promotion pipeline: AI_FALLBACK β†’ XPath capture β†’ writeback β†’ static graduation

XPath Cascade

/xpath-cascade

Button + input with per-variant attributes for XPath cascade tier testing (?variant=default|data-testid|id-attr|aria|placeholder|role|text-content|class-only|broken|heavy-dom|multi-action|shifted-attrs|table|delayed-render)

XPath Cascade CRM

/xpath-cascade-crm

Full CRM dashboard: login (admin/password), cookie banner, sidebar nav, 15-row data table, modal contact form with 3-tab wizard, toast notifications, 1000+ DOM elements (?variant=default|logged-out|modal-open|cookie-banner|slow-load|404|duplicate-contacts, ?reset=true)

XPath Cascade Healthcare

/xpath-cascade-healthcare

Healthcare claims portal: login (provider/claims123), patient search with shuffled columns, 4-step claim wizard, accordion sidebar, CAPTCHA overlay, version drift, session expiry (?variant=default|expired-session|captcha|maintenance|rate-limit|slow-results|deleted-patient|password-expired|force-logout, ?version=1|2, ?reset=true)

Login + Password Recovery Flow

/demo-login?variant=kinnser

Full flow: login β†’ password expired β†’ dashboard with claim form. Tests end-to-end password update recovery.

Claims Form

/claims-form

Dense insurance claims form for enrichment testing

Multi-Match Test

/multi-match-test

Two identical Submit buttons; an XPath selector matches both, triggering the deterministic multiple-matching classification under INCORRECT_FORM_INPUTS

πŸ–₯️

CareTend (Mandolin RDP)

4 pages

CareTend Flyout Menu

/caretend-flyout-menu

Repro of CareTend's cascading Workflows hover menu (Workflows β†’ Infusion/SPRx Workflow β†’ ePrescription Manager). Tests whether teleport-style clicks keep the cascade open or whether the pointer must dwell/hover along the trajectory. ?mode=hover|hover-strict|click|sticky, ?openDelay=ms (submenu render delay), ?grace=ms. Live HUD shows open levels + last-opened leaf; stable data-testids on every menu node.

CareTend ePrescription Manager

/caretend-eprescription

Repro of the crowded ePrescription Manager grid: dense filter row, crammed column funnel icons, and a vertically + horizontally scrollable ~105-row table. Working Type filter (funnel β†’ 'Is equal to' β†’ type 'New Rx' β†’ Count updates) plus a Filter Search box; rows carry <No Matching Patient>/<Multiple Matches> sentinels. All synthetic data (no PHI). ?rows=N, ?type=New+Rx. Live scrollTop/scrollLeft + count readouts.

CareTend ePrescription (Paged Harvest Test)

/caretend-eprescription-paged?type=New+Rx

Deterministic surface for validating LOOP-based positional grid harvesting. Fixed 19-row viewport with dedicated scroll-up/down buttons (data-testid scroll-up-row / scroll-down-row) that advance the grid by exactly one row per click, plus fully-identical adjacent New Rx rows so positional capture can be tested against content-dedup. All synthetic data (no PHI). ?rows=N (capped 2000), ?type=New+Rx.

Bool Vision Stress Test

/bool-vision-stress?variant=spinner-occluded

Deterministic surface for BOOL_CONDITION[LLM_VISION] model bake-offs. Ten ?variant= states reproducing the cases where cheap bool models actually disagree: a spinner fully visible vs partially hidden behind a dialog vs mid-fade, a static refresh icon that is not a spinner, height/weight populated with '0' vs real values vs empty, and a selected row vs a hover-tinted one. Ground truth for each check is on data-expected (invisible to vision) so a workflow can assert without leaking the answer into the screenshot. All synthetic data (no PHI). ?variant=clean|spinner-full|spinner-occluded|spinner-faded|refresh-icon|fields-zero|fields-values|row-selected|row-hover|popup.

πŸͺŸ

Popups & Windows

17 pages

Popup Auto-Dismiss (recovery no-op)

/popup-auto-dismiss

DISMISSIBLE popup that auto-dismisses on a timer before the injected close-recovery click executes. Exercises the popup-gone no-op path: recovery should take no action and resume to the Continue button. ?dismiss_after=0 keeps it visible (recovery must actively close it); ?dismiss_after=<ms> tunes the timing.

Window Navigation

/windows

Test opening popup windows and handling multiple windows

Popup

/popup

Simple popup window with close button

Popup Success

/popup-success

Success popup - target window in multi-window test

Popup Trap

/popup-trap

Trap popup - decoy window in multi-window test

Popup Recovery Test

/popup-recovery-test

15 scenarios for unexpected UI state: 1–4 DISMISSIBLE (cookie banner, newsletter, promo, survey), 5–12 DECISION_REQUIRED generic (duplicate record, destructive confirm, stale record, scheduling conflict, outstanding balance, coverage warning, duplicate submission, threshold exceeded), 13–15 DECISION_REQUIRED 1:1 prod reproductions (ECW code-already-exists Yes/No, Noridian Consent to Monitoring Accept/Reject, ECW Duplicate Patient Warning Proceed/Cancel)

WF: EHR Charting (multi-page, seeded popups)

/wf-ehr/login

Fully-fledged multi-PAGE EHR portal β€” real route navigation (login β†’ dashboard β†’ patients β†’ chart β†’ coding β†’ review β†’ done) with clickable sidebar nav, a patient results table with selectable rows, and chart tabs. ?seed=N carries across pages and deterministically scatters DISMISSIBLE / DECISION_REQUIRED popups at varied timings (on entry, after a delay, after the step's action). Knobs: ?density, ?only=decision|dismissible, ?popups=N. Login is never interrupted; every seed exercises β‰₯1 decision modal

ECW Encounter (multi-step)

/ecw-encounter-multistep

1:1 ecwcloud.com β€” multi-step modal chain: duplicate-patient warning β†’ code-already-exists; tests counter reset on verified dismissal between modals

Availity Cookie Banner

/availity-cookie-banner

1:1 essentials.availity.com β€” bottom-rectangle consent banner spanning full width with 4 buttons (Accept All / Reject All / Customize / Γ—); tests non-centered modal placement

WellMed HIPAA Acknowledge

/wellmed-hipaa-scroll

1:1 eprg.wellmed.net β€” full-screen overlay with scrollable legal text and a single 'I Acknowledge' CTA disabled until scroll-to-end; tests scroll-required single-CTA case

Azalea Quick Question

/azalea-corner-toast

1:1 app.azaleahealth.com β€” bottom-right corner toast (not overlay) with 3 buttons (Yes / Maybe Later / Don't ask again); tests non-overlay corner placement

FCSO Session Expired

/fcso-session-expired

1:1 thespot.fcso.com β€” single-CTA modal whose click causes navigation to a /login flow; tests identifyRecoveryNode smart-resume after state-loss

PropertyMeld Wrong Modal

/propertymeld-wrong-modal

1:1 app.propertymeld.com β€” wrong-modal (Edit Meld Residents) appears unexpectedly on Save Note; only Γ— close button, no labeled CTAs; tests close-only dismissal path

J&J TREMFYA Already Enrolled

/jnj-tremfya-enrolled

1:1 www.portal.jnjwithme.com β€” single-CTA acknowledge modal whose action terminates the workflow as failed (patient already enrolled, no recovery path)

CMC Claim Pending With Errors

/cmc-claim-pending-errors

1:1 ecw.cmc-pa.com β€” information-dense modal with embedded error list inside the body, OK / Cancel buttons; tests information-rich modal extraction

WeInfuse Document Scanning

/weinfuse-document-scanning

1:1 app.weinfuse.com β€” feature-prompt modal triggered after file upload with 3 buttons (Scan Now / Maybe Later / Don't Show Again) and illustration; tests feature-prompt 3-option dismissal

InSyncCS Zip Search

/insynchcs-zip-search

1:1 familycarecenter.insynchcs.com β€” wrong-context modal (Zip Search) appearing when opening a gender dropdown; modal has a text-input field plus 2 buttons (V2 gap: modal_action MVP supports buttons only, this exposes the input-inside-modal limit)

πŸ–ΌοΈ

Iframes

22 pages

Nested Iframes

/nested-iframes

Multiple levels of nested iframes with different sandbox attributes

Iframe Content

/iframe-content

Form elements inside iframe with security context display

Extract Iframe Table

/extract-iframe-table

Single-row table extraction inside an iframe. Use //tr[@data-row-id='row-2'] as the container XPath and short child XPaths like /td[@class='typeDesc'].

Iframe Tryit Playground

/iframe-tryit-playground

W3Schools-style result frame: createElement('iframe') + appendChild (about:blank) + document.write, recreated on each Run. Add ?delay=2000 to reproduce the slow-render injection race.

Iframe CSP-Blocked

/iframe-csp-blocked

Frame served with script-src 'none' so the main-world inject is blocked; target is streamed in after ?delay ms. Realistic trigger for the isolated-world XPath fallback's early-bail.

Iframe Opaque-Origin (relay)

/iframe-opaque-origin

Sandboxed iframe without allow-same-origin β†’ opaque origin, so the parent can't read contentDocument (same as cross-origin). Forces the iframe relay path; regression guard for cross-origin find/click on a single host.

Iframe Cross-Origin (Real)

/iframe-cross-origin-real

Embeds https://example.com β€” a real cross-origin frame that allows framing. contentDocument is null to the parent, so only the iframe relay reaches it. Regression guard for the relay path; target the 'Example Domain' heading.

Iframe Inside Shadow DOM

/iframe-shadow-nested

Iframes mounted inside open and closed shadow roots β€” querySelectorAll('iframe') and a document-scoped MutationObserver don't cross shadow boundaries, so the frame may never be injected.

Iframe Deep Nested Actions

/iframe-deep-nested-actions?level=3

3+ levels of same-origin nesting with a click/type target in the deepest frame. Native (coordinate) actions must compose the frame offset across every level. ?level=N, ?delay=ms.

Iframe Scroll β€” Full-Page Screenshot

/iframe-scroll-test

Full-viewport same-origin iframe with 20 scrollable sections. Tests full-page scroll+stitch during error screenshots. 'Simulate navigation gap' button blanks the iframe src for 400ms to reproduce the relay-disconnect window (iframeInject port disconnects on navigation, connectedIframes goes empty). Before fix: screenshot = single viewport. After fix: full 20-section scroll via direct DOM fallback.

Iframe Frame Offset

/iframe-frame-offset

Scaled (transform: scale) and scrolled-container iframes β€” native click coordinates must account for the shifted real position of the frame.

Iframe Slow Network

/iframe-slow-network

Frame src holds the HTTP response for ?delay ms (default 3s), so the frame sits at about:blank through a real network wait before any content exists.

Iframe Lazy Load

/iframe-lazy-load

loading='lazy' iframe far below the fold β€” contentWindow stays about:blank until scrolled into view, so injection must handle a frame that exists long before it loads.

Iframe Renavigate

/iframe-renavigate

The same iframe element is renavigated/reloaded to a new document after injection; the extension must re-establish frameId and listeners on a frame it has already seen.

Iframe Srcdoc Actions

/iframe-srcdoc-actions

Click/type target inside a srcdoc frame (document URL is about:srcdoc, not about:blank) to exercise the marker/injection logic on that path.

Special Click Screenshot Repro

/special-click-screenshot-repro

Same form at top level, same-origin iframe, and cross-origin iframe. Isolates whether pointer-action (click/input) pre-action screenshots get dropped on the iframe relay path vs the top-level path.

Iframe Mixed-Origin Chain

/iframe-mixed-origin-chain

Origin chain parent β†’ cross-origin β†’ back to parent's origin; the postMessage relay must hop across a cross-origin boundary and back to reach the innermost target.

Iframe Burst

/iframe-burst

Injects many iframes in one synchronous burst to stress the MutationObserver's 100ms debounce β€” checks none are dropped. ?count=N.

Iframe Remove + Re-add

/iframe-remove-readd

Removes the iframe and appends a fresh one reusing the same id (SPA route churn) β€” tests that stale frameId references and listeners are not reused.

Nested PDF Iframe

/nested-pdf-iframe

Simulates chart notes structure with nested PDF viewer

Chart Notes Content

/chart-notes-content

Clinical notes form with embedded PDF iframe

Iframe Scroll β€” Full-Page Screenshot Fix

/iframe-scroll-test?sandboxed=1

Full-viewport iframe with 20 tall sections. ?sandboxed=1 loads the iframe with sandbox='allow-same-origin' (scripts disabled β†’ iframeInject can never run β†’ relay always disconnected, but contentDocument accessible). Cleanly isolates the direct DOM fallback fix in getScrollInfo: WITHOUT fix = single viewport screenshot; WITH fix = full 20-section scroll.

πŸ“œ

Scrolling

18 pages

Main Page Scroll

/scroll-main-page

Scroll to elements below the fold on a long page

Container Scroll

/scroll-container

Scrollable containers: log viewer, chat history, horizontal carousel

Modal TOS

/scroll-modal-tos

Terms and Conditions modal with scroll-to-bottom to enable OK button

Nested Scroll

/scroll-nested

Nested scrollable containers: sidebar + main content with inner scrollable areas

Infinite Scroll

/scroll-infinite

Content that loads on scroll (pagination trigger, lazy loading)

Iframe & Sticky & Snap

/scroll-iframe

Scrollable iframes, sticky headers, and CSS scroll-snap

Dropdown Scroll

/scroll-dropdown

Scrollable dropdown option lists: custom ARIA, native select, hidden JCF-style

Accordion

/scroll-accordion

Collapsible sections that push content below the fold when expanded

Virtual List & Overflow Hidden

/scroll-virtual-list

Windowed list (only visible rows in DOM) and overflow:hidden clipped content

Shadow DOM & Popover

/scroll-shadow-dom

Scrollable containers inside shadow DOM and floating popover/tooltip

Advanced Edge Cases

/scroll-advanced

Smooth scroll, bidirectional grid, CSS transform positioning, keyboard tab focus

Horizontal Scroll

/horizontal-scroll

Wide strip requiring horizontal scroll to reveal off-screen columns (?layout=page|container). Live window.scrollX readout for verifying left/right scroll.

Scroll To Element (2D)

/scroll-to-element-2d

Target off-screen both down AND right β€” exercises to-element 2D auto-reveal (scrolls both axes). Live scrollX/scrollY readout.

Scroll To Element (2D Dense Grid)

/scroll-to-element-2d-grid

Like the 2D page but the whole canvas is tiled edge-to-edge with visually-distinct cells (coordinate + token + hue), so every scroll step registers pixel change β€” no blank stretch that defeats the no-DOM pixel-shift detector. Target is the far bottom-right cell (down AND right). Live scrollX/scrollY readout.

Region Horizontal

/scroll-region-horizontal

Bordered container scrollable in both axes with a far-right target inside β€” exercises region find-element / full-container horizontal. Live container.scrollLeft readout.

Scroll To Element (Start Edge)

/scroll-to-element-start-edge

Target near the top edge that can't be centered (page won't scroll above 0); loads scrolled to the bottom. Verifies scroll-to-element succeeds when the target is revealed but un-centerable at the start boundary.

Scroll Axis Decoy

/scroll-axis-decoy

Wide horizontal grid with a smaller vertical-only notes pane overlapping its center. A horizontal scroll must pick the grid, not the vertical decoy β€” verifies the builder's axis-filtered container selection. Live grid.scrollLeft + decoyPane.scrollTop readouts.

Sticky Header Screenshot

/sticky-header-screenshot

Numbered rows under a fixed header that appears only after scrolling off the exact top β€” full-page screenshot stitching must keep rows contiguous with no header duplication mid-page. layout-shift mode swaps in a color bar that's removed on scroll plus a nav header that goes position:fixed (?mode=appear|always|none|layout-shift, ?rows=N, ?headerHeight=N)

⏱️

Navigation & Timing

11 pages

Slow Loading Portal

/slow-loading

Progressive loading with overlay, skeletons, lazy content, and delayed dropdowns (?delay=X&stealth=true hides indicators)

VDD Test

/vdd-test

VDD divergence trigger: ?state=golden = green ready page with button, ?state=fail = red maintenance screen with no button.

Delayed Button

/delayed-button

Button appears after configurable delay (?delay=X seconds)

Delayed Page Load

/delayed-page-load

Whole page stays in a loading state for 20 seconds before rendering content

PSL Cursor Test

/psl-cursor-test

Rich prior-auth list (200+ DOM nodes). Click '+ Create New Request' β€” form appears after 60s delay. Tests PSL classification and stale cursor fix.

Transient 500

/transient-500?dwell=3

Shows a 503 Service Unavailable page on first paint, then swaps to a normal dashboard after ?dwell seconds β€” for testing that a stale outage frame in S1 history is not mis-classified as SERVICE_UNAVAILABLE (?dwell=, ?status=)

Page Loading Click Test

/page-loading-click-test

UHC-style portal: click Create New Request during table load β†’ Information Loading modal β†’ silent fail. Tests PSL prior-frame classification. (?loadDelay=N seconds, default 6)

CS Reinjection Repro (302 redirect)

/reinjection-repro

Form submit β†’ server-side 302 redirect β€” instant full page navigation kills CS mid-execution

CS Reinjection Repro (DOM mutation)

/reinjection-heavy-dom

Noridian pattern: processing overlay β†’ massive DOM rewrite (200+ nodes) triggers Plasmo CS teardown/remount

Redirect Loop

/redirect-loop

Configurable redirect loop with various redirect methods

Hover Interactions

/hover

Hover dropdowns, hover cards, and scroll-to-agree modal

πŸ“₯

Downloads

13 pages

PDF Download

/pdf-download

Test downloading a dynamically generated PDF file

PDF Case: Same-Tab Navigation

/pdf-case-navigation

Main-frame navigations to PDF URLs (link, location.href, redirect, form submit) with inline/none/attachment dispositions

PDF Case: New Tab / Popup

/pdf-case-new-tab

PDF opened via target=_blank, window.open, and popup windows with inline/none/attachment dispositions

PDF Case: iframe

/pdf-case-iframe

PDFs as iframe src (sub_frame) with inline/none/attachment dispositions, plus JS-set src

PDF Case: embed/object

/pdf-case-embed-object

PDFs via embed and object tags with inline/none/attachment dispositions

PDF Case: blob/data URLs

/pdf-case-blob-data

Client-side generated blob: and data: PDFs β€” navigation, new tab, iframe, embed, anchor download

PDF Case: Progress Note Preview (Aarista repro)

/pdf-case-progress-note

Network-fetched PDF wrapped in a blob (configurable MIME) shown in a 'Progress Note Preview' modal iframe β€” mirrors Aarista/charta. Tests blob capture and new-tab auto-download vs. the dead download stub

PDF Case: Multiple Inline PDFs

/pdf-case-multi-inline

Three distinct PDFs as iframes on one page β€” tests multi-file capture (upload all)

PDF Case: Edge / Token-Safety

/pdf-case-edge

Single-use-token PDF (proves token-safe tshark capture) and a ~15MB PDF (large reassembly)

Large File Download

/large-download

Configurable large file download (up to 500MB) for testing file handling

Binary Download Test

/binary-download-test

Tests 10 different download methods with a known binary file to diagnose corruption

Download Reliability

/download-reliability?mode=sync&status=500

Controllable download target for network-signal classification (?mode=sync|async, ?status=, ?delay=, ?drip=1&dripMs=, ?size=, ?redirect=). Triggers a real browser download so the network listener captures server-side download failures (404/500/503, slow/drip timeout, redirect-to-login, async export).

Iframe Print Stress Test

/iframe-print-test?patient=Test+Patient&cert_date=05/06/2026&office=Demo+Office&provider=Dr.+Smith

Printable certification page with 15 iframes. Use with trigger_print in a tab-churn loop to measure per-iteration degradation (?patient, ?cert_date, ?office, ?provider, ?delay)

πŸŽ“

Action Graduation

9 pages
πŸ§ͺ

Extract Datamodel Edge Cases

7 pages

Extract β€” Nested Iframes

/extract-nested-iframes

Patient table inside iframe-within-iframe. STATIC only traverses one iframe level; LLM_DOM with recursive serialization extracts correctly.

Extract β€” PDF / Canvas Viewer

/extract-pdf-viewer

Claims data rendered on <canvas> (simulating PDF viewer). Zero DOM text nodes β€” only LLM_VISION can read the rendered pixels.

Extract β€” Nested Shadow DOM

/extract-shadow-dom-deep

Medication table inside shadow root within shadow root. XPath cannot cross shadow boundaries; requires LLM_DOM with shadow serialization or LLM_VISION.

Extract β€” Dynamic Container

/extract-dynamic-container

Schedule table renders after JS delay (?delay=5000). With ?randomize=true the container ID changes each load. STATIC fires against empty DOM; LLM_DOM captures the settled state.

Extract β€” Cross-Origin Iframe

/extract-cross-origin-iframe

Benefits data inside a cross-origin iframe. contentDocument is null; LLM_DOM cannot serialize it. Only LLM_VISION (screenshot compositing) works.

Extract β€” Virtual / Lazy List

/extract-virtual-list

200 claims in a virtual-scrolling list β€” only ~20 rows exist in the DOM at once. Tests partial extraction and scroll+extract patterns.

Extract β€” OS Clipboard ({{clipboard}})

/clipboard-extract

Puts a known string on the OS clipboard (Copy button, or select the textarea + Ctrl/Cmd+C) so a STATIC EXTRACT_DATAMODEL node sourced from {{clipboard}} reads it back exactly, for native/no-DOM apps (RDP/DCV) where content isn't in the page DOM. Also has a copy-per-row harvest loop (Copy next row + ?delay= to simulate copy-sync lag) for testing extract inside a LOOP. ?variant=simple|multiline|unicode|xml, ?text=custom. Synthetic data (no PHI).

🎯

Visual Element Cache

7 pages

Visual Cache β€” Direct Hit

/vc-direct

One distinct, fixed-position 'Download Report' button with stable pixels. Click it via LLM_VISION: first run grounds + caches the crop, a repeat run re-locates it with no VLM (DIRECT). ?theme=dark flips colors but keeps structure β€” Sobel matching should still hit.

Visual Cache β€” Anchored Field

/vc-anchored

Two visually-identical blank input fields. A DIRECT crop cross-matches both, so the password field binds to its 'Password' label anchor + offset and verifies landing before clicking. ?filled=true prefills email to prove the label anchor stays stable.

Visual Cache β€” Ambiguity Abstain

/vc-ambiguous

A row of N identical 'Select' buttons (?count=N, default 5). None is visually unique, so the matcher's top-2 margin is ~0 and it must abstain and defer to the VLM rather than guess (precision over recall).

Visual Cache β€” Mutation / Reject

/vc-mutate

Same fixed slot, different element by query: ?state=a blue 'Submit' (default), ?state=b green 'Cancel', ?show=false nothing. Cache on a, re-run on b β€” the cached crop should fail structural match and abstain, not mis-click.

Visual Cache β€” Multistep Wizard

/vc-wizard

Four-step sequential flow (Start β†’ Add Details β†’ Review β†’ Submit), each step revealing the next distinct LLM_VISION target. Chains four vision clicks into four independent cache entries; a repeat run should produce four consecutive L1 hits.

Visual Cache β€” Dynamic Intent

/vc-dynamic-cases

Eval substrate for the dynamic-intent guard. ?case=<id> renders one realistic widget with a single target (data-testid="target"). 15 dynamic targets that must NOT cache (today's date, latest order, default card, primary contact, recommended plan, cheapest/oldest, next-available slot, selected/unread/new/your-task/pending, top result, highest bid) + 6 fixed controls whose labels merely contain a relative word and MUST stay cacheable (Today button, Sort-Newest toggle, Default-View tab, Primary tab, New button, Featured filter).

Visual Cache β€” Dynamic Classifier Flow

/vc-cache-flow

Five-step click-through for the prompt-only dynamic classifier + cache persistence: 2 static targets (Open records, Submit) that build then hit, 2 dynamic targets that reshuffle every load (the Globex Inc. account row and the highlighted tile) that must log skip_dynamic and re-ground, plus 1 tricky-static control ('Sort by Newest') that must stay cacheable. A red banner flags a dynamic target that got cached and mis-fired.

πŸ’₯

Adversarial β€” Cache Breakers

8 pages

VC β€” Behavior Swap

/vc-adv-behavior-swap

Pixel-identical button whose onClick is rewired to a destructive action on run 2 (?variant=build|attack). Cache is purely visual β€” predicted FALSE HIT (confident wrong click).

VC β€” Identical-Twin Swap

/vc-adv-twin-swap

Safe button cached at a slot; on run 2 a pixel-identical destructive decoy takes that slot while the real button moves out of search_radius=240 (?variant=build|attack). Predicted FALSE HIT.

VC β€” Relabel In-Tolerance

/vc-adv-relabel

Approve $50 β†’ $5000: meaning flips but Sobel structure stays >accept_score=0.85 (?variant=build|attack, ?digits=long stresses the boundary). Predicted FALSE HIT (long β†’ safe abstain).

VC β€” Anchor Offset Drift

/vc-adv-anchor-twin

Featureless field anchored on a distant heading; run 2 inserts an identical field between them so heading+offset drifts onto the twin and loose verify passes (?variant=build|attack). FALSE HIT on the anchored path (Obs 15).

VC β€” Rebuild Poisoning

/vc-adv-cache-poison

Forces an L1 miss with a transient decoy present so the unconditional build() overwrites the good entry with bad pixels/coords (?variant=build|miss-poison|attack). Predicted durable POISON β†’ FALSE HIT.

VC β€” Single-Scale Blind Spot

/vc-adv-scale-shift

DIRECT locate uses scales=[1.0] only; run 2 enlarges the real target out of band and plants a same-1.0x decoy in-window (?variant=build|attack, ?zoom=, ?decoy=off). FALSE HIT (decoy on) / SAFE ABSTAIN (decoy off).

VC β€” Distant Anchor Drift

/vc-adv-anchor-distant

No per-field labels, so the featureless box is forced to anchor on a distant 'Billing' heading that can't co-move; run 2 inserts an identical box between them so heading+offset drifts onto the twin and loose verify passes (?variant=build|attack). Predicted FALSE HIT β€” the genuine anchored-drift trigger #4 missed.

VC β€” Semantic Meaning Flip

/vc-adv-relabel-semantic

Structure-preserving relabel on a fixed-geometry, same-color button: Confirm→Cancel or Pay $50→£50 (?variant=build|attack, ?case=confirm-cancel|currency). Sobel stays >accept_score=0.85 so the cache HITS the meaning-flipped button — the case #3 only abstained on by luck. Predicted FALSE HIT; motivates an OCR/CLIP semantic veto.

🧭

Visual Cache β€” Scroll to Element

6 pages

VC Scroll β€” Invoice List

/vc-scroll-list

Target invoice row sits below the fold β†’ a grounding/CLICK node must scroll the container until it's visible, then act. ?scroll=inner|page, ?count=N (vary target depth between build/replay), ?target=N, ?present=false (remove target β†’ end-of-scroll FAIL). OCR-friendly unique row ids for the cold OCR-gated pass.

VC Scroll β€” Icon Only

/vc-scroll-icononly

Icon-only cold-path weak spot: a distinctive star badge below the fold among repeated low-distinctiveness filler glyphs. No text β†’ cold OCR pre-filter can't help; warm pass relocates the cached glyph. ?scroll=inner|page, ?count=N, ?target=N, ?present=false.

VC Scroll β€” Off-Center Panel

/vc-scroll-panel

Target lives in a scrollable side panel (not the page), off-center so it doesn't sit under the agent's fixed blind-scroll cursor β€” tests whether scroll-to-target works for paneled UIs. ?side=left|right, ?count=N, ?target=N, ?present=false.

VC Scroll β€” Names (no ordinal cue)

/vc-scroll-names

People names (non-sequential, fixed array) in a small centered overflow-y-auto box β€” removes the ordinal cue invoice numbers gave the grounder, to test whether it can scroll to a target it can't locate by number. ?count=N, ?target=N, ?present=false.

VC Scroll β€” Roster (names, wide container)

/vc-scroll-roster

Names in a WIDE fixed-height scrollable container that spans past both observed scroll aim points (x~495, x~960) so the wheel reliably hits it β€” isolates the numbers-vs-names scroll-inference question without the small-box physical-miss confound. ?count=N, ?target=N, ?present=false.

VC Scroll β€” Select Location (small dialog grid)

/vc-select-location

NextGen-style modal: form fields + OK/Cancel/Clear/Search and a SMALL scrollable results grid (own scrollbar) in the lower portion, target location row below its fold. Reproduces the customer pattern where the wheel must land inside a small off-center sub-region. ?offset=left|center|right, ?count=N, ?target=N, ?present=false.

βœ‚οΈ

Visual Cache β€” Crop Quality

3 pages

VC Dense β€” Grid / Shared-Prefix Bleed

/vc-dense-names

Tight desktop-style data grid where every row shares a long common prefix (Capitol Pain Institute-Corporate / -Dixie / -Elizabethtown) and the click target is the NAME cell β€” probes whether the bbox-from-click template crop bleeds adjacent rows and whether a prefix-dominated crop is distinctive enough to relocate the right row. ?dataset=locations|names, ?target=N, ?count=N, ?gap=N (row padding px).

VC Preload β€” Many Stable Targets

/vc-preload-grid

A deterministic grid of uniquely-labelled tiles (Amber Falcon, Cobalt Otter, ...) for exercising the L1 visual-cache PRELOAD at scale β€” a workflow clicks N distinct tiles so the run relies on N cache entries. Clicking only adds a 'done' highlight, so the layout never shifts and cached crops keep matching across cold/warm runs. ?count=N (default 30), ?cols=N (default 6).

Grounding Gym β€” Dense Filter Funnels

/grounding-gym?density=compact&cols=7

A CareTend-style 'Select Generic Equivalent' grid whose column headers each carry a tiny, closely-spaced filter-funnel icon (plus a small dropdown β–Ό and stacked β–²/β–Ό number spinners) β€” the hostile targets for high-precision visual grounding. Every control writes a verifiable data-testid='last-action' readout (and funnels open a labeled data-testid='filter-popup') so a workflow can confirm WHICH element was clicked. ?density=compact|normal, ?cols=5|7|9 (funnel spacing), ?dupes=on|off (repeated row names), ?scale=0.75|1|1.25 (resolution/DPI).

πŸ₯

Legacy Application (Meridian EHR)

14 pages

Meridian Clinical Suite β€” Launcher

/legacy-ehr

Fifteen-module legacy EHR on WebForms-style postbacks, AngularJS 1.8, Knockout 3.5, Ext-style grids, a real HTML 4 frameset, and jQuery + Bootstrap 3. The launcher lists every module plus 20 recovery scenarios as deterministic ?fault= links.

Meridian β€” Patient Registration

/legacy-ehr/Registration.aspx

Five-step WebForms wizard over 37 fields with per-step server validation; partially entered steps persist in ViewState rather than the DOM.

Meridian β€” Scheduling

/legacy-ehr/Schedule.aspx

Provider day view of 120 near-identical Available slots, each its own __doPostBack target. Dense ambiguous-target grid for grounding tests.

Meridian β€” Results Review

/legacy-ehr/labs.html

Expand/collapse result rows with nested analyte tables, H/L/critical flags, select-all, and a critical-value acknowledgement gate.

Meridian β€” Prescribe

/legacy-ehr/erx.html

Debounced medication typeahead rendered outside the input, live sig preview, and a static-backdrop interaction alert requiring a checkbox plus a typed override reason.

Meridian β€” Fee Sheet

/legacy-ehr/feesheet.html

Knockout 3.5 observable service lines with computed line and encounter totals. foreach-generated rows carry no stable ids.

Meridian β€” Document Management

/legacy-ehr/documents.html

Document queue with an inline PDF preview iframe, a real file input, and a scanner simulation driving a multi-step progress modal.

Meridian β€” Provider Inbox

/legacy-ehr/messages.html

Real HTML 4.01 <frameset>: folders, list, and preview are three sibling documents navigating each other via parent.frames. Not iframes.

Meridian β€” Sign In

/legacy-ehr/Default.aspx

ASP.NET WebForms simulation: __VIEWSTATE, __EVENTVALIDATION, ctl00$cphMain$ control names, full-page postbacks. Sign in as clinician / meridian2026.

Meridian β€” Patient Registry

/legacy-ehr/Patients.aspx

240-record GridView with __doPostBack sorting and paging; search criteria live in ViewState rather than the URL.

Meridian β€” Clinical Chart

/legacy-ehr/chart.html

AngularJS 1.8 chart with ng-repeat lists, late ng-if mounting, ng-disabled gating, and a scope-bound modal. ?fault=ghost discards input typed before the model binds.

Meridian β€” Order Entry

/legacy-ehr/orders.html

Ext-style buffered grid in an iframe: only visible rows exist in the DOM, ids regenerate per render pass, and combobox options render in a body-level floating layer.

Meridian β€” Encounter Note

/legacy-ehr/encounter.html

jQuery 1.9 + Bootstrap 3 note editor with a contenteditable iframe body and a sign-off modal gated on an attestation checkbox.

Meridian β€” Claim Submission

/legacy-ehr/Claim.aspx

CMS-1500 style form post with server-side validation, post/redirect/get, and an acknowledgement page. Main target for the mid-form and silent-no-op faults.

Part of the CloudCruise browser automation platform