Navbar dropdown toggles have `role="link"`
Les mainteneurs répondent en général sous 1 jour
@Mittalnew y travaille déjà.
Depuis le 26/10/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 88/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- bootstrap, html, javascript, playwright
- Domaine
- accessibility, frontend
Piste de recherche
Lisez les trois templates nommés dans le rapport : src/resources/projects/website/templates/navitem.ejs, navitem-dropdown.ejs et navtools.ejs. Vérifiez comment chaque bouton de bascule du menu déroulant définit son rôle et comparez l’arbre d’accessibilité rendu au rôle de bouton attendu indiqué dans le rapport. Le travail est terminé lorsque les trois boutons exposent le rôle de bouton tout en conservant l’état développé ; l’issue fournit une configuration de navbar à rendre et à vérifier.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I have:
- searched the issue tracker for similar issues
- installed the latest version of Quarto CLI
- formatted my issue following the Bug Reports guide
Bug description
Navbar menus (menu: on a nav item or a navbar tool) open with a toggle that has role="link". Screen readers announce the toggle as a link. But the control opens a menu and does not go to a page. This fails WCAG 4.1.2 Name, Role, Value (Level A).
Three templates write the role (navitem.ejs#L9, navitem-dropdown.ejs#L9, navtools.ejs#L29):
<a class="nav-link dropdown-toggle" href="#" id="nav-menu-guides" role="link"
data-bs-toggle="dropdown" aria-expanded="false">
Commit 9143e2cab (1.5) changed role="menu" to role="link", to remove a Lighthouse warning about aria-expanded. role="menu" was also wrong, but role="button" is correct here. Bootstrap's navbar dropdown example uses role="button", and aria-expanded is valid on a button.
A possible fix: change role="link" to role="button" in the three templates. A <button> element is also correct, but it changes more CSS.
This was first reported in a comment on discussion #12644, tested with NVDA and JAWS.
Investigated with AI assistance, grounded in a local clone of quarto-cli.
Steps to reproduce
_quarto.yml:
project:
type: website
website:
navbar:
left:
- text: Guides
menu:
- text: One
href: index.qmd
- text: Two
href: index.qmd
index.qmd:
---
title: Home
---
Text.
- Render the site and open
_site/index.html. - Move to "Guides" with a screen reader, or examine it in the browser accessibility tree.
- Press Enter.
Actual behavior
- The accessibility tree shows
link "Guides"with URL#. - Enter opens the menu (
aria-expandedchanges totrue). The page does not change.
Tested in Chromium with Playwright.
Expected behavior
The toggle has the button role, for example "Guides, button, collapsed". The aria-expanded state is announced with it.
Your environment
- IDE: none (rendered with the CLI)
- OS: macOS 27.0.1 (build 26A434)
Quarto check output
Quarto 1.11.6
[✓] Checking environment information...
Quarto cache location: /Users/charlottewickham/Library/Caches/quarto
Project: none found (single-file mode)
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.10.0: OK
Dart Sass version 1.101.0: OK
Deno version 2.7.14: OK
Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 1.11.6
Path: /Applications/quarto/bin
[✓] Checking tools....................OK
TinyTeX: v2026.04
Chrome Headless Shell: 150.0.7871.115
VeraPDF: 1.28.2
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: /Users/charlottewickham/Library/TinyTeX/bin/universal-darwin
Version: 2026
[✓] Checking Chrome Headless....................OK
Using: Chrome Headless Shell installed by Quarto
Path: /Users/charlottewickham/Library/Application Support/quarto/chrome-headless-shell/chrome-headless-shell-mac-arm64/chrome-headless-shell
Version: 150.0.7871.115
[✓] Checking basic markdown render....OK
[✓] Checking R installation...........OK
Version: 4.6.0
Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
LibPaths:
- /Users/charlottewickham/Library/R/arm64/4.6/library
- /Library/Frameworks/R.framework/Versions/4.6/Resources/library
knitr: 1.51
rmarkdown: 2.31
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
Version: 3.12.2
Path: /Users/charlottewickham/.pyenv/versions/3.12.2/bin/python3
Jupyter: 5.9.1
Kernels: python3
[✓] Checking Jupyter engine render....OK
[✓] Checking Julia installation...
- Langage dominant
- JavaScript
- Étoiles
- 6.1k
- Forks
- 476
- Merge moyen
- 15 h 45 min
- PR mergées (30 j)
- 113
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de quarto-dev/quarto-cli
-
bug code-annotation
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
quarto-dev/quarto-cli#15215 ·
Les mainteneurs répondent en général sous 1 jour
-
accessibility bug website-navigation
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
quarto-dev/quarto-cli#15190 ·
Les mainteneurs répondent en général sous 1 jour
-
accessibility bug html websites
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
quarto-dev/quarto-cli#15187 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement themes websites
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
quarto-dev/quarto-cli#15179 ·
Les mainteneurs répondent en général sous 1 jour
-
about-page bug layout websites
Difficulté 1/5 1-3 heures Accessibilité débutants 82/100
quarto-dev/quarto-cli#15178 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de quarto-dev/quarto-cli
Issues similaires
-
Add: &TV LogoOuvertecheck:passed logos:add
Difficulté 1/5 Moins d'une heure Accessibilité débutants 74/100
-
BUG: Appointment time renders blank and PM appointment slots miscalculate vertical position in CalendarScreenPeut-être pris @aryanpatil-07 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
AOSSIE-Org/BabyNest#297 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Onboarding form: instructor radio never pre-selected "Yes" (permission vs permissions typo)Peut-être pris @ThakuraAnki l’a pris aujourd’hui. Ouvertebug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
WikiEducationFoundation/WikiEduDashboard#7235 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
-
Component: Frontend Component: Web Component Type: Maintenance
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
it-at-m/refarch-templates#1944 ·
Les mainteneurs répondent en général sous 2 jours