{{ message }}
Repository navigation
Conversation
isElementStable compared two positions after two animation frames or 100 ms. A busy browser can render no frame within 100 ms: the animation did not move, and isStable said "stable" for a moving element (e2e findElementAgain "isStable … checks the movement of the new element", Chrome on macOS CI). Wait up to 1 s; with normal frames nothing changes. Unit test (fake timers, no frame for 300 ms, the element moves) fails without the change. Not reproduced in a real browser: a busy main thread also delays the timer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refox click The pre-scroll of a click in Firefox waited for two animation frames or 100 ms. A busy browser can render no frame within 100 ms, so a scroll event came after the click (e2e actionClick "gives the page its scroll events before the click in Firefox", 4 of 4 tries in one macOS job). Wait up to 1 s; with normal frames nothing changes. Unit tests (fake timers: frames after 300 ms, no frame at all) fail without the change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sing list item The test required elapsed >= waitforTimeout (1000 ms) and got 924 ms on macOS CI. The Timer of a wait rejects when no time is left for another try, so a wait can end up to one waitforInterval (100 ms in the e2e config) before its timeout. The unit tests already check that the index waits once (they count the waits). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plum117
marked this pull request as ready for review
October 17, 2026 18:24
Contributor
[Medium impact] Adjusts animation frame wait timeouts in element interaction code. Fix the missing-index timing assertion before merging; it can still cause e2e failures. SummaryGives late animation frames more time before
Reviews (2) · Last reviewed commit: "test(webdriverio): isElementStable answe..." · Reviewed by Greptile |
plum117
marked this pull request as draft
October 17, 2026 18:30
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…comments Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plum117
force-pushed
the
fix/e2e-frame-fallback-flakes
branch
from
October 17, 2026 23:12
69ac097 to
07307ad
Compare
…of a missing list item" This reverts commit a1301ad.
…otonic clock The wait timer ends on setTimeout; Date.now() can step back during the wait (927 ms in a simulation, 924 ms in CI). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hen a test fails Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plum117
marked this pull request as ready for review
October 17, 2026 23:39
Contributor
plum117
marked this pull request as draft
October 17, 2026 23:49
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Proposed changes
Fixes 3 macOS e2e flakes seen on #16118 (run 39050721055).
isStablesaid "stable" for a moving element (Chrome,findElementAgain):isElementStablewaits 2 animation frames or 100 ms. On macOS CI Chrome, 25–55 % of 2-frame waits took > 100 ms, so the check ended before the element moved. Now up to 1 s.actionClick, 4/4 tries in one job): the pre-scroll ofclickhad the same 2 frames or 100 ms. Now up to 1 s.missingListItem): the wait ends onsetTimeout(monotonic), the test measured withDate.now(), which can step back. Nowperformance.now(), same 1000 ms bound.With normal frames, nothing changes: the 1 s only applies when no frame comes.
How you tested
Unit, each new test fails without its change:
isElementStable(no frame for 300 ms, the element moves; no frame at all → 1 s),click(frames after 300 ms; no frame at all → 1 s).webdriveriounit tests 3532 pass;test:oxlintpasses.e2e, local:
actionClickon Firefox and Chrome 21/21,findElementAgainandmissingListItem(3/3) on Chrome pass. Clock step simulated with the realTimer:Date.now927 ms,performance.now1002 ms.Frame waits measured in CI (probe, fallback 5 s, 16 jobs, run 1, run 2): max 496 ms during a run (macOS Chrome), 1239 ms for the first frame after browser start (Windows Chrome, 1 of 6 jobs), else ≤ 157 ms. Cost: a cross-origin frame that is not rendered waits the full 1 s (4
isStablecalls per Chrome job).Unit tests for the touched package(s)
Type definition tests (if the public API / command types changed)
Smoke or e2e (only if the testrunner, launcher, or a real browser path changed)
Types of changes
Checklist
Backport Request
v10and doesn't need to be back-ported (v9has neither 100 ms fallback)#XXXXX🤖 Generated with Claude Code