Frontmatter
| id | 9392 |
| title | E2E: Implement GridRowScrollPinning Automated Test and Sync Refinement |
| state | Closed |
| labels | enhancementaitestinggrid |
| assignees | tobiu |
| createdAt | Mar 8, 2026, 3:48 PM |
| updatedAt | Mar 8, 2026, 5:20 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9392 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9380 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 8, 2026, 5:20 PM |
E2E: Implement GridRowScrollPinning Automated Test and Sync Refinement
tobiu added parent issue #9380 on Mar 8, 2026, 3:48 PM
tobiu assigned to @tobiu on Mar 8, 2026, 4:14 PM

tobiu
Mar 8, 2026, 4:15 PM
Input from Gemini 3.1 Pro:
✦ The initial
test/playwright/e2e/GridRowPinning.spec.mjstest has been pushed to the repository.Test Overview:
- Targets the
bigDataexample grid.- Uses Playwright to programmatically scale the grid to 100,000 rows (20M cells) via the UI controls.
- Simulates rapid, continuous wheel scrolling.
- Injects a
requestAnimationFrameloop that calculates the physicalgetBoundingClientRectof the viewport wrapper and the rendered row nodes on every frame.- Explicitly detects "White Flashes" by proving if the row bounding box is pushed entirely above or below the visible viewport wrapper.
Results: The test successfully fails as expected against the current architecture. The empirical data proves two critical flaws in our current pinning strategy:
- Latency Tearing: The VDOM worker is too slow to calculate rows for massive scroll jumps. The native browser scroll pushes the existing stale rows entirely off-screen before the worker responds.
- Bounds Breaking: When the pinning addon does kick in and applies a massive
translate3dto theneo-grid-bodynode, it pushes the massive 2.5M pixel scroll container down, shifting the layout bounds and pushing the rows out of the bottom of the viewport.The next step is to brainstorm a new strategy based on these empirical findings.
tobiu closed this issue on Mar 8, 2026, 5:20 PM
This ticket tracks the creation of automated E2E tests for the
GridRowScrollPinningarchitecture using Playwright, targeting the extreme scale of theexamples/grid/bigDataapplication.The Problem: While the initial
GridRowScrollPinningaddon implemented a hybrid rAF engine to sync VDOM deltas with native scrolling, manual testing reveals edge cases (like slow thumb drags over massive distances) where the grid still visually tears or goes blank due to misalignments betweenscrollTop,translate3d, and the browser's compositor layer culling.Testing Strategy:
examples/grid/bigData/index.htmlconfigured for 100,000 rows (20M cells).actualScrollTop,workerScrollTop,deltaY, and the DOMtransformvalues) frame-by-frame during the drag.Refinement Goal: Once the test reliably fails by exposing the mechanical flaw, we will use the data to refine the architectural approach (e.g., implementing an "Inner Row Container" layer or synchronous scroll injection) until the test passes.