L'accessibilité des applications web mobiles ou la véritable histoire d un projet web mobile (très) grand public vu par ses utilisateurs Contée par Sébastien Delorme, Atalan
Casting
Critiques «Une histoire accessible et intrigante inspirée de faits réels.»
Critiques «Une conférence d auteur, accessible aux avertis.»
Critiques «Ce mercredi, en salle, une énième conférence sur les utilisateurs.»
Il était une fois
Il était une fois VoiceOver?
Il était une fois TalkBack?
Sans transition
Késako? aria-expanded
Késako? «Retirer les attributs aria-expanded des systèmes d accordéons»
À nvous de jouer
Un bouton image
Un bouton image <button> <img alt="géolocaliser l aéroport le plus proche" /> </button>
Un bouton image <button> <img alt="géolocaliser l aéroport le plus proche" /> </button> WCAG
En passant Sur l intégration des icônes-liens, je vous recommande la séance «Techniques d intégration d icônes-liens» à 14h40
Un lien
<a> <img alt="petit courrier" /> <p>de : Caen</p> <p>à : Quand</p> </a> Un lien
Un lien <a> <img alt="petit courrier" /> <p>de : Caen</p> <p>à : Quand</p> </a> WCAG
Un tableau
Un tableau <table> <tr> <td></td> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table>
Un tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <td></td> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table>
caption { position: absolute; left: -99999px; } Un tableau
Un tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <td></td> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table> caption { position: absolute; left: -99999px; } WCAG
On passe au niveau supérieur?
Un champ «autocomplété»
Un champ «autocomplété» aria-autocomplete="" autocomplete=""
Un champ «autocomplété» aria-autocomplete="" autocomplete="" <div role="status" aria-live="polite"> <p>4 résultats suggérés, utilisez les flèches haut et bas pour naviguer.</p> </div>
Un champ «autocomplété» aria-autocomplete="" autocomplete="" <div role="status" aria-live="polite"> 4 résultats suggérés, utilisez les flèches haut et bas pour naviguer. </div>
Un champ «autocomplété» aria-autocomplete="" autocomplete="" <div role="status" aria-live="polite"> 4 résultats suggérés. </div> WCAG
On audite?
WCAG
RGAA
Accessi Web
On fait tester?
On fait tester? «Impossible de consulter mes réservations»
«Cette application n est pas du tout accessible!» On fait tester? «Impossible de consulter mes réservations»
«Je ne comprends pas, je n arrive pas naviguer dans l application» «Cette application n est pas du tout accessible!» On fait tester? «Impossible de consulter mes réservations»
«Je ne comprends pas, je n arrive pas naviguer dans l application» On fait tester? «Impossible de consulter mes réservations» «Cette application n est pas du tout accessible!» «Ce site n est pas du tout compatible avec VoiceOver»
Penchons-nous sur les retours
Cas n 1 «Dans la rubrique prochains départs, pour la plupart des vols, on n a pas accès au terminal. Par exemple, le vol de Troyes à Sète. Ce problème est également présent sur votre site internet.»
Cas n 1 «Le lien suivant renvoie vers le message d erreur "Désolé, la page demandée n existe pas".»
Cas n 1 1/3 des retours ne concerne pas l accessibilité
Cas n 1 d où l importance de cadrer les tests utilisateurs.
Cas n 2 «Lorsque j affiche une nouvelle page, VoiceOver redémarre la lecture tout en haut, alors qu il faudrait lire directement le contenu de cette page.»
Cas n 2 «Dans chaque élément de la liste, il n est pas utile que VoiceOver lise "puce" à chaque puce rencontrée.»
Cas n 2 La limite des aides techniques ou Le manque de connaissance dans l utilisation des aides techniques
Et puis
«Le bouton de géolocalisation est lu "bouton" par VoiceOver, sans aucune autre information.»
Le bouton image <button> <img alt="géolocaliser l aéroport le plus proche" /> </button> WCAG
VoiceOver, sur ios6, ne restitue pas l alternative d une image dans un bouton
Le bouton image <button title="géolocaliser l aéroport le plus proche"> <img alt="géolocaliser l aéroport le plus proche" /> </button> WCAG
«La lecture est trop hachée avec VoiceOver, trop de fois le mot "lien" entendu.»
Le lien <a> <img alt="petit courrier" /> <p>de : Caen</p> <p>à : Quand</p> </a> WCAG
VoiceOver découpe la lecture d un lien en fonction des conteneurs de type block qu il contient.
Le lien Petit courrier, lien, image. De : Caen, lien. À : Quand, lien. <a> <img alt="petit courrier" /> <p>de : Caen</p> <p>à : Quand</p> </a> WCAG
Le lien Petit courrier De : Caen À : Quand, lien. <a> <img alt="petit courrier" /> <span>de : Caen</span> <span>à : Quand</span> </a> WCAG
«Les tableaux ne sont pas du tout accessibles!»
Le tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <td></td> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table> caption { position: absolute; left: -99999px; } WCAG
VoiceOver décale la lecture des entêtes en présence d une cellule vide dans la ligne ou colonne d entêtes.
Le tableau «Terminal Vienne C» WCAG
Le tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <th></th> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table> WCAG
Le tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <th></th> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table> «Terminal Paris C» WCAG
«Tout plante quand je lis un tableau!»
Le tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <th></th> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table> «Tableau, heure et terminaux des prochains départs.» caption { position: absolute; left: -99999px; } WCAG
Lorsque VoiceOver lit des contenus cachés, le navigateur cherche à les afficher
Le tableau <table> <caption>heures et terminaux des prochains départs</caption> <tr> <th></th> <th scope="col">terminal</th> <th scope="col">heure</th> </tr> [ ] </table> «Tableau, heures et terminaux des prochains départs.» caption { position: absolute; opacity:0; } WCAG
À votre avis, pourquoi? «Retirer les attributs aria-expanded des systèmes d accordéons»
«Je n arrive pas à accéder aux suggestions proposées dans les champs de saisie.»
Le champ «autocomplété» «4 résultats suggérés.» WCAG
En l état, compte-tenu du fonctionnement des lecteurs d écran sur les équipements tactiles, l autocomplétion ne peut pas être rendue accessible.
Le champ «autocomplété» WCAG
C est le problème d Apple? Tous les utilisateurs (clients) testeurs étaient équipés d un iphone (ios 6 ou 7) Doit-on leur demander de changer de téléphone?
Les normes et référentiels Ils sont importants, mais clairement insuffisants, notamment sur des technologies ou des usages récents, comme le mobile.
Testez et/ou faites tester Tous les cas montrés peuvent être facilement identifiés, sans nécessairement être un utilisateur averti.
Générique de fin & questions Sébastien Delorme Responsable accessibilité numérique sdelorme@atalan.fr Twitter : @sebcbien