Making Your Shopify Store ADA Accessible

Step-by-step guide to making your Shopify store WCAG 2.1 AA and ADA compliant — keyboard navigation, screen reader support, color contrast, and accessible forms.

E
ECOSIRE Research and Development Team
|19 mars 202614 min de lecture3.0k Mots|

Rendre votre boutique Shopify ADA accessible

Les poursuites ADA (Americans with Disabilities Act) contre les sites de commerce électronique ont augmenté de 300 % entre 2020 et 2024, les magasins Shopify constituant une part croissante des cibles. Au-delà de la conformité légale, l’accessibilité a un impact direct sur les revenus : environ 26 % des adultes américains vivent avec un handicap, ce qui représente 490 milliards de dollars de pouvoir d’achat. Un magasin inaccessible exclut totalement ces clients.

Ce guide couvre la mise en œuvre pratique de l'accessibilité de Shopify : les critères WCAG 2.1 AA spécifiques les plus importants pour le commerce électronique, la manière d'auditer votre boutique actuelle et les correctifs qui répondent aux violations les plus courantes.

Points clés à retenir

  • WCAG 2.1 Niveau AA est la norme requise pour la conformité ADA – pas AAA, pas seulement le niveau A
  • La navigation au clavier doit fonctionner pour chaque élément interactif : navigation, sélection de produits, panier et paiement
  • Le rapport de contraste des couleurs doit être de 4,5 : 1 pour le texte normal et de 3 : 1 pour le texte volumineux et les composants de l'interface utilisateur.
  • Les lecteurs d'écran doivent recevoir un texte alternatif significatif pour toutes les images de produits et des étiquettes significatives pour tous les champs du formulaire
  • Les indicateurs de focus doivent être visuellement visibles — les navigateurs les suppriment par défaut dans de nombreux thèmes
  • La caisse de Shopify est gérée par Shopify et est accessible, mais le tiroir du panier de votre thème peut ne pas l'être
  • Les vérificateurs d'accessibilité automatisés détectent environ 30 % des problèmes ; des tests manuels sont requis pour le reste
  • Les superpositions d'accessibilité (comme accessiBe) ne sont pas conformes aux WCAG et augmentent le risque juridique

Comprendre les exigences ADA et WCAG pour le commerce électronique

L'ADA n'inclut pas de normes techniques spécifiques pour les sites Web. Les tribunaux ont systématiquement appliqué les directives pour l'accessibilité des contenus Web (WCAG) comme norme de facto, le niveau 2.1 AA étant l'objectif de conformité accepté dans la majorité des règlements et décisions.

Les WCAG 2.1 sont organisés autour de quatre principes (POUR) :

  1. Perceptible : les informations et les composants de l'interface utilisateur doivent être présentables de manière à ce que les utilisateurs puissent les percevoir (alternatives pour le contenu visuel, légendes pour l'audio, contraste suffisant)
  2. Utilisable : les composants de l'interface utilisateur et la navigation doivent être exploitables (clavier accessible, suffisamment de temps pour effectuer les tâches, pas de contenu provoquant des crises)
  3. Compréhensible : les informations et le fonctionnement de l'interface utilisateur doivent être compréhensibles (langage lisible, comportement prévisible, aide à la saisie)
  4. Robuste : le contenu doit être suffisamment robuste pour être interprété par les technologies d'assistance

Les violations d'accessibilité les plus fréquemment litigieuses sur les sites de commerce électronique :

ViolationCritère WCAGFréquence
Texte alternatif de l'image manquante1.1.1 Contenu non textuelTrès élevé
Contraste des couleurs insuffisant1.4.3 Contraste (minimum)Élevé
Pas de navigation au clavier2.1.1 ClavierÉlevé
Étiquettes de formulaire manquantes1.3.1 Informations et relationsÉlevé
Pas d'indicateurs de concentration2.4.7 Mise au point visibleÉlevé
Titres de pages manquants2.4.2 Page intituléeMoyen
Langue non définie3.1.1 Langue de la pageMoyen
Boîtes de dialogue modales inaccessibles4.1.2 Nom, rôle, valeurMoyen

Audit d'accessibilité : outils et processus

Outils de test automatisés :

OutilTapezCouvertureCoût
hache DevToolsExtension de navigateur~30% des numérosGratuit (Pro : 279 $/an)
VAGUEExtension de navigateur + en ligne~30% des numérosGratuit
Accessibilité du phareOutils de développement Chrome~30% des numérosGratuit
Deque hache-noyauPackage npm pour CI/CD~30% des numérosGratuit
Amélioration du sitePlateforme d'entreprise~40% des numérosTarification entreprise

Les outils automatisés détectent les problèmes structurels : texte alternatif manquant, étiquettes de formulaire manquantes, échecs de contraste. Ils ne trouvent pas : une qualité de texte alternatif significative, un ordre logique de mise au point du clavier, une expérience de lecteur d'écran, une complexité cognitive.

Processus de test manuel :

Étape 1 — Test de navigation au clavier uniquement : Déconnectez votre souris. Naviguez dans votre boutique en utilisant uniquement Tab (avant), Maj+Tab (en arrière), Entrée (activer), Espace (sélection/défilement) et les touches fléchées (dans les composants). Effectuez ces tâches :

  • Accédez à une catégorie de produits
  • Sélectionnez un produit
  • Choisissez une variante de taille/couleur
  • Ajouter au panier
  • Accédez au panier
  • Passer à la caisse

Chaque tâche doit être réalisable avec le clavier uniquement.

Étape 2 — Test du lecteur d'écran : Utilisez NVDA (gratuit, Windows) ou VoiceOver (intégré, Mac/iOS). Naviguez sur votre page d'accueil, une page produit et votre panier avec le lecteur d'écran actif. Écoutez :

  • Chaque image est-elle décrite de manière significative ?
  • Tous les boutons sont-ils étiquetés avec leur action ?
  • L'ordre de lecture est-il logique ?
  • Les messages d'erreur sont-ils annoncés ?

Étape 3 — Test de zoom : Augmentez le zoom du navigateur à 200 % et 400 %. La page doit être redistribuée et rester utilisable : pas de défilement horizontal à 200 %, pas de chevauchement de contenu, pas de texte tronqué.

Étape 4 — Test de contraste des couleurs : Utilisez ax DevTools ou WebAIM Contrast Checker pour vérifier que tout le texte répond aux exigences de contraste : 4,5 : 1 pour le texte normal, 3 : 1 pour le texte de grande taille (18 pt+ ou 14 pt+ gras), 3 : 1 pour les composants de l'interface utilisateur (boutons, icônes, bordures de formulaire).


Accessibilité des images : texte alternatif pour les images de produits

Le texte alternatif est la violation d’accessibilité la plus courante dans les magasins Shopify. Chaque image doit avoir un texte alternatif qui transmet les mêmes informations qu'un utilisateur voyant obtiendrait en visualisant l'image.

Consignes relatives au texte alternatif pour les images de produits Shopify :

Décrivez ce qui compte pour les décisions d'achat :

  • Nom du produit et principales caractéristiques distinctives
  • Couleur, matière et caractéristiques visuelles notables
  • Contexte s'il est montré en cours d'utilisation (par exemple, "Tasse en céramique bleue sur table en bois")
  • Tout texte visible dans l'image

Ce qu'il ne faut PAS faire :

  • "image001.jpg" — les noms de fichiers ne sont pas du texte alternatif
  • "Image du produit" — les descriptions génériques ne véhiculent aucune information
  • Bourrage de mots-clés — « tasse bleue, tasse à café en céramique bleue, meilleure tasse bleue » – c'est nocif
  • Décrire chaque détail mineur – être concis et pertinent

Implémentation du texte alternatif dans Shopify :

Ajoutez du texte alternatif aux images de produits via l'administrateur Shopify :

  1. Admin > Produits > [Produit] > cliquez sur une image
  2. Saisissez le texte alternatif dans le champ "Texte alternatif de l'image".
  3. Enregistrer

Pour les mises à jour groupées du texte alternatif, utilisez l'éditeur groupé Shopify :

  1. Admin > Produits > Sélectionner tous les produits > Modifier les produits
  2. Ajoutez la colonne « Texte alternatif de l'image du produit »
  3. Modifier et enregistrer

Images décoratives :

Les images purement décoratives (motifs d'arrière-plan, séparateurs décoratifs) doivent avoir un texte alternatif vide (alt=""). Cela indique aux lecteurs d'écran d'ignorer complètement l'image plutôt que d'annoncer « image » sans description.


L'accessibilité au clavier nécessite que chaque élément interactif (boutons, liens, champs de formulaire, menus déroulants, modaux) puisse être atteint, activé et parcouru en utilisant uniquement un clavier.

Gestion du focus dans les thèmes Shopify :

La plupart des thèmes Shopify suppriment les indicateurs de focus pour l'esthétique visuelle :

/* Many themes include this — it's an accessibility violation */
:focus {
  outline: none;
}

Remplacez par un style de focus visible qui ne brise pas le design :

/* Visible focus for keyboard users, hidden for mouse users */
:focus-visible {
  outline: 3px solid #005FCC;
  outline-offset: 2px;
  border-radius: 2px;
}

/* Still suppress for mouse clicks (no :focus-visible means mouse/touch) */
:focus:not(:focus-visible) {
  outline: none;
}

Accès au clavier du menu de navigation :

Les menus de navigation déroulants doivent pouvoir être actionnés au clavier :

  • Onglet vers l'élément de navigation
  • Entrée ou Espace pour ouvrir la liste déroulante
  • Touches fléchées pour parcourir les éléments de la liste déroulante
  • Échapper pour fermer la liste déroulante

Testez ceci sur votre thème actuel. De nombreux thèmes Shopify comportent des listes déroulantes déclenchées par le survol et inaccessibles aux utilisateurs de clavier. Correctif : assurez-vous que les listes déroulantes s'ouvrent sur les événements keydown pour les touches Entrée/Espace/flèches en plus du survol de la souris.

Gestion du clavier modal et à tiroirs :

Lorsqu'un tiroir modal ou un panier s'ouvre, le focus du clavier doit se déplacer vers le modal. Lorsqu'il se ferme, le focus doit revenir sur l'élément qui l'a déclenché. Tous les éléments focalisables à l'intérieur du modal doivent être accessibles ; le focus ne doit pas échapper au modal.

// Example: Focus management for cart drawer
function openCartDrawer() {
  const cartDrawer = document.getElementById('cart-drawer');
  cartDrawer.setAttribute('aria-hidden', 'false');
  cartDrawer.removeAttribute('inert');

  // Move focus to first focusable element in drawer
  const firstFocusable = cartDrawer.querySelector(
    'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
  );
  firstFocusable?.focus();

  // Trap focus within drawer
  cartDrawer.addEventListener('keydown', trapFocus);
}

function closeCartDrawer(triggerElement) {
  const cartDrawer = document.getElementById('cart-drawer');
  cartDrawer.setAttribute('aria-hidden', 'true');
  cartDrawer.setAttribute('inert', '');
  cartDrawer.removeEventListener('keydown', trapFocus);

  // Return focus to trigger element
  triggerElement?.focus();
}

Accessibilité des formulaires : étiquettes, erreurs et instructions

Les formulaires constituent le domaine d'accessibilité aux enjeux les plus élevés dans le commerce électronique : le formulaire d'ajout au panier, la saisie de recherche, l'inscription à la newsletter et les formulaires de paiement doivent tous être entièrement accessibles.

Exigences relatives à l'étiquette du formulaire :

Chaque entrée de formulaire doit avoir une étiquette associée par programme :

<!-- Correct: label explicitly associated via 'for' attribute -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" required>

<!-- Correct: label wraps input (implicit association) -->
<label>
  Email address
  <input type="email" name="email" required>
</label>

<!-- Wrong: placeholder is not a substitute for label -->
<input type="email" placeholder="Email address" name="email">

Le texte de l'espace réservé disparaît lorsque les utilisateurs tapent et présente un contraste insuffisant dans la plupart des navigateurs. N’utilisez jamais d’espace réservé comme seule étiquette.

Accessibilité des messages d'erreur :

Les messages d'erreur doivent être associés par programme au champ qui les a provoqués :

<div>
  <label for="zip">ZIP code</label>
  <input
    type="text"
    id="zip"
    name="zip"
    aria-describedby="zip-error"
    aria-invalid="true"
  >
  <p id="zip-error" role="alert">
    Please enter a valid 5-digit ZIP code
  </p>
</div>

Le role="alert" amène les lecteurs d'écran à annoncer le message d'erreur immédiatement lorsqu'il apparaît. aria-describedby relie l'erreur au champ de saisie afin que les lecteurs d'écran puissent trouver l'erreur lors de la navigation vers le champ.

Sélecteurs de variantes de taille et de couleur :

Les sélecteurs de variantes de produits (boutons de taille, échantillons de couleurs) doivent être accessibles. Approches courantes :

<!-- Accessible radio button group for size selection -->
<fieldset>
  <legend>Size</legend>
  <div class="size-options">
    <input type="radio" id="size-s" name="size" value="S">
    <label for="size-s">Small</label>

    <input type="radio" id="size-m" name="size" value="M">
    <label for="size-m">Medium</label>

    <input type="radio" id="size-l" name="size" value="L">
    <label for="size-l">Large</label>
  </div>
</fieldset>

Les échantillons de couleurs ont besoin de noms accessibles — la couleur visuelle n'est pas suffisante :

<!-- Accessible color swatch -->
<input type="radio" id="color-navy" name="color" value="Navy">
<label for="color-navy">
  <span class="swatch navy" aria-hidden="true"></span>
  <span class="visually-hidden">Navy</span>
</label>

Étiquettes ARIA et HTML sémantique

Les attributs ARIA (Accessible Rich Internet Applications) comblent les lacunes sémantiques là où le HTML seul est insuffisant. Cependant, la première règle d'ARIA est la suivante : "N'utilisez pas ARIA si HTML peut le faire."

Modèles ARIA courants pour les magasins Shopify :

<!-- Cart button with item count -->
<button aria-label="Cart, 3 items">
  <svg aria-hidden="true"><!-- cart icon --></svg>
  <span class="visually-hidden">Cart</span>
  <span class="cart-count" aria-hidden="true">3</span>
</button>

<!-- "Add to Cart" button state changes -->
<button id="add-to-cart" aria-live="polite">
  Add to Cart
</button>
<!-- After adding: -->
<button id="add-to-cart" aria-live="polite">
  Added to Cart ✓
</button>

<!-- Loading states -->
<div aria-busy="true" aria-live="polite">
  Loading products...
</div>

<!-- Expandable sections (accordion) -->
<button aria-expanded="false" aria-controls="faq-answer-1">
  What is your return policy?
</button>
<div id="faq-answer-1" hidden>
  <p>We accept returns within 30 days...</p>
</div>

Rôles phares pour la navigation :

Assurez-vous que votre thème utilise des éléments HTML de référence appropriés par lesquels les utilisateurs de lecteurs d'écran naviguent :

<header role="banner"><!-- site header --></header>
<nav aria-label="Main navigation"><!-- primary navigation --></nav>
<main id="main-content"><!-- main content --></main>
<aside><!-- sidebar filters or complementary content --></aside>
<footer role="contentinfo"><!-- site footer --></footer>

Superpositions d'accessibilité : pourquoi elles échouent

Les superpositions d'accessibilité (accessiBe, UserWay, AudioEye) sont des widgets JavaScript qui prétendent rendre automatiquement votre site accessible. Ils ne constituent pas une solution et augmentent le risque juridique.

Pourquoi les superpositions échouent :

  1. Ils ne peuvent pas résoudre les problèmes structurels d’accessibilité HTML – uniquement une présentation au niveau de la surface
  2. Ils entrent fréquemment en conflit avec les technologies d’assistance, ce qui rend l’expérience pire pour les utilisateurs réels de lecteurs d’écran
  3. Les tribunaux n'ont pas accepté les réclamations des fournisseurs de superposition comme étant une conformité adéquate à l'ADA
  4. La Fédération nationale des aveugles et d'autres organisations de défense des personnes handicapées s'opposent explicitement aux superpositions
  5. De nombreux fournisseurs d’overlay ont eux-mêmes fait l’objet de recours collectifs

Que faire à la place :

Investissez dans des correctifs structurels d’accessibilité : HTML sémantique, étiquettes appropriées, navigation au clavier, gestion du focus et contraste des couleurs. Ces correctifs profitent à tous les utilisateurs, améliorent le référencement (les lecteurs d’écran et les robots de recherche ont des besoins similaires) et offrent une véritable protection juridique.


Questions fréquemment posées

Une boutique Shopify peut-elle vraiment être poursuivie en justice pour non-conformité à l'ADA ?

Oui. Les poursuites en matière d'accessibilité ADA Title III contre les sites Web de commerce électronique sont bien établies dans la loi américaine. Les tribunaux des 9e et 11e circuits ont toujours statué que les sites Web sont des « lieux d'hébergement public » soumis aux exigences de l'ADA. Les marchands Shopify ayant des clients américains sont soumis à ce paysage juridique. Le coût d’une réponse à une lettre de mise en demeure et d’un règlement varie généralement entre 5 000 $ et 25 000 $ ; un litige complet coûte beaucoup plus cher. La mise en œuvre proactive de l’accessibilité est nettement plus économique.

Le processus de paiement de Shopify nécessite-t-il des travaux d'accessibilité ?

La caisse native de Shopify (la caisse hébergée sur checkout.shopify.com) est gérée et maintenue par Shopify et répond aux normes WCAG 2.1 AA. Si vous utilisez le paiement standard de Shopify, cette partie de votre boutique relève de la responsabilité d'accessibilité de Shopify. Cependant, le tiroir du panier de votre thème, les formulaires d'ajout au panier, les pages de compte et tout le contenu rendu par le thème relèvent de votre responsabilité. Si vous utilisez une caisse personnalisée ou une vitrine sans interface graphique, toute accessibilité à la caisse relève de votre responsabilité.

Combien de temps faut-il pour rendre une boutique Shopify entièrement accessible ?

Pour une boutique Shopify typique avec un thème commercial, la conformité aux WCAG 2.1 AA prend 40 à 80 heures de développement en fonction de la qualité de base du thème et de l'étendue de la personnalisation. Audit initial : 8 à 12 heures. Correctifs critiques (navigation au clavier, indicateurs de mise au point, système de texte alternatif) : 20 à 30 heures. Forme et accessibilité modale : 10-20 heures. Maintenance continue : 4 à 8 heures par mois à mesure que de nouveaux contenus et fonctionnalités sont ajoutés.

Dois-je faire en sorte que chaque image de produit comporte un texte alternatif manuellement ?

Pour la violation la plus courante (texte alternatif manquant), vous pouvez établir un système plutôt que d'écrire manuellement un texte alternatif pour chaque image. Pour les images de produits : utilisez le titre du produit + les détails de la variante clé comme modèle. Pour les mises à jour groupées : utilisez l'importation/exportation CSV de Shopify pour les métachamps de produits afin de mettre à jour par lots le texte alternatif. Pour les nouveaux produits : exigez un texte alternatif dans le cadre de votre liste de contrôle de création de produit. Pour les collections comprenant des milliers de produits, donnez d'abord la priorité à vos pages les plus fréquentées.

Quelle est la classe CSS « visuellement masquée » utilisée pour l'accessibilité ?

La classe visuellement masquée (également appelée « sr-only ») masque visuellement le contenu tout en le gardant accessible aux lecteurs d'écran. Ceci est différent de display:none (qui se cache de tout le monde, y compris des lecteurs d'écran) et de visibility:hidden (identique). Il est essentiel pour ajouter des étiquettes accessibles aux éléments visuels tels que des boutons contenant uniquement des icônes :

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

Prochaines étapes

La mise en œuvre complète de l'accessibilité de Shopify – couvrant la navigation au clavier, la compatibilité avec les lecteurs d'écran, l'accessibilité des formulaires et le contraste des couleurs WCAG – nécessite à la fois une expertise en développement front-end et une méthodologie de test d'accessibilité.

Les services Shopify d'ECOSIRE comprennent des audits d'accessibilité, des mesures correctives WCAG 2.1 AA et une surveillance continue de l'accessibilité pour protéger votre boutique contre les litiges ADA tout en élargissant votre base de clients accessibles.

Contactez notre équipe d'accessibilité pour planifier un audit WCAG 2.1 AA complet pour votre boutique Shopify.

E

Rédigé par

ECOSIRE Research and Development Team

Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.

Discutez sur WhatsApp