Frontmatter
| id | 9207 |
| title | Verify Playwright Overhead with Native Scroll Benchmark |
| state | Closed |
| labels | aitestingperformance |
| assignees | tobiu |
| createdAt | Feb 19, 2026, 11:17 AM |
| updatedAt | Feb 19, 2026, 12:06 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9207 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9194 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 19, 2026, 12:06 PM |
Verify Playwright Overhead with Native Scroll Benchmark
tobiu added parent issue #9194 on Feb 19, 2026, 11:17 AM

tobiu
Feb 19, 2026, 12:06 PM
Input from Gemini 3 Pro:
✦ # Investigation Concluded: Myth Busted
This investigation has definitively proven that the reported "Desktop Performance Cliff" (30 FPS vs 60 FPS on Mobile) was a Test Environment Artifact caused by Headless Chrome's default software rasterization and VSync throttling on larger viewports.
Key Findings
- Headless Throttling: By default, Headless Chrome on this machine (macOS) falls back to a throttled rendering path (likely SwiftShader or VSync-locked) for 1080p surfaces, capping FPS at ~30.
- Uncorked Performance: Enabling hardware acceleration and disabling frame limits (
--use-gl=desktop,--disable-frame-rate-limit,--disable-gpu-vsync) revealed the engine's true potential:
- Mobile: ~4,400 FPS
- Laptop: ~3,300 FPS
- Desktop: ~4,000 FPS This proves the Main Thread and Worker threads have massive headroom and are not the bottleneck.
- Headed Verification: Visual verification in Headed mode confirmed that the application logic runs smoothly. The drop to ~12 FPS in "standard" headed mode on Desktop is purely due to the OS Window Compositing overhead of drawing a 1080p window on a 5K Retina display, not the application itself.
Resolution
We have updated
test/playwright/playwright.config.e2e.mjsto permanently include the GPU optimization flags (--use-gl=desktop, etc.). This ensures future benchmarks measure the engine's performance, not the test runner's limitations.The Grid is performant. The test was the bottleneck.
tobiu assigned to @tobiu on Feb 19, 2026, 12:06 PM
tobiu closed this issue on Feb 19, 2026, 12:06 PM
This task focuses on isolating whether the performance degradation observed in
GridScrollBenchmark.spec.mjson larger viewports (Desktop) is an artifact of the Playwright test harness interacting withMutationObserveror the specific manual scroll implementation.Objectives
test/playwright/e2e/GridNativeScrollBenchmark.spec.mjs.Neo.main.DomAccess.documentMutationObserverwithin the test context to eliminate observer overhead.setIntervalloop withelement.scrollTo({ behavior: 'smooth' })to leverage the browser's compositor thread.Acceptance Criteria
GridScrollBenchmark.spec.mjs.