Repository navigation
Stabilize native touch targets in reader browser checks - #87
Conversation
Code Review ✅ Approved🟡 Medium risk · Browser-test touch handling and regression coverage change across reader checks. Stabilizes native touch targets in reader browser checks by waiting for actionable locators before dispatching CDP touch events, eliminating race conditions when the feed replaces links during scrolling. Test support moves to the browser-test directory with both consumers updated; no issues found. OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
PR reader API performanceResult: INCONCLUSIVE 7 inconclusive · 1 within threshold. Zero request failures across all six runs. Base Three independent runs per revision, each on a fresh GitHub-hosted ARM64 runner. 16 users, 60 seconds/run, 1,000 synthetic articles, cache off, five PgBouncer slots. Latency comparisonAll latency values are in milliseconds; lower is better. Values are medians of three runs.
Additional latency and throughput metricsEach cell shows base → PR. Latencies are in milliseconds.
Individual runs
How to interpret this reportRegressed / Improved: a p95 regression needs >20% and >20 ms increase in the medians and at least two head samples versus the base median. Improvements use the inverse threshold. Within threshold means the change did not meet both thresholds. Inconclusive: a within-revision p95 range >35% of its median and >20 ms is too noisy for a confident latency verdict. Inconclusive latency comparisons are non-blocking: the check passes without claiming an improvement. Confirmed regressions and test/report errors fail the PR gate. Throughput is descriptive: paced users do not measure maximum capacity. This uncached public API test does not establish production health, browser performance or worker capacity. Separate runners can differ in hardware or host load; repetitions and noise checks reduce but cannot eliminate that uncertainty. Full HTML/CSV reports and logs · attempt 1 |
|



What changes and why?
Reader parity intermittently failed after returning to Latest because the feed replaced the link while the touch helper was scrolling it into view. The failing job reported a detached element in unchanged test support; one repeat passed on the same commit.
The helper now uses Playwright's trial action to wait for a stable, actionable locator before dispatching the existing native CDP touch events. The trial does not send a desktop click. Browser-only support moves into the existing browser-test directory, with both consumers updated. Production behavior and Sonar/CI thresholds are unchanged.
A real browser regression replaces an off-screen target as it scrolls into view, then checks that the replacement receives exactly one native touch and one click. It fails with the previous helper and passes in both Chromium and Microsoft Edge with this fix.
This is a separate CI prerequisite for the remaining ready PR queue after #75; merge it before #76. Auto-merge is disabled.
Validation
e6f0298f90f702a2c3ab06817cf8d9c2a671e054, including reader parity on the first attempt, all 2,620 backend unit / 1,132 integration / 801 web / 648 admin tests, security checks and ARM64 images.CI required, all CodeQL analyses and the Sonar quality gate passed; no unresolved review conversations remain. The API performance comparison passed, without a production speed claim.Ready for review