Closed Bug 1638744 Opened 4 years ago Closed 4 years ago

Intermittent /webdriver/tests/perform_actions/pointer.py | test_drag_and_drop_with_draggable_element - IndexError: list index out of range

Categories

(Remote Protocol :: Marionette, defect, P5)

defect

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: intermittent-bug-filer, Unassigned)

References

Details

(Keywords: intermittent-failure)

Those tests have been added by bug 1624732 via a downstream sync from the web-platform repository. They are permanently failing and it would be good to know why.

Here an older try build (log files are no longer present):

https://treeherder.mozilla.org/#/jobs?repo=try&revision=325a62dcc5fddc8580fd51c62fb152d69d520a56

Depends on: 1624732

Joel from the Playwright team pointed me to https://github.com/JoelEinbinder/juggler/commit/5686e43cb0315a056b6357ce95480000f7a719b4 which might fix this issue.

My understanding is that today dragover/dragend/etc wont be sent with firefox (or chrome) with webdriver or anything else. This is because the browser fires the dragstart event and asks the operating system to do a real drag, and then waits for the OS to tell it the drag data. In headless that just never comes. In headful, those events will fire where the users real mouse is, instead of the emulated mouse.

My patch to juggler tracks the drag event, and then sends fake dragover/drop events until the mouse is released or escape is pressed. However

  • If the user runs firefox in headful and moves their mouse over the page, they will see the drag happen on their real mouse. This can cause the data to be dropped in the wrong place, even other apps!
  • The dragover/drop events are sent manually by finding the element by point, so the logic could diverge from how real drags are handled.
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → INCOMPLETE
Moving bug to Remote Protocol::Marionette component per bug 1815831.
Component: geckodriver → Marionette
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.