Bug 1859035 - Prevent AOM tests to hit intermittent failures in a11y jobs due to Harness.popupReady clicking to panel buttons while panel state is still "showing". r=ayeddi,robwu

While investigating more the a11y intermittent failure being hit using exploratory try pushes (because the failure couldn't be hit locally), we determined
that when a failure was being hit, the panel state was still "showing" (instead of "open") by the time the AccessibilityUtils were about to check
if the clicked element (a panel button) was focusable.

After looking into a couple other approaches to make Harness.popupReady to wait for the panel to get to the "open" state (which were not working and ended up
triggering other issues, like test timeouts), I tried the approach proposed in this patch (after reading some more of the related internals and noticed that
we emit a popup-shown topic from nsXULPopupShownEvent::Run right after having set the panel state to "open" a few lines before, see
https://searchfox.org/mozilla-central/rev/ffdc4971dc18e1141cb2a90c2b0b776365650270/layout/xul/nsMenuPopupFrame.cpp#404,411).

The push to try using that approach did pass successfully (as in "it didn't hit the a11y related failures it was hitting before"):

    https://treeherder.mozilla.org/jobs?repo=try&tier=1%2C2%2C3&revision=d9fd889aae3d54cf721be22c4d67459e0f946034

And the temporary debugging logs added in that try push confirmed that we were hitting the panel in the "showing" state at least a few times:

    https://treeherder.mozilla.org/logviewer?job_id=433768474&repo=try&lineNumber=64039
    https://treeherder.mozilla.org/logviewer?job_id=433777958&repo=try&lineNumber=58787
    https://treeherder.mozilla.org/logviewer?job_id=433777956&repo=try&lineNumber=61263
    https://treeherder.mozilla.org/logviewer?job_id=433777874&repo=try&lineNumber=59122

Differential Revision: https://phabricator.services.mozilla.com/D191898
This commit is contained in:
Luca Greco 2023-10-27 13:52:13 +00:00
parent b94d8ddf90
commit 8735c02c0b
2 changed files with 28 additions and 25 deletions

View File

@ -32,7 +32,6 @@ https_first_disabled = true # Bug 1737265
["browser_amosigned_trigger_iframe.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_amosigned_url.js"]
https_first_disabled = true # Bug 1737265
@ -46,7 +45,6 @@ https_first_disabled = true # Bug 1737265
["browser_auth4.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_badargs.js"]
https_first_disabled = true # Bug 1737265
@ -64,7 +62,6 @@ skip-if = ["os == 'mac' && debug"] #Bug 1590136
["browser_bug540558.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_bug611242.js"]
@ -79,13 +76,11 @@ skip-if = ["true"] # disabled due to a leak. See bug 682410.
["browser_containers.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_cookies.js"]
["browser_cookies2.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Autoland, passes on Try)
["browser_cookies3.js"]
https_first_disabled = true # Bug 1737265
@ -102,7 +97,6 @@ https_first_disabled = true # Bug 1737265
https_first_disabled = true # Bug 1737265
skip-if = [
"os == 'win' && os_version == '10.0' && bits == 64", #Bug 1615449
"a11y_checks", # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
]
["browser_empty.js"]
@ -111,15 +105,12 @@ skip-if = [
["browser_hash.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_hash2.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Autoland, passes on Try)
["browser_httphash.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_httphash2.js"]
@ -128,18 +119,15 @@ https_first_disabled = true # Bug 1737265
["browser_httphash4.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_httphash5.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Autoland, passes on Try)
["browser_httphash6.js"]
skip-if = ["true"] # Bug 1449788
["browser_installchrome.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Autoland, passes on Try)
["browser_localfile.js"]
@ -162,7 +150,6 @@ skip-if = ["debug"] # Bug 1541577 - leaks on debug
["browser_relative.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
["browser_required_useractivation.js"]
@ -171,7 +158,6 @@ https_first_disabled = true # Bug 1737265
["browser_trigger_redirect.js"]
https_first_disabled = true # Bug 1737265
skip-if = ["a11y_checks"] # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Autoland, passes on Try)
["browser_unsigned_trigger.js"]
https_first_disabled = true # Bug 1737265
@ -179,17 +165,11 @@ skip-if = ["require_signing"]
["browser_unsigned_trigger_iframe.js"]
https_first_disabled = true # Bug 1737265
skip-if = [
"require_signing",
"a11y_checks", # Bugs 1854647 and 1858041 to investigate intermittent a11y_checks results (fails on Autoland, passes on Try)
]
skip-if = ["require_signing"]
["browser_unsigned_trigger_xorigin.js"]
https_first_disabled = true # Bug 1737265
["browser_unsigned_url.js"]
https_first_disabled = true # Bug 1737265
skip-if = [
"require_signing",
"a11y_checks", # Bugs 1854647 and 1858037 to investigate intermittent a11y_checks results (fails on Try, passes on Autoland)
]
skip-if = ["require_signing"]

View File

@ -289,10 +289,33 @@ var Harness = {
}
}
if (!result) {
panel.secondaryButton.click();
const panelEl = panel.closest("panel");
const panelState = panelEl.state;
const clickButton = () => {
info(`Clicking ${result ? "primary" : "secondary"} panel button`);
Assert.equal(
panelEl.state,
"open",
"Expect panel state to be open when clicking panel buttons"
);
if (!result) {
panel.secondaryButton.click();
} else {
panel.button.click();
}
};
if (panelState === "showing") {
info(
"panel is still showing, wait for 'popup-shown' topic to be notified"
);
BrowserUtils.promiseObserved(
"popup-shown",
shownPanel => shownPanel === panelEl
).then(clickButton);
} else {
panel.button.click();
clickButton();
}
},