Vous avez 4 séances de TD/TP pour produire un site web qui permettent de répondre à des questions et donne le score.
L'ensemble des 4 TD/TP sont à réaliser sur Gitpod. Vous devez réutiliser le compte que vous avez crée durant la première séance.
Comme au premier TP, vous devez suivre le même processus que pour contribuer à un projet:
- Dupliquer (Forker) le projet github
- Modifier / compléter des fichier du repo. forké
- Commiter vos modifs sur votre repo.
- Proposer vos modifications sur le repo. parent (PullRequest)
L'architecture générale de l'application Burger Quizz est la suivante :
Une application web consomme une API Rest Quarkus qui s'appuie sur une base de données relationnelles en mémoire H2.
Votre client veut une application accessible pour des raison sociales mais aussi légale.
- Permet à un utilisateur de passer le quizz.
- Indique le score du joueur à la fin du quizz.
- Met en avant tous ces réseaux sociaux.
- Une page "About".
- Une image fix avec un "?".
- Affiche le score du joueur à la fin du quizz.
L'objectif de ce quatrième TP est de rendre l'Application Accessible
L'objectif est de créer une copie du projet 'miage-numres-step4' sur votre compte github.
- Se rendre sur le projet github [miage-numres-step4] (https://github.com/aepsilon-tek/miage-numres-step4)
- Fork du projet grâce au bouton Fork
Pour utiliser GitPod avec votre projet forké, il suffit d'ouvrir l'url suivant dans votre navigateur : https://gitpod.io/# + URL_REPO_GITHUB
Avec un repo https://github.com/miage3-ae/miage-numres-step4 alors l'url est : https://gitpod.io/#https://github.com/miage3-ae/miage-numres-step4
Vite est un outil de construction qui vise à fournir une expérience de développement plus rapide et plus simple pour les projets Web modernes. Il se compose de deux grandes parties :
- Un serveur de développement qui offre de riches améliorations de fonctionnalités par rapport aux modules ES natifs, par exemple un remplacement de module à chaud (HMR) extrêmement rapide.
- Une commande de build qui regroupe votre code avec Rollup, préconfiguré pour générer des ressources statiques hautement optimisées pour la production.
Nous utiliserons Vite durant ce TP pour facilité l'expérience de Devellopement en utilisant notamment le HMR.
- Ouvrir deux terminaux.
- Terminal 1 :
- Retourner à la racine du projet :
cd /workspace/miage-numres-step4/
- Aller dans le la partie front :
cd front
- Installer les dépendances :
npm install
- Lancer l'application Front en mode dev :
npm run dev
- Retourner à la racine du projet :
- Terminal 2 :
- Retourner à la racine du projet :
cd /workspace/miage-numres-step4/
- Lancer l'api :
./mvnw quarkus:dev -pl api
- Clicker sur "make public"
- Dans VS Code :
- Aller dans l'onglet PORTS
- Copier l'Address qui commence par
https://8080...
- Dans le fichier store.js
front/light-stack/src/store.js
- Modifier la ligne :
export const baseUrl = "https://url.api";
par l'url que vous venez de copierexport const baseUrl = "https://8080...";
- Modifier la ligne :
- Retourner à la racine du projet :
- Faite le Quizz !
Les utilisateurs ayant des besoins particuliers vont utiliser des outils d'accessibilité, comme un liseur d'écran (screen reader), ne pas utiliser de souris, et autres. L'accessibilité est l'ensemble des techniques que l'on peut mettre en place pour leur permettre d'utiliser l'Application sans problèmes.
- Répondre à la question Q1 du fichier Questions.md
Lightouse est un outils présent dans le navigateur Chrome qui se repose sur Axe (vu en cour), un outil permettant d'évaluer jusqu'à un certain point l'accessibilité de votre site web.
- Ouvrir la console développer (click droit -> inspecter)
- Aller dans Lighthouse
- Choisir Navigation, Bureau, Accessibilité
- Lance l'analyse
- Répondre à la question Q2 du fichier Questions.md
- Répondre à la question Q3 du fichier Questions.md
- Passer le Quizz sans utiliser la souris.
- Répondre à la question Q4 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
Les navigateurs convertissent le balisage en une représentation interne appelée arbre DOM. Le DOM contient un objet pour chaque balise, attribut et noeud de texte. Les navigateurs créent ensuite un arbre d'accessibilité basé sur l'arbre DOM, celui-ci est utilisé par les technologies d'assistance telles que les lecteurs d'écran via des APIs spécifiques à une plateforme.
Sous Chrome :
- Ouvrir la console développer (click droit sur un texte à tester -> inspecter)
- Dans le side menu qui apparait à droite, sous l'onglet Styles, clicker sur la Accessibilité, coché sur "Activer l’arborescence d’accessibilité de la page entière"
- Recharger la console développer
- Dans le side menu qui apparait à gauche un icone d'accessibilité devrait appaitre, si vous clickez dessus vous pourrait voir l'arbre d'Accessibilité
Accessible Rich Internet Applications (ARIA) (qu'on pourrait traduire par « applications internet riches et accessibles ») est un ensemble de rôles et d'attributs d'attributs qui définissent comment rendre le contenu et les applications web accessibles (notamment ceux développés avec JavaScript) pour les personnes avec des handicaps.
ARIA complète HTML afin que les éléments interactifs et les widgets puissent être utilisés par les outils d'assistance quand les fonctionnalités standard ne le permettent pas. Ainsi, ARIA permet de rendre accessible les widgets JavaScript, les indications dans les formulaires, les messages d'erreur et les mises à jour dynamiques du contenu, etc.
Sous Chrome :
- Ajouter les "alt" à toutes les images du site et autres ARIA auquels vous pouvez penser.
- Répondre à la question Q5, Q6 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
Sémantique signifie "en relation avec le sens". Écrire du code HTML sémantique consiste à utiliser des éléments HTML pour structurer votre contenu en fonction de la signification de chaque élément, et non de son apparence.
Les éléments Sémantique HTML embarque avec eux des ARIA role et propriété. Il faut donc les utiliser au maximum.
Le <h1>
est un élément sémantique qui désigne le titre de la page.
Il existe plusieurs régles pour bien utiliser ces éléments, il faut par exemple n'avoir qu'un seul <h1>
par page, ne pas avoir un <hx>
imbriqué dans un <hx-1>
par exemple :
<h3> bonjour </h3> <h2> Toi </h2>
- Répondre à la question Q7 du fichier Questions.md
- Aller dans le fichier
front/src/main.js
- Reprenez le code HTML pour utiliser les éléments sémantiques.
- Liste d'éléments pertinents :
<header>, <footer>, <section>...
- Liste d'éléments pertinents :
- Répondre à la question Q8 du fichier Questions.md
- Répondre à la question Q9 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
Certain utilisateur ont des particularité visuel qui ne leur permet pas de voir certain texte si le contraste avec le fond n'est pas bon. Il existe trois notations de contraste : A, AA et AAA. Tout ce qui est en dessous de la notation AA n'est pas considéré comme étant accessible.
Sous Chrome :
- Ouvrir la console développer (click droit sur un texte à tester -> inspecter)
- Dans le side menu qui apparait, clicker sur la couleur, ensuite clicker sur "Rapport de contraste"
- Répondre à la question Q10, Q11, Q12 et Q13 du fichier Questions.md
- Faites en sorte que la valeur de Rapport de contraste soit > AAA
- Répondre à la question Q14 du fichier Questions.md
- Vous êtes actuellement sur l'onglet "Elements" de la consol dévelloper, aller sur l'onglet "Rendu"
- Descendez en bas "Emuler les déficiences visuelles"
- Choississez vision floue, et toutes les autres déficiences.
- Répondre à la question Q15 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
Comme on viens de le voir certaines déficiences rendent difficile l'idendification des liens. Quelques bonne pratique permette de rendre les liens accessible :
- Utiliser l'ARIA label pour les nommer.
- Ne pas avoir de lien "click me", il faut plutot que le lien porte l'information de "vers où il dirige".
- Avoir une différenciation visuelle de ce qui est un lien ou ce qui ne l'est pas en dehors de sa couleur.
- Mettez à jour tous les liens du site.
- Répondre à la question Q16 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
L'objectif est qu'un Utilisateur puisse passer le quizz avec un minimum d'interaction clavier, donner 3 propositions pour arriver a diminuer ces actions.
Vous pouvez par exemple utiliser le ARIA tabindex pour obliger un screen reader à passer sur un élément à l'appuis de la touche tab ou pour l'en empêcher.
Dans le passé, un changement dans une page web débouchait souvent sur une relecture intégrale, ce qui agaçait souvent l'utilisateur, ou au contraire très peu ou pas de lecture du tout, rendant inaccessible une partie, voire l'ensemble des informations. Jusqu'à récemment, les lecteurs d'écran n'étaient en mesure d'améliorer cela du fait de l'absence d'éléments standardisés pour prévenir le lecteur d'écran d'un changement. Les zones « live » ARIA comblent cette lacune et fournissent des solutions aux lecteurs d'écran afin de savoir si et comment interrompre l'utilisateur lors d'un changement.
L'ajout de l'ARIA aria-live="assertive" sur un élément HTML permet de notifier le screen reader d'une modification et la lecture automatique de ce dernier.
Vous pouvez aussi utiliser le code js : document.getElementById("id").focus({ focusVisible: true });
pour "focus" un élément html quand vous le souhaitez.
Pour chacune des propositions que vous faites, vous devez :
- Decrire la proposition dans le fichier Questions.md
- Implementer votre proposition
- Tester la proposition
- Indiquez le gain en nombre d'actions supprimé.
- Commiter & Pusher le code et le fichier Questions.md
Suivez les étapes ci-desus et répondre à Q17 du fichier fichier Questions.md
Suivez les étapes ci-desus et répondre à Q18 du fichier fichier Questions.md
Suivez les étapes ci-desus et répondre à Q19 du fichier fichier Questions.md
Une fois tous vos commits & Push réalisés sur votre repo, il est nécessaire de faire la Pull Request sur le repo parent. Pour cela, il suffit de :
- Se rendre sur votre compte personnel sur
GitHub
. - Sur la page principale, se rendre sur
Contribute
>Open pull Request
- Remplir le titre de la pull request en précisant votre nom (vos noms) et
Create pull request