Closed Bug 1828816 Opened 1 year ago Closed 11 months ago

If the requested Accessible doesn't exist, wait for it to be created

Categories

(Remote Protocol :: Marionette, defect, P3)

defect

Tracking

(firefox115 fixed)

RESOLVED FIXED
115 Branch
Tracking Status
firefox115 --- fixed

People

(Reporter: Jamie, Assigned: Jamie)

References

(Regressed 1 open bug)

Details

(Whiteboard: [webdriver:m7][webdriver:external][webdriver:relnote])

Attachments

(1 file, 2 obsolete files)

The tests in testing/web-platform/tests/wai-aria/role/roles.html pass/fail intermittently. My guess is that they fail because the nodes are dynamically added to the tree, but the a11y engine doesn't add them to the a11y tree until the next refresh driver tick and WebDriver tries to query them before that.

Assignee: nobody → jteh
Component: Marionette → Disability Access APIs
Product: Remote Protocol → Core

I'm working on this regardless, but it's worth noting that the fix for this needs to happen in Marionette, not in the a11y module or the a11y tests.

I would suggest to file a specific bug for Marionette which better explains what needs to be changed / added so that it's also clear for the release notes. Thanks!

Some tests dynamically add elements to the DOM.
Since accessibility updates occur in refresh driver ticks, the Accessible often wasn't created yet when WebDriver requested it, causing intermittent WPT failures.
See the code comments for an explanation of how this works.

Attachment #9329403 - Attachment description: Bug 1828816: Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, wait for it to be created. → Bug 1828816 part 2: Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, wait for it to be created.
Severity: -- → S4
Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5857e8ef63e1
part 1: Marionette sync.waitForObserverTopic: Support a timeout option. r=whimboo,webdriver-reviewers
https://hg.mozilla.org/integration/autoland/rev/df566bce405d
part 2: Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, wait for it to be created. r=jdescottes,webdriver-reviewers,whimboo
Regressions: 1829777

Backed out for causing multiple failures.



  • Pushes with failures - mochitests
  • Failure Log
  • Failure line: TEST-UNEXPECTED-FAIL | accessible/tests/browser/role/browser_computedARIARole.js | computedARIARole for htmlTbody is correct - Got "group", expected "rowgroup"
Flags: needinfo?(jteh)
Status: NEW → ASSIGNED
Component: Disability Access APIs → Marionette
Product: Core → Remote Protocol
Summary: Intermittent failures in testing/web-platform/tests/wai-aria/role/roles.html → If the requested Accessible doesn't exist, wait for it to be created
Flags: needinfo?(jteh)
Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5802edc7adc3
part 1: Marionette sync.waitForObserverTopic: Support a timeout option. r=whimboo,webdriver-reviewers
https://hg.mozilla.org/integration/autoland/rev/a7c266597175
part 2: Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, wait for it to be created. r=jdescottes,webdriver-reviewers,whimboo
Severity: S4 → S3
Priority: -- → P3
Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f01409331e4b
part 1: Marionette sync.waitForObserverTopic: Support a timeout option. r=whimboo,webdriver-reviewers
https://hg.mozilla.org/integration/autoland/rev/a84313d70b9f
part 2: Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, wait for it to be created. r=jdescottes,webdriver-reviewers,whimboo

Backed out for causing wpt failures in roles.html

  • Backout link
  • Push with failures
  • Failure Log
  • Failure line: TEST-UNEXPECTED-FAIL | /wai-aria/role/roles.html | role: timer - assert_equals: <div role="timer" id="role_timer">x</div> expected (string) "timer" but got (object) null
Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/190da2ededf7
part 1: Marionette sync.waitForObserverTopic: Support a timeout option. r=whimboo,webdriver-reviewers
https://hg.mozilla.org/integration/autoland/rev/f3f51a672d70
part 2: Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, wait for it to be created. r=jdescottes,webdriver-reviewers,whimboo

Backed out for causing high frequency failures on /html-aam/roles.html

[task 2023-05-11T13:50:33.758Z] 13:50:33     INFO - TEST-FAIL | /html-aam/roles.html | el-small - assert_equals: <small data-testname="el-small" data-expectedrole="generic" class="ex" id="generic15">x</small> expected (string) "generic" but got (object) null
[task 2023-05-11T13:50:33.758Z] 13:50:33     INFO - verifyRolesBySelector/<@http://web-platform.test:8000/wai-aria/scripts/aria-utils.js:55:22
[task 2023-05-11T13:50:33.758Z] 13:50:33     INFO - TEST-UNEXPECTED-TIMEOUT | /html-aam/roles.html | el-span - Test timed out
[task 2023-05-11T13:50:33.758Z] 13:50:33     INFO - TEST-INFO | expected FAIL
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-strong - expected FAIL
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-INFO | expected FAIL
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-sub - expected PASS
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-sup - expected PASS
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-time - expected FAIL
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-INFO | expected FAIL
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-textarea - expected PASS
[task 2023-05-11T13:50:33.759Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.760Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-u - expected FAIL
[task 2023-05-11T13:50:33.760Z] 13:50:33     INFO - TEST-INFO | expected FAIL
[task 2023-05-11T13:50:33.760Z] 13:50:33     INFO - 
[task 2023-05-11T13:50:33.761Z] 13:50:33     INFO - TEST-UNEXPECTED-NOTRUN | /html-aam/roles.html | el-ul - expected PASS
[task 2023-05-11T13:50:33.763Z] 13:50:33     INFO - TEST-UNEXPECTED-TIMEOUT | /html-aam/roles.html | expected OK
[task 2023-05-11T13:50:33.764Z] 13:50:33     INFO - TEST-INFO took 10527ms
Attachment #9329403 - Attachment is obsolete: true
Attachment #9329426 - Attachment is obsolete: true

Some tests dynamically add elements to the DOM.
Since accessibility updates occur in refresh driver ticks, the Accessible often wasn't created yet when WebDriver requested it, causing intermittent WPT failures.
Now, we force refresh driver ticks to give accessibility a chance to update.

See Also: → 1832750
Pushed by jteh@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/3246450014c2
Marionette accessibility.getAccessible: If the requested Accessible doesn't exist, force refresh driver ticks and retry. r=whimboo,webdriver-reviewers
Flags: needinfo?(jteh)
Status: ASSIGNED → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
Target Milestone: --- → 115 Branch
Whiteboard: [webdriver:m7][webdriver:external][webdriver:relnote]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: