Retry dispatching single event if navigation aborted a dispatch
Categories
(Remote Protocol :: WebDriver BiDi, defect, P2)
Tracking
(firefox134 fixed)
Tracking | Status | |
---|---|---|
firefox134 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: whimboo)
References
(Blocks 2 open bugs)
Details
(Keywords: intermittent-failure, intermittent-testcase, Whiteboard: [webdriver:m13])
Attachments
(1 file)
Filed by: hskupin [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=480944459&repo=mozilla-central
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/SAQZV7MPT-C2L_dQnLTzhw/runs/0/artifacts/public/logs/live_backing.log
Assignee | ||
Comment 1•13 days ago
|
||
This is a new test as introduced with my work on bug 1921314. It shows that when a navigation happens while we are in the middle of sending the mouse event through EventUtils we raise an error like:
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E webdriver.bidi.error.UnknownErrorException: unknown error ([Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMWindowUtils.sendMouseEvent]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://remote/content/external/EventUtils.js :: synthesizeMouseAtPoint :: line 788" data: no])
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E Remote-end stacktrace:
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E synthesizeMouseAtPoint@chrome://remote/content/external/EventUtils.js:788:32
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E event.synthesizeMouseAtPoint@chrome://remote/content/shared/webdriver/Event.sys.mjs:83:30
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E _dispatchEvent@chrome://remote/content/webdriver-bidi/modules/windowglobal/input.sys.mjs:154:20
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E handleCommand@chrome://remote/content/shared/messagehandler/MessageHandler.sys.mjs:257:33
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - E receiveMessage@chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs:78:37
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO -
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - cmd_name = 'input.performActions'
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - future = <Future finished exception=UnknownErrorException(unknown error, [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMWindowUtils.sendMouseEvent]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://remote/content/external/EventUtils.js :: synthesizeMouseAtPoint :: line 788" data: no], synthesizeMouseAtPoint@chrome://remote/content/external/EventUtils.js:788:32
[task 2024-11-03T10:03:32.578Z] 10:03:32 INFO - event.synthesizeMouseAtPoint@chrome://remote/content/shared/webdriver/Event.sys.mjs:83:30
[task 2024-11-03T10:03:32.579Z] 10:03:32 INFO - _dispatchEvent@chrome://remote/content/webdriver-bidi/modules/windowglobal/input.sys.mjs:154:20
[task 2024-11-03T10:03:32.579Z] 10:03:32 INFO - handleCommand@chrome://remote/content/shared/messagehandler/MessageHandler.sys.mjs:257:33
[task 2024-11-03T10:03:32.579Z] 10:03:32 INFO - receiveMessage@chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs:78:37
[task 2024-11-03T10:03:32.579Z] 10:03:32 INFO - )>
We as well have quite a few meta data entries for this test:
https://searchfox.org/mozilla-central/source/testing/web-platform/meta/webdriver/tests/bidi/input/perform_actions/navigation.py.ini
Assignee | ||
Comment 2•13 days ago
|
||
There are as well upstream failures with Chrome. Given the results the pointer action on the new page hasn't been sent.
I need to further investigate.
Assignee | ||
Comment 3•13 days ago
|
||
For this particular issue we are not getting a clear error type from the platform code, but I think that based on a NS_ERROR_FAILURE
we should consider to just retry the command because it is dispatching a single event only and it was not successful.
To accomplish that we could throw an AbortError
exception so that the RootTransport implementation understands it as a JSWindowActor disconnect and would retry the command a given number of times. That would allow us to continue the action sequence while in the other hand will finally throw that error if it is permanent.
Assignee | ||
Comment 4•13 days ago
|
||
Assignee | ||
Updated•13 days ago
|
Assignee | ||
Updated•13 days ago
|
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Updated•9 days ago
|
Comment 7•9 days ago
|
||
bugherder |
Description
•