Intermittent browser/components/extensions/test/browser/browser_unified_extensions_doorhangers_install.js | single tracking bug
Categories
(WebExtensions :: Untriaged, defect, P5)
Tracking
(firefox156 fixed)
| Tracking | Status | |
|---|---|---|
| firefox156 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: florian)
References
(Blocks 1 open bug)
Details
(Keywords: intermittent-failure, intermittent-testcase)
Attachments
(2 files)
Filed by: smolnar [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=515659230&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/UJLwES-oTHSL8oGXEs8MMg/runs/0/artifacts/public/logs/live_backing.log
TEST-PASS | browser/components/extensions/test/browser/browser_unified_extensions_doorhangers_install.js | extensions_button.temporarily_unhidden has expected counters on its labels - {"addon_install_doorhanger":1,"extension_permission_prompt":1} deepEqual {"addon_install_doorhanger":1,"extension_permission_prompt":1} -
[task 2025-07-01T06:25:58.160+00:00] 06:25:58 INFO - Buffered messages finished
[task 2025-07-01T06:25:58.161+00:00] 06:25:58 INFO - TEST-UNEXPECTED-FAIL | browser/components/extensions/test/browser/browser_unified_extensions_doorhangers_install.js | Node is not focusable via the accessibility API: id: , tagName: button, className: popup-notification-primary-button primary footer-button -
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - Stack trace:
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/browser-test.js:test_ok:1661
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/tests/SimpleTest/AccessibilityUtils.js:a11yFail:760
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/tests/SimpleTest/AccessibilityUtils.js:assertFocusable:807
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/tests/SimpleTest/AccessibilityUtils.js:assertCanBeClicked:1178
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/tests/SimpleTest/AccessibilityUtils.js:runIfA11YChecks/this.AccessibilityUtils:1145
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/tests/SimpleTest/AccessibilityUtils.js:handleEvent:1264
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochitests/content/browser/browser/components/extensions/test/browser/browser_unified_extensions_doorhangers_install.js:do_test_addon_install_with_hidden_extensions_button:63
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochitests/content/browser/browser/components/extensions/test/browser/browser_unified_extensions_doorhangers_install.js:test_addon_download_install_when_button_is_hidden:85
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/browser-test.js:handleTask:1205
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/browser-test.js:_runTaskBasedTest:1277
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1418
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/browser-test.js:nextTest/<:1194
[task 2025-07-01T06:25:58.162+00:00] 06:25:58 INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/<:1058
[task 2025-07-01T06:25:58.163+00:00] 06:25:58 INFO - TEST-PASS | browser/components/extensions/test/browser/browser_unified_extensions_doorhangers_install.js | Extensions button should be hidden -
Comment 1•1 year ago
|
||
This passed when run in confirm failure mode (rerun the test 4x in the same session).
This indicates that the test is probably a lower frequency intermittent and harder to reproduce/debug.
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Assignee | ||
Comment 54•29 days ago
|
||
promisePopupNotificationShown resolves from a popupshown listener and
checks only PopupNotifications.isPanelOpen, which is also true while the
panel is in the "showing" state
(toolkit/modules/PopupNotifications.sys.mjs:737). In that state
nsMenuPopupFrame::IsOpen() is false, so everything inside the panel is
states::INVISIBLE (accessible/generic/LocalAccessible.cpp:298-301) and not
focusable (nsIFrame::IsVisibleConsideringAncestors,
layout/generic/nsIFrame.cpp:359-363). A popupshown queued for one showing
can be delivered while the frame is back in ePopupShowing, so a test that
waits for popupshown and then clicks a button in the panel trips the a11y
check with the misleading "Node is not focusable via the accessibility
API".
Gate these four copies on panel.state == "open" instead: the same guard in
each, against the window the helper was given where it takes one, as bug
2056652 did for the update doorhanger tests, which moved them to
BrowserTestUtils.waitForPopupEvent(); that helper checks the state up
front but not again on the event. AccessibilityUtils.js is untouched, so
no a11y signal is lost.
BrowserTestUtils.waitForPopupEvent() itself is deliberately left alone:
looping there until the state matches would hang if a popup never reaches
ePopupShown.
Measured locally on two cores with --enable-a11y-checks and software
WebRender, browser_unified_extensions_doorhangers_install.js failed at
iteration 66 of 150 before this change and passed 400/400 after.
Updated•29 days ago
|
| Assignee | ||
Comment 55•29 days ago
|
||
browser/base/content/test/webrtc/head.js has its own copy of
promisePopupNotificationShown, which resolves from a popupshown listener
that checks only PopupNotifications.isPanelOpen. That is also true while
the panel is in the "showing" state
(toolkit/modules/PopupNotifications.sys.mjs:737), where
nsMenuPopupFrame::IsOpen() is false, so everything inside the panel is
states::INVISIBLE (accessible/generic/LocalAccessible.cpp:298-301) and not
focusable, and a test that clicks a button in the panel trips the a11y
check with the misleading "Node is not focusable via the accessibility
API".
Gate it on panel.state == "open", as the other copies now are. Here that
means the listener can be called for a popupshown it must not resolve on,
so it is restructured from a once-only anonymous listener into a
re-armable named one: a popupshown for a panel that is not open yet
re-arms the wait instead of consuming it. Its three assertions are
unchanged.
This changes when the 123 promisePopupNotificationShown call sites in this
directory resolve. A popupshown that arrives while the panel is not open
no longer resolves the helper; it keeps waiting for the next one, and a
test whose panel never reaches ePopupShown would now time out instead of
clicking an invisible node.
Comment 56•24 days ago
|
||
Comment 57•24 days ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/0b3c3144e4fc
https://hg.mozilla.org/mozilla-central/rev/4818200ae077
| Comment hidden (Intermittent Failures Robot) |
Description
•