Virtual scrolling
1,000 accounts, only a window's worth in the DOM. Standard selectors find nothing off-screen.
What's measured on this page
- Instead of a free-text email field, the page asks you to select your account from a list of 1,000 users.
- The list uses virtual scrolling: only the rows currently inside the visible viewport are mounted in the DOM. Scroll up or down and the off-screen rows are recycled.
-
page.getByText('user-373@example.com') returns empty for rows that are not currently mounted. A test cannot find what is not in the DOM.
- Selecting an account then unlocks the password field and Sign-in button. The standard getByLabel('Email') never finds anything — there is no Email field at all on this page.
- A vision-based automation tool scrolls the list, recognises the target row when it scrolls into view, and clicks. The scroll-and-recognise loop is a primitive every visual automation pipeline already has.
Select your account
1,000 accounts. Only the visible window exists in the DOM at any moment.
Scroll the list to find user-371@example.com. Playwright's getByText can't see rows that aren't currently mounted.
Production apps using this technique
- TanStack Virtual / react-window / react-virtual — The default tool for performant lists in React. Used inside Linear, Plaid, Vercel dashboards, Coinbase, and hundreds of other production SaaS apps.Market Default React virtualisation choice (~80% of new projects) Users react-window ~1M weekly npm downloads; TanStack Virtual ~500K weekly
- AG Grid, MUI X DataGrid, ReactTable — Enterprise data-grid libraries virtualise both rows and columns. Selectors for off-screen cells return nothing until the grid is scrolled.Market AG Grid claims used by all top-30 banks and ~90% of Fortune 500 Users AG Grid ~300K+ developers; MUI X 50K+ paying customers; ReactTable ~1.5M weekly npm downloads
- Slack message list, Discord channel scrollback — Long chat histories are virtualised. Tests that try to find a message from yesterday must scroll until it materialises.Market Slack ~35% of team-chat market; Discord dominates gaming/community chat Users Slack ~35M+ daily; Discord ~200M+ monthly active
- Notion databases, Coda tables, Airtable grids — Database views virtualise rows. Hidden rows are not in the DOM; they are not in the accessibility tree either.Market Airtable leads no-code databases; Notion leads workspace docs Users Notion 100M+ users; Airtable 450K+ orgs; Coda ~100K orgs
- Gmail's thread list, Outlook Web message pane — Email clients virtualise the inbox view at scale. Selecting a specific thread by selector is the canonical Playwright pain point in Gmail-clone tests.Market Gmail ~30% of consumer email; Outlook ~17% (still leads in enterprise) Users Gmail 1.8B+ users; Outlook ~400M users
Figures are approximate / company-disclosed (~2024–2025). Sources: company filings, industry reports (Gartner, IDC, BuiltWith, npm stats), and public DAU disclosures.