Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Time - UE L311 - Semaine 3 - Groupe G

📚 Sommaire

Membres du groupe

Etudiant.e Alias Branche
Mathilde C. Clouddy23 bugfix/mathilde
Kamo G. Spaghette5 bugfix/kamo
Mathieu L. mathleys bugfix/mathieu
Filippos K. filkat34 bugfix/filippos

Objectifs

  • Mobiliser les mĂ©thodes de dĂ©boggage abordĂ©es en classe virtuelle pour rendre une page web fonctionnelle.
  • Savoir utiliser le client git et la plateforme Github en vue de collaborer au sein d'une Ă©quipe de dĂ©veloppement.
  • Se familiariser avec la syntaxe Markdown en vue de rĂ©diger la documentation d'un dĂ©pĂŽt distant.

Travail collaboratif

Outils

Le principal outil de collaboration utilisé est Github. Nous avons cloné le dépÎt fourni et chaque membre de l'équipe a créé sa propre branche pour pouvoir travailler indépendamment. Nous avons également utilisé Teams pour faire les visios de code review.

Principe général

La premiĂšre code review nous a permis de repartir grossiĂšrement le travail entre nous en ajoutant dans la rubrique "issues" de Github pour mĂ©moire les bogues dĂ©jĂ  repĂ©rĂ©s, commençant ainsi une liste appelĂ©e Ă  ĂȘtre progressivement enrichie au fil de notre travail.

Tout en se partageant la résolution des bogues listés et vu l'ampleur restreinte du projet et l'envie de certains de se préoccuper également d'accessibilité et de qualité de code, nous avons décidé de laisser libre cours à chacun de travailler sur sa branche et d'apporter les modifications qu'il juge nécessaires. Une fois son travail fini, chacun fait une demande de tirage pour que les autres puissent en prendre connaissance.

Un travail d'harmonisation est prĂ©vu dans le cadre de la deuxiĂšme code review en visio oĂč l'on discute des propositions de chacun, faisons des tests fonctionnels manuels dans chaque branche pour choisir et amender celle qui devra ĂȘtre fusionnĂ©e avec la branche principale.

Planning de la semaine

Dates Objectif
12/10 Code review n. 1 en visio : lecture collective du code et ouverture d'issues pour mémoire sur Github
13/10-16/10 Période de débogage en priorité des erreurs assignées au développeur dans sa branche bugfix/nomdudev
17/10 Code review n. 2 pour discussion autour des pull requests et merge dans main
18/10-19/10 Finalisation de la rédaction du CR dans le README.md de la branche main

Méthodes de débogage employées

Pour identifier et corriger les problÚmes, plusieurs méthodes de debug ont été employées :

Analyse du fichier HTML

À l’ouverture de l’application, le navigateur affichait uniquement l’arborescence des fichiers, au lieu de charger automatiquement le fichier index.html. Cette anomalie a Ă©tĂ© attribuĂ©e Ă  une erreur dans l’extension du fichier.

<arborescencde de fichiers

Analyse du code source dans le navigateur

L’inspection du HTML a permis de dĂ©tecter que le contenu attendu entre les balises <body> n’était pas prĂ©sent. Cette Ă©tape a mis en Ă©vidence des erreurs structurelles qui pouvaient perturber le rendu de la page.

balise body vide

Vérification des fichiers chargés

L’inspection du rĂ©seau a montrĂ© que seul index.html Ă©tait chargĂ©. Les appels au fichier CSS et Ă  Google Fonts ont Ă©tĂ© contrĂŽlĂ©s, rĂ©vĂ©lant des fautes de frappe empĂȘchant le chargement correct du design.

erreur de chargement des fichiers erreur CSS détectée sur le réseau

Analyse et validation du HTML et du CSS

Les fichiers ont Ă©tĂ© examinĂ©s pour vĂ©rifier le nesting des Ă©lĂ©ments, la fermeture correcte des balises et la cohĂ©rence de la syntaxe. L’éditeur VS Code a Ă©tĂ© utilisĂ© pour dĂ©tecter automatiquement les erreurs de syntaxe, les fautes de frappe et les incohĂ©rences dans les fichiers.

erreurs CSS détectées sur VS Code

Debug du JavaScript via la console du navigateur

La console a signalé des erreurs : fonctions invalides, fautes de frappe, absence de fermetures et erreurs de type. Chaque erreur a été corrigée de maniÚre ciblée, en suivant les messages de la console.

exemple d'erreur JS de la console

Phase de tests

AprĂšs correction, le rendu de la page et du design a Ă©tĂ© validĂ© visuellement. L'horloge a Ă©tĂ© testĂ©e pour vĂ©rifier l’ensemble de ses fonctionnalitĂ©s (voir Tests fonctionnels manuels).

GrĂące Ă  cette mĂ©thodologie structurĂ©e, combinant inspection manuelle, outils de dĂ©veloppement du navigateur et vĂ©rification automatique via l’éditeur, l’ensemble des anomalies a Ă©tĂ© identifiĂ© et corrigĂ©, aboutissant Ă  un affichage fonctionnel et conforme au design attendu.

Typologie des erreurs

Nous avons établi ci-dessous une typologie des erreurs trouvées avec quelques exemples pour chacune d'entre elles. Il s'agit bien d'une typologie et non d'une liste exhaustive de toutes les erreurs corrigées.

Fichiers

Quelques erreurs ont Ă©tĂ© trouvĂ©es concernant l'extension du fichier index qui l'empĂȘchait de s'afficher correctement ainsi qu'une coquille dans la saisie du chemin du fichier des styles.

Fichier Exemple Solution
index index.php Renommer l'extension incorrecte du fichier en index.html
index asset/css/style.css Correction de la coquille dans le nom du dossier assets/css/style.css

Syntaxe

De nombreuses erreurs de syntaxe ont été corrigées : oublis de fermeture de balises et d'accolades principalement.

Fichier Exemple Solution
index <title>Timetitle> Ajout de la balise fermante <title>Timetitle</title>
styles .inside font-weight: bold; font-size: 75px;;} Ajout de l'accolade ouvrante et suppression du point virgule en double. Corrigé en .inside { font-weight: bold; font-size: 75px; }
script .setTimeInterval(function(){ ... }, 1000; Ajout de la parenthĂšse fermante (et correction du nom de la fonction Javascript) setInterval(function(){ ... }, 1000);

Typographie

De nombreuses coquilles typographiques ont été rectifiées : inversions ou oublis de lettres principalement.

Fichier Exemple Solution
styles #wrappr{ Ajout de la lettre manquante #wrapper{
script addEventListener('clic', (event) =>... Ajout de la lettre manquante addEventListener('click', (event) =>...
script dcument.querySelector('.button') Ajout de la lettre manquante document.querySelector('.button')

Logique

Quelques incohérences dans le typage des variables et dans la structuration des fonctions ont été trouvées.

Fichier Exemple Solution
script let is_run = "true" La variable doit ĂȘtre un bolĂ©en sinon elle sera toujours false. Il suffit d'enlever les guillemets : let is_run = true
script function randomHexColor(x, y) La signature de la fonction comporte deux paramÚtres alors que son corps et son appel utilisent trois arguments. Il faut rétablir le troisiÚme au niveau de la signature : function randomHexColor(x, y, z)
script function adjustTimer(timer){(timer < 10 ? '0'+timer : timer);} Le return de la fonction a été oublié : function adjustTimer(timer){return (timer < 10 ? '0'+ timer : timer);}
index <div id="wrapper"><div class="inside" id="wrapper"> Deux Ă©lĂ©ments dans la structure ont le mĂȘme id qui est censĂ© ĂȘtre unique. Il faut soit renommer l'un des deux ou refactoriser.

Affichage

Concernant l'affichage, en plus de nombreuses erreurs typographiques, nous avons constatĂ© une mauvaise utilisation de certaines propriĂ©tĂ©s, notamment de flexbox. Mais une fois ces problĂšmes rĂ©solus, le principal dĂ©fi a Ă©tĂ© de faire en sorte que le bouton qui bascule entre deux formes qui n'occupent pas le mĂȘme espace, ne pousse pas les autres Ă©lĂ©ments du DOM. Nous avons rĂ©ussi Ă  faire cela en attribuant au bouton une hauteur et une largeur fixes.

Des optimisations ont été faites au niveau de l'affichage responsive en ajoutant une media query pour les petits écrans.

Nous avons Ă©galement ajoutĂ© des attributs aria-live pour rendre l'horloge plus accessible en avertissant les utilisateurs ayant recours Ă  des lecteurs d'Ă©cran des champs susceptibles d'ĂȘtre dynamiquement modifiĂ©s.

Qualité du code

Selon les choix des uns et des autres, de nombreuses modifications ont été apportées dans le but d'optimiser la qualité et la lisibilité du code. En voici quelques exemples :

Optimisation Description
Lisibilité Dans les fichiers index et styles le code a été mal formaté : pas de sauts de ligne, mauvaise indentation. Nous avons utilisé l'option "Format Document" de VS Code pour rétablir une mise en page lisible
Standardisation Usage de lowerCamelCase pour les variables.
DRY Dans le fichier script le code a tendance à se répéter, notamment concernant les sélecteurs permettant la manipulation du DOM. Nous avons choisi de créer des variables au début du fichier pour les sauvegarder et éviter de les répéter.
KISS Que ce soit au niveau du HTML qui multiplie les <div> ou du CSS qui multiplie les classes, nous avons chosi de refactoriser pour raccourcir et simplifier le code. Par exemple, l'insertion d'éléments dans le DOM via le CSS (les séparateurs) nous a paru le meilleur moyen de complexifier à outrance le code et de le rendre vulnérable aux bogues d'affichage : le CSS est sensible à l'ordre des sélecteurs et multiplier les sources du contenu n'est jamais une bonne idée car cela rend le code plus difficilement maintenable.
Accessibilité Au niveau du CSS nous avons préféré utiliser des mesures relatives (em et non px) ce qui rend l'interface plus flexible et responsive.
Documentation Nous avons également ajouté des commentaires dans notre code afin de faciliter sa maintenabilité.

Tests fonctionnels manuels

Fonctionnalité/Branche Mathilde Kamo Mathieu Filippos
Pas d’erreur JavaScript dans la console. ✅ ✅ ✅ ✅
La page affiche l’heure, les minutes et les secondes à 00:00:00 au chargement. ✅ ✅ ✅ ✅
Les sĂ©parateurs (:) sont visibles. ✅ ✅ ✅ ✅
L’heure, les minutes et les secondes se mettent à jour chaque seconde. ✅ ✅ ✅ ✅
La couleur du fond change progressivement en fonction de l’heure. ✅ ✅ ✅ ✅
Cliquer sur le bouton met l'horloge en pause (l’heure n’avance plus). ✅ ✅ ✅ ✅
Cliquer à nouveau sur le bouton relance l'horloge. ✅ ✅ ✅ ✅
Le bouton affiche “pause” quand l'heure tourne et “play” quand elle ne tourne pas. ✅ ✅ ✅ ✅
L'horloge reste lisible et centrĂ©e, sans dĂ©bordement. ✅ ✅ ✅ ✅
L'affichage de l'horloge s'adapte correctement sur de plus petits Ă©crans (mobile, tablette). ✅ ✅
Lorsque le bouton bascule entre play/pause, il ne pousse pas les autres Ă©lĂ©ments du DOM. 🟹

🟹 ImplĂ©mentation partielle et non universelle. Fonctionne correctement sur certains navigateurs (Firefox) mais non sur d'autres. Son fonctionnement dĂ©pend Ă©galement de la taille de la fenĂȘtre du navigateur redimensionnĂ©e (il faudrait sans doute rajouter d'autres breakpoints dans le css).

AprĂšs des tests sur plusieurs navigateurs, la branche bugfix/filippos prĂ©sentait le moins de problĂšmes d'affichage. Nous avons donc dĂ©cidĂ© de la fusionner dans la branche main. Nous n'avons supprimĂ© aucune des branches de dĂ©veloppement afin que le travail de chacun puisse ĂȘtre visible.

Nous avons également suite à cela déployé notre horloge sur la page github du dépÎt distant.

Bilan et perspectives

Les objectifs fixés ont tous été atteints. L'affichage de l'application et ses fonctionnalités ont été rétablies conformément aux consignes de l'exercice.

Tous les membres du groupe ont montrĂ© de l'implication dans le travail demandĂ©. Des Ă©changes ont eu lieu, Ă  la fois lors des deux visios programmĂ©es sur Teams et rĂ©guliĂšrement sur Whatsapp. Une rĂ©elle entraide s’est manifestĂ©e au sein de l’équipe. À la demande de Mathilde Chauvet, Filippos Katsanos et Mathieu Leyssene ont tous deux acceptĂ© de partager leurs connaissances afin de permettre un approfondissement des compĂ©tences sur GitHub et VS Code.

Tous les membres du groupe maßtrisent les différentes méthodes de déboggage, le client GIT (commit, création et gestion de branches, etc.) et les fonctionnalités de collaboration offertes par Github.

Tout le monde a également pu contribuer dans la rédaction du fichier README du dépÎt et prendre connaissance des particularités de la syntaxe Markdown.

MĂȘme si le projet ne s'y prĂȘtait pas (trop d'erreurs imbriquĂ©es, trop peu de fichiers Ă  dĂ©bogguer, dĂ©lai de rendu trop court), le groupe pourrait encore gagner en efficacitĂ© en s'organisant mieux en amont :

  • en dĂ©finissant plus rigoureusement le pĂ©rimĂštre d'intervention de chacun de ses membres. Cela implique notamment une identification plus prĂ©cise des bogues, dĂšs la premiĂšre rĂ©union, et une rĂ©partition plus stricte entre dĂ©veloppeurs des issues plutĂŽt que d'en rajouter au fil de l'eau ce qui peut crĂ©er des doublons.
  • en harmonisant les conceptions que chacun a de la notion de dĂ©boggage. Jusqu'Ă  quel point peut-on aller dans l'optimisation et la refactorisation d'un code qu'on juge de mauvaise facture ?

About

Simple Time - UE L311 - Semaine 3 - Groupe G

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages