Skip to main content
Les problèmes de navigation désorienter les utilisateurs, causent des pertes de données accidentelles et rendent difficile la compréhension de la destination des liens. Ils affectent tous les utilisateurs, mais sont particulièrement impactants pour les utilisateurs de lecteurs d’écran qui dépendent du texte des liens pour décider de les suivre ou non.

no-confirmation-critical-action

Critique

Description

Des boutons ou liens qui déclenchent des actions destructives ou irréversibles — telles que la suppression d’un compte, la suppression de données, l’annulation d’un abonnement ou l’effacement de contenu — s’exécutent immédiatement au clic sans étape de confirmation.

Importance

Les clics accidentels sur des boutons destructifs peuvent causer une perte permanente de données. Un utilisateur qui clique accidentellement sur « Supprimer le compte » devrait avoir la possibilité d’annuler avant que l’action se termine. C’est à la fois une exigence d’utilisabilité et une question de confiance utilisateur.

Comment QAOS le détecte

L’agent identifie les boutons et liens avec du texte suggérant une action destructive (supprimer, enlever, effacer, annuler, détruire, éradiquer, purger) et les clique, observant si une boîte de dialogue de confirmation ou une étape de confirmation apparaît avant l’exécution de l’action.

Exemples

<!-- Pas de confirmation — suppression immédiate -->
<button onclick="deleteAccount()">Supprimer le compte</button>

<!-- Correct : déclenche d'abord une boîte de dialogue de confirmation -->
<button onclick="confirmDelete()">Supprimer le compte</button>
<!-- qui affiche : -->
<dialog>
  <p>Êtes-vous sûr ? Cette action est irréversible.</p>
  <button onclick="deleteAccount()">Oui, supprimer mon compte</button>
  <button onclick="closeDialog()">Annuler</button>
</dialog>

Comment corriger

Pour toute action irréversible ou ayant des conséquences significatives, exigez une étape de confirmation explicite avant l’exécution :
  1. Affichez une boîte de dialogue modale avec une description claire de ce qui se passera
  2. Demandez à l’utilisateur de cliquer sur un bouton distinct de « confirmation »
  3. Offrez une option « annuler » bien visible
  4. Pour les actions particulièrement destructives, exigez la saisie d’une phrase de confirmation (ex. : le nom du compte)

Élevé WCAG 2.4.6

Description

Le texte des liens est générique et ne donne aucune indication de la destination ou du purpose du lien — des formulations comme « cliquez ici », « en savoir plus », « lire la suite » ou du texte de type espace réservé.

Importance

Les utilisateurs de lecteurs d’écran naviguent souvent en parcourant les liens d’une page. Si chaque lien dit « cliquez ici », ils ne peuvent pas déterminer quel lien mène où sans lire le contexte environnant. Cela rend la navigation extrêmement inefficace.

Comment QAOS le détecte

L’agent analyse les éléments d’ancrage pour le texte correspondant à des motifs génériques : « cliquez ici », « en savoir plus », « ici », « lien », « plus » ou du texte complètement inintelligible (traits de soulignement, charabia).

Exemples

<!-- Peu clair -->
<a href="/about">Cliquez ici</a>
<a href="/terms">En savoir plus</a>
<a href="/contact">______</a>

<!-- Correct : texte de lien descriptif -->
<a href="/about">À propos de notre entreprise</a>
<a href="/terms">Lire nos Conditions d'utilisation</a>
<a href="/contact">Contacter l'équipe de support</a>

Comment corriger

Rédigez le texte des liens qui décrit la destination ou l’action. Le texte du lien doit avoir du sens hors contexte :
<!-- Si vous devez utiliser "en savoir plus", fournissez un contexte accessible -->
<a href="/blog/post-1">
  En savoir plus <span class="sr-only">sur nos résultats du T4</span>
</a>

inconsistent-navigation

Élevé WCAG 3.2.3

Description

La structure de navigation principale change entre les pages du même site web — des éléments apparaissent dans des ordres différents, des liens apparaissent sur certaines pages mais pas d’autres, ou la disposition de la navigation change d’une section à l’autre.

Importance

Une navigation cohérente est une attente fondamentale d’utilisabilité. Les utilisateurs construisent un modèle mental de la structure de votre navigation après avoir visité quelques pages. Quand la navigation change, les utilisateurs perdent leurs repères et dépensent un effort cognitif à réapprendre la disposition plutôt qu’à accomplir leur objectif. Les utilisateurs de lecteurs d’écran sont particulièrement affectés — ils naviguent souvent par régions de repère (<nav>), et les structures de navigation changeantes font que chaque page ressemble à un nouveau site web.

Comment QAOS le détecte

L’agent suit les liens de navigation vers plusieurs pages et compare la structure de navigation — vérifiant les changements d’ordre, les éléments manquants ou les différences structurelles entre les pages.

Comment corriger

Implémentez un composant de navigation partagé qui s’affiche identiquement sur chaque page. En React/Next.js, c’est typiquement un composant de mise en page :
// _app.jsx ou layout.jsx
export default function Layout({ children }) {
  return (
    <>
      <Navigation /> {/* même composant sur chaque page */}
      <main>{children}</main>
    </>
  )
}
Si différentes pages nécessitent vraiment une navigation différente (ex. : une section admin séparée), assurez-vous que la structure au sein de chaque section est cohérente en interne.
Élevé WCAG 2.1.1

Description

Un composant de menu déroulant personnalisé (non natif) ne supporte pas la navigation au clavier avec les touches Flèche bas/Flèche haut entre les options. Les utilisateurs doivent utiliser une souris pour sélectionner une option.

Importance

Les utilisateurs au clavier uniquement, les utilisateurs de lecteurs d’écran et les utilisateurs avec des handicaps moteurs dépendent de la navigation par touches fléchées dans les composants de liste. Un menu déroulant personnalisé qui ne répond qu’aux clics de souris est inaccessible pour eux.

Comment QAOS le détecte

L’agent identifie les composants de menu déroulant personnalisés (ex. : <div role="listbox"> ou comboboxes personnalisées) et vérifie s’ils ont des gestionnaires d’événements clavier pour la navigation par touches fléchées.

Exemples

<!-- Menu déroulant non natif sans gestionnaire de clavier — inaccessible -->
<div role="listbox">
  <div role="option" onclick="select('US')">États-Unis</div>
  <div role="option" onclick="select('CA')">Canada</div>
</div>

Comment corriger

Implémentez le modèle de clavier ARIA Listbox — Flèche bas/Flèche haut pour déplacer le focus, Entrée ou Espace pour sélectionner, Échap pour fermer :
listbox.addEventListener('keydown', (e) => {
  if (e.key === 'ArrowDown') focusNext()
  if (e.key === 'ArrowUp') focusPrev()
  if (e.key === 'Enter' || e.key === ' ') selectFocused()
  if (e.key === 'Escape') closeDropdown()
})
Alternativement, utilisez un élément <select> natif qui fournit la navigation au clavier gratuitement.
Moyen WCAG 4.1.2

Description

Un élément <a> n’a pas de texte visible et pas d’aria-label, le rendant invisible pour les utilisateurs de lecteurs d’écran. Les cas courants incluent les liens avec icône uniquement ou les liens d’image où l’image n’a pas de texte alt.

Importance

Les lecteurs d’écran annoncent les liens par leur contenu textuel. Un lien vide est annoncé comme « lien » sans destination — complètement inutile pour la navigation. Les utilisateurs ne peuvent pas savoir où le lien mène ou s’ils doivent le suivre.

Comment QAOS le détecte

L’agent analyse les éléments d’ancrage pour ceux sans contenu textuel visible et sans nom accessible via aria-label, aria-labelledby ou une image avec un alt non vide.

Exemples

<!-- Lien vide — pas de texte, pas d'aria-label -->
<a href="/home"></a>

<!-- Lien d'image sans alt — le lecteur d'écran ignore la description -->
<a href="/about"><img src="logo.png"></a>

<!-- Correct : nom accessible fourni -->
<a href="/home" aria-label="Aller à la page d'accueil"></a>
<a href="/about"><img src="logo.png" alt="À propos d'Acme Corp"></a>

Comment corriger

Assurez-vous que chaque lien a un nom accessible significatif — soit comme texte visible, texte alt d’image ou aria-label.
Faible WCAG 3.2.2

Description

Un lien avec target="_blank" s’ouvre dans un nouvel onglet ou une nouvelle fenêtre sans informer l’utilisateur que cela se produira.

Importance

Les nouveaux onglets inattendus désorientent les utilisateurs, surtout les utilisateurs de lecteurs d’écran qui dépendent du bouton retour du navigateur. Les utilisateurs qui ne s’attendent pas à un nouvel onglet peuvent penser que l’application a navigué ailleurs et perdre leur place dans la page originale.

Comment QAOS le détecte

L’agent analyse les éléments d’ancrage pour target="_blank" et vérifie si une indication est donnée à l’utilisateur (texte, icône ou aria-label mentionnant le comportement du nouvel onglet).

Exemples

<!-- Ouvre un nouvel onglet sans avertissement -->
<a href="https://example.com" target="_blank">En savoir plus</a>

<!-- Correct : avertissement visuel et accessible -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
  En savoir plus <span aria-label="(s'ouvre dans un nouvel onglet)"></span>
</a>

Comment corriger

Indiquez le comportement de nouvel onglet visuellement et dans du texte accessible. Ajoutez toujours rel="noopener noreferrer" pour empêcher la page ouverte d’accéder à window.opener :
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
  Conditions d'utilisation <span class="sr-only">(s'ouvre dans un nouvel onglet)</span>
</a>

Faible

Description

Un lien pointe vers un fichier téléchargeable (PDF, DOCX, ZIP, etc.) mais ne donne aucune indication du type de fichier ou de sa taille. Les utilisateurs qui cliquent peuvent être surpris par une invite de téléchargement ou un transfert lent.

Importance

Les utilisateurs sur des connexions lentes, des données mobiles ou des lecteurs d’écran doivent savoir ce qu’ils obtiennent avant de cliquer. Un lien qui déclenche un téléchargement inattendu ou ouvre un fichier volumineux gaspille du temps et peut consommer des allocations de données mobiles.

Comment QAOS le détecte

L’agent analyse les éléments d’ancrage dont le href se termine par une extension de fichier (.pdf, .docx, .zip, .xlsx, etc.) et vérifie si des informations sur le type de fichier ou la taille accompagnent le lien.

Exemples

<!-- Pas d'avertissement sur le type de fichier -->
<a href="/files/annual-report.pdf">Rapport annuel</a>

<!-- Correct : type de fichier et taille indiqués -->
<a href="/files/annual-report.pdf">Rapport annuel (PDF, 2,4 Mo)</a>

Comment corriger

Incluez le type de fichier et la taille en ligne avec le texte du lien, ou via une icône :
<a href="/files/report.pdf">
  Rapport annuel <span class="file-info">(PDF, 2,4 Mo)</span>
</a>