Open Shadow Root Form
A `<custom-input>` web component renders its markup inside an open shadow root — `querySelector` on the document alone will not find it.
<custom-input> below is a web component that renders its actual <input>
inside an open shadow root — a plain
document.querySelector('input') on the top-level document will not find it.
Framework notes
- playwright — Playwright locators pierce open shadow roots by default — no special syntax needed.
- selenium — Requires `element.shadowRoot` (or a JS executor) to pierce into the shadow tree.