Symptom
Surfaced by a Claude agent scraping LinkedIn (messaging conversation list, connections list, May 25 2026):
- Only ~5–12 rows of a virtualized list are exposed to the AX tree at any time — only what the browser has actually rendered into the DOM.
- `scroll down` reports `Position: 0/936px (0%)` and does not advance off-screen rows into view.
- Net effect: rows beyond the initial viewport of a virtualized list (react-window, LinkedIn's ``, similar) are unreachable.
Root cause
`scroll down` calls `cdp.scrollPage(direction, amount)` which scrolls `window` (the document scroll container). LinkedIn's conversation list is an inner scrollable container — the document itself isn't scrolling, so `window.scrollY` stays at 0 and nothing advances.
The AX tree is correct — it reflects what's actually in the DOM. The problem is the scroll target, not the snapshot.
Fix ideas (not yet designed)
- Implicit: detect the nearest scrollable ancestor of the AX cursor (or of the most-recently `cd`'d-into element) and scroll that container instead of `window`. Heuristic: walk up the DOM from `backendDOMNodeId`, checking `overflow: auto/scroll` and `scrollHeight > clientHeight`.
- Explicit: new `scroll_into ` flow — agent names the scroll container, command scrolls it. Less magic; clearer mental model.
- Hybrid: `scroll down` defaults to inner-container detection, falls back to window. `scroll down --window` forces document scroll.
Probably (3) — preserves existing behavior on non-virtualized pages, fixes virtualized lists by default.
Reproduction
- Open LinkedIn messaging or connections list in Chrome.
- `cd` into the conversation/connections list.
- `ls` — observe only ~5–12 rows visible.
- `scroll down` — observe `Position: 0/...` and no new rows on subsequent `ls`.
Out of scope for the navigate-bug fix (in-flight 1.3.0 Web Store review)
Filed separately so the small navigate fix can ship without dragging in a scroll-architecture change.
Reference
- Agent diagnosis: "[secondary issue:] virtualized lists (the messaging conversation list, the connections list) only expose ~5–12 rows to the tree, and scroll down reports Position: 0/936px (0%) without advancing — so off-screen rows are unreachable."
- Related code: `handleScroll` in src/background/index.ts:3097, `cdp.scrollPage` in src/background/cdp_client.ts.
Symptom
Surfaced by a Claude agent scraping LinkedIn (messaging conversation list, connections list, May 25 2026):
Root cause
`scroll down` calls `cdp.scrollPage(direction, amount)` which scrolls `window` (the document scroll container). LinkedIn's conversation list is an inner scrollable container — the document itself isn't scrolling, so `window.scrollY` stays at 0 and nothing advances.
The AX tree is correct — it reflects what's actually in the DOM. The problem is the scroll target, not the snapshot.
Fix ideas (not yet designed)
Probably (3) — preserves existing behavior on non-virtualized pages, fixes virtualized lists by default.
Reproduction
Out of scope for the navigate-bug fix (in-flight 1.3.0 Web Store review)
Filed separately so the small navigate fix can ship without dragging in a scroll-architecture change.
Reference