Skip to content

v1.9.0

Choose a tag to compare

@felixgeelhaar felixgeelhaar released this 24 May 11:54
· 12 commits to main since this release

Added

  • Shadow DOM piercing in form discovery + fill. `DiscoverForm`,
    `FillFormSemantic`, and every interaction tool that routes through
    `resolveSelector` (`type`, `click`, batch actions) now walk into
    open shadow roots. Inputs inside Lit / Stencil / Vue / React custom
    elements are discovered and fillable without changing call shape.
    Discovered inputs are tagged with a stable `data-scout-id` so
    subsequent fills round-trip across shadow boundaries.
  • Attribute selectors in `QuerySelectorPiercing`. The flat-node
    matcher now handles `[attr="value"]` and `tag[attr="value"]` in
    addition to `#id`, `.class`, and bare tags. Lets piercing resolve
    the `data-scout-id` selectors emitted by form discovery without
    another evaluate round-trip.
  • `resolveSelector` falls back to piercing before invoking the
    text / natural-language paths. Any selector that fails standard
    `document.querySelector` automatically retries against the flat
    DOM tree before the slower fallbacks run.

Tests

  • New `agent/shadow_dom_test.go` covers the full discover → fill →
    click → submit loop against a custom element that wraps its form
    in an open shadow root.

Why this matters

Every Lit / Stencil / web-components admin UI (and every modern
design system that relies on shadow encapsulation) becomes
scout-drivable without per-app `data-test` escape hatches.