You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dropdown submenu toggles can be reached and announced by screen readers, but activating them may not open the submenu even though mouse and physical-keyboard interaction works.
Expected behavior: Activating an announced submenu toggle through a screen reader opens or closes its submenu and exposes the current state.
Actual behavior: Reported activation with NVDA or TalkBack leaves the submenu closed.
Impact: Screen-reader users may be unable to reach links inside dropdown submenus.
Customer context
Product / area: Neve primary navigation dropdown submenus
Version: Not provided; repository inspection used Neve 4.2.8
Environment: NVDA on Windows with Chrome and Firefox; TalkBack on an Android tablet
Integration / third party: No plugin or third-party menu integration reported
Reported error / symptom: The submenu control is announced and focusable, but screen-reader activation does not reveal the submenu
Impact: Dropdown child links may be inaccessible through the reported assistive-technology workflow
Reproduction notes
Reported workflow:
Configure a Neve primary navigation menu with a dropdown submenu.
Navigate to the submenu toggle with NVDA in Chrome or Firefox on Windows, or with TalkBack on Android.
Activate the announced toggle.
Observe that the submenu reportedly remains closed; mouse and physical-keyboard operation reportedly succeeds.
Reproduction status: Not reproduced in an assistive-technology runtime. Source inspection confirms an incomplete desktop pseudo-button activation model consistent with the report. The Neve version, exact key/gesture, menu layout, and responsive state are missing.
Diagnosis
Conclusion
The inspected desktop submenu path contains a product accessibility defect consistent with the report. Neve renders a scripted div as the desktop submenu button, provides an Enter-only keydown handler, and maintains keyboard-open and click-open state through separate mechanisms. This does not provide a single activation model equivalent to a native button and leaves assistive-technology activation dependent on browser/platform event synthesis. The exact NVDA and TalkBack event sequences were not reproduced locally, so the source confirms the defective activation contract rather than every reported platform detail.
Where this likely occurs
Primary navigation submenu control: inc/views/nav_walker.php — Nav_Walker::add_caret() lines 99–179. Desktop menus receive a div role="button" with aria-pressed; sidebar menus receive a native button. Neither control exposes submenu state through aria-expanded in this path.
Desktop accessibility handler: inc/views/nav_walker.php — Nav_Walker::enqueue_accessibility_menu_js() lines 381–416. It listens only for keydown, accepts only numeric Enter key code 13, and toggles .wrap.active plus aria-pressed through event.target.
Shared click handler: assets/js/src/frontend/navigation.js — handleMobileDropdowns() and openCarrets() lines 90–102. Click activation independently toggles dropdown-open on the control and submenu without synchronizing the desktop handler's active or aria-pressed state.
Event registration utility: assets/js/src/utils.js — addEvent() lines 42–46. It passes the registered caret separately from the event target, confirming that the click path and inline keyboard path use different target/state models.
The pseudo-button keyboard path originated in commit 35650c462 and has shipped since Neve 3.4.8. Commit 42a44f96f moved visual keyboard state to the parent wrapper, and commit 44c0eec2a added aria-pressed handling for closed issue aria-pressed doesn't switch to true when the submenu is opened with keyboard navigation #3977. The inspected behavior remains present in tag 4.2.8.
Engineering notes
The desktop and sidebar variants differ materially. The desktop variant is the source-confirmed activation defect. The sidebar variant is a native button connected to the click handler, so repository inspection alone does not establish why TalkBack activation failed; its lack of exposed expanded/collapsed submenu state is a separate confirmed accessibility deficiency. The relevant behavior is in the free Neve theme. Search of the Pro add-on found no runtime override; its matching mega-menu e2e coverage invokes .caret-wrap through a mouse-style click.
The source contains two visual states: the desktop keydown path uses .wrap.active, while the shared click path uses .dropdown-open. Assistive technologies may synthesize events differently across browser and platform combinations; those external event semantics were not verified from a browser or screen-reader runtime during this investigation.
Test coverage status
e2e-tests/specs/accessibility/aria.spec.ts lines 3–66 checks aria-expanded only on the top-level mobile navigation opener, not submenu toggles. e2e-tests/specs/customizer/hfg/hfg-menu-item-alignment.spec.ts lines 15–34 and e2e-tests/cypress/integration/mega-menu/mega-menu-test.spec.ts lines 27–50 cover submenu opening through .click(). No relevant coverage was found during inspection for desktop submenu activation through accessibility APIs, Space activation, screen-reader-style activation, or submenu state announcements.
What to verify or explore next
May be worth reproducing on a clean Neve 4.2.8 site with a primary menu containing one nested level, using NVDA with Chrome and Firefox.
May be worth confirming whether Enter, Space, and the screen reader's dedicated activate gesture emit keydown, click, both, or neither on the desktop pseudo-button.
May be worth repeating the sidebar workflow with TalkBack and recording whether a click event reaches openCarrets().
If reproducible, checking desktop and sidebar layouts separately would establish the exact scope.
The focused Playwright suites are e2e-tests/specs/accessibility/aria.spec.ts and the HFG menu specs; they require the repository's WordPress e2e environment.
Unknowns / follow-up
The reporter did not provide the Neve version, menu configuration, responsive breakpoint, or whether the Android test used the sidebar variant.
Runtime reproduction with NVDA and TalkBack was not available.
The customer reports the same activation failure across multiple screen readers, and Neve 4.2.8 source shows a desktop pseudo-button with incomplete keyboard semantics plus separate, unsynchronized click and keyboard state paths. No existing issue found by the available GitHub search specifically tracks this screen-reader activation failure.
Source:HelpScout #3382553996 Generated by bug-report-triage (ID: bug-report-triage_6a50ded9832f83.27152498)
Summary
Dropdown submenu toggles can be reached and announced by screen readers, but activating them may not open the submenu even though mouse and physical-keyboard interaction works.
Expected behavior: Activating an announced submenu toggle through a screen reader opens or closes its submenu and exposes the current state.
Actual behavior: Reported activation with NVDA or TalkBack leaves the submenu closed.
Impact: Screen-reader users may be unable to reach links inside dropdown submenus.
Customer context
Reproduction notes
Reported workflow:
Reproduction status: Not reproduced in an assistive-technology runtime. Source inspection confirms an incomplete desktop pseudo-button activation model consistent with the report. The Neve version, exact key/gesture, menu layout, and responsive state are missing.
Diagnosis
Conclusion
The inspected desktop submenu path contains a product accessibility defect consistent with the report. Neve renders a scripted
divas the desktop submenu button, provides an Enter-only keydown handler, and maintains keyboard-open and click-open state through separate mechanisms. This does not provide a single activation model equivalent to a native button and leaves assistive-technology activation dependent on browser/platform event synthesis. The exact NVDA and TalkBack event sequences were not reproduced locally, so the source confirms the defective activation contract rather than every reported platform detail.Where this likely occurs
inc/views/nav_walker.php—Nav_Walker::add_caret()lines 99–179. Desktop menus receive adiv role="button"witharia-pressed; sidebar menus receive a nativebutton. Neither control exposes submenu state througharia-expandedin this path.inc/views/nav_walker.php—Nav_Walker::enqueue_accessibility_menu_js()lines 381–416. It listens only forkeydown, accepts only numeric Enter key code 13, and toggles.wrap.activeplusaria-pressedthroughevent.target.assets/js/src/frontend/navigation.js—handleMobileDropdowns()andopenCarrets()lines 90–102. Click activation independently togglesdropdown-openon the control and submenu without synchronizing the desktop handler'sactiveoraria-pressedstate.assets/js/src/utils.js—addEvent()lines 42–46. It passes the registered caret separately from the event target, confirming that the click path and inline keyboard path use different target/state models.35650c462and has shipped since Neve 3.4.8. Commit42a44f96fmoved visual keyboard state to the parent wrapper, and commit44c0eec2aaddedaria-pressedhandling for closed issue aria-pressed doesn't switch to true when the submenu is opened with keyboard navigation #3977. The inspected behavior remains present in tag 4.2.8.Engineering notes
The desktop and sidebar variants differ materially. The desktop variant is the source-confirmed activation defect. The sidebar variant is a native button connected to the click handler, so repository inspection alone does not establish why TalkBack activation failed; its lack of exposed expanded/collapsed submenu state is a separate confirmed accessibility deficiency. The relevant behavior is in the free Neve theme. Search of the Pro add-on found no runtime override; its matching mega-menu e2e coverage invokes
.caret-wrapthrough a mouse-style click.The source contains two visual states: the desktop keydown path uses
.wrap.active, while the shared click path uses.dropdown-open. Assistive technologies may synthesize events differently across browser and platform combinations; those external event semantics were not verified from a browser or screen-reader runtime during this investigation.Test coverage status
e2e-tests/specs/accessibility/aria.spec.tslines 3–66 checksaria-expandedonly on the top-level mobile navigation opener, not submenu toggles.e2e-tests/specs/customizer/hfg/hfg-menu-item-alignment.spec.tslines 15–34 ande2e-tests/cypress/integration/mega-menu/mega-menu-test.spec.tslines 27–50 cover submenu opening through.click(). No relevant coverage was found during inspection for desktop submenu activation through accessibility APIs, Space activation, screen-reader-style activation, or submenu state announcements.What to verify or explore next
keydown,click, both, or neither on the desktop pseudo-button.openCarrets().e2e-tests/specs/accessibility/aria.spec.tsand the HFG menu specs; they require the repository's WordPress e2e environment.Unknowns / follow-up
Confidence
Confidence: 88/100
The customer reports the same activation failure across multiple screen readers, and Neve 4.2.8 source shows a desktop pseudo-button with incomplete keyboard semantics plus separate, unsynchronized click and keyboard state paths. No existing issue found by the available GitHub search specifically tracks this screen-reader activation failure.
Source: HelpScout #3382553996
Generated by bug-report-triage (ID: bug-report-triage_6a50ded9832f83.27152498)