Aller au contenu

Exercices

Méthodologie de travail

Ce TP est distribué et remis via Classroom 50, l'alternative libre à GitHub Classroom : vous recevez un dépôt GitHub privé personnel, et chaque git push est enregistré comme une soumission. Vous aurez besoin de Git et d'un compte GitHub.

1. Réception et acceptation du devoir

Votre enseignant vous partagera un lien Classroom 50 pour ce TP, de la forme https://classroom50.org/<organisation>/<classe>/assignments/<devoir>. Suivez ces étapes :

  1. Cliquez sur le lien fourni par votre enseignant
  2. Cliquez sur Sign in with GitHub et autorisez l'application Classroom 50 (uniquement la première fois), avec le compte GitHub associé à l'adresse e-mail communiquée à votre enseignant
  3. Acceptez l'invitation à l'organisation GitHub de la classe si ce n'est pas déjà fait (GitHub vous l'envoie par e-mail ; la page d'acceptation du devoir peut aussi l'accepter pour vous)
  4. Cliquez sur Accept assignment, attendez que Classroom 50 crée votre dépôt (cela peut prendre quelques secondes), puis cliquez sur Open repository

Un seul dépôt valide

Ne créez pas de dépôt vous-même et ne « forkez » pas le dépôt du devoir : le dépôt généré à l'acceptation, nommé <classe>-<devoir>-<votre-identifiant-github>, est le seul qui sera évalué.

La page affiche « Not a member yet » ?

Votre compte ne fait pas encore partie de la classe. Demandez à votre enseignant de vous ajouter à la liste de la classe. Une fois l'invitation reçue et acceptée, cliquez sur Check again.

2. Clonage du dépôt

Une fois votre dépôt créé :

git clone <url-de-votre-depot>
cd <nom-du-depot>

URL du dépôt

L'URL de votre dépôt est affichée sur la page du dépôt GitHub, sous le bouton vert Code. Copiez l'URL HTTPS ou SSH selon votre configuration. Vous pouvez aussi trouver la commande pour cloner le dépôt dans la page du devoir sur Classroom 50.

3. Travail sur la branche principale

Avec Classroom 50, vous travaillez directement sur la branche principale (main) de votre dépôt : c'est elle qui est évaluée.

Ouvrez le projet dans VS Code ou votre éditeur de code préféré, et commencez à travailler sur les exercices. Chaque exercice doit être réalisé dans son propre dossier (exercice-0/, exercice-1/, etc.) comme indiqué dans les énoncés.:

  1. Ouvrez VS Code
  2. Cliquez sur File > Open Folder... et sélectionnez le dossier cloné du dépôt
  3. Vous pouvez maintenant éditer les fichiers et dossiers du projet
  1. Ouvrez un terminal
  2. Naviguez jusqu'au dossier cloné du dépôt
  3. Tapez la commande suivante pour ouvrir le projet dans votre éditeur de code (VS Code) :

    code .
    

Extensions VS Code recommandées

Une fois le projet ouvert dans VS Code, vous pouvez installer les extensions recommandées une fois solicitées pour faciliter le développement web :

Pas de branche de travail

Chaque git push sur main est enregistré comme une soumission, et la Pull Request « Feedback » de votre dépôt compare main à l'état initial du devoir. Un travail poussé sur une autre branche ne serait pas pris en compte.

4. Commits réguliers

À la fin de chaque tâche ou exercice, commitez puis poussez votre travail :

1
2
3
git add .
git commit -m "Description claire de la tâche réalisée"
git push

5. Soumission du compte rendu

Avec Classroom 50, soumettre, c'est pousser : chaque git push sur main enregistre une nouvelle soumission. Il n'y a aucun lien ni fichier à envoyer à votre enseignant.

À la fin du TP :

  1. Vérifiez que tout votre travail est poussé :

    git status
    git push
    

  2. Vérifiez votre soumission sur classroom50.org : ouvrez votre classe (View assignments), choisissez ce devoir, puis cliquez sur My submission. L'état doit indiquer Submitted, avec la date de votre dernière soumission. Si le devoir est évalué automatiquement, le résultat est publié dans l'onglet Releases de votre dépôt GitHub (le déroulement de l'évaluation est visible dans l'onglet Actions).

  3. À la fin de chaque tâche, prenez une capture d'écran de votre application en fonctionnement et ajoutez-la en commentaire de la Pull Request « Feedback » de votre dépôt (onglet Pull requests sur GitHub).

    Important

    Cette Pull Request est ouverte automatiquement par Classroom 50 lorsque vous acceptez le devoir : votre enseignant s'en sert pour commenter votre code. NE LA FERMEZ PAS et ne cherchez pas à la fusionner (seul l'enseignant le peut) : laissez-la ouverte en attendant la validation de votre enseignant.

    Vous ne voyez pas la Pull Request « Feedback » ?

    Contactez votre enseignant : les retours par Pull Request peuvent être désactivés pour un devoir.

Soumettre en ligne de commande (optionnel)

L'extension gh student du GitHub CLI permet d'accepter et de soumettre un devoir sans quitter le terminal :

1
2
3
gh extension install foundation50/gh-student
gh student accept <organisation> <classe> <devoir>
gh student submit

gh student accept crée votre dépôt et affiche la commande git clone à exécuter. Depuis le dépôt cloné, gh student submit enregistre votre travail dans un nouveau commit et le pousse sur main.

Si votre enseignant précise que le devoir n'est évalué qu'à la soumission, un simple git push n'est pas évalué : utilisez gh student submit, ou poussez une étiquette submit/… :

git tag submit/final && git push origin submit/final

Plus de détails dans les guides étudiants de Classroom 50 : version web et version ligne de commande.

Sauvegardez souvent votre travail !

Utilisez Git (commit puis push) pour sauvegarder régulièrement votre travail après chaque tâche. Cela vous permettra de revenir à une version antérieure en cas de problème. N'attendez pas la fin du TP pour faire un commit, vous risquez de perdre beaucoup de travail en cas de problème. Exemple de message de commit : "fin de la tâche 1".

Dossiers et fichiers à ne pas modifier

Ne modifiez pas la structure des dossiers ou les fichiers déjà présents dans le dépôt. Chaque exercice doit être réalisé dans son propre dossier (exercice-1/, exercice-2/, etc.) comme indiqué dans les énoncés.

Liste des dossiers/fichiers à ne pas modifier :

1
2
3
4
5
6
7
votre-depôt-github/
├── .github/
├── .devcontainer/
├── .vscode/
├── .gitignore
├── LICENSE
...
Tests automatiques avec GitHub Actions (Autograde)

Présentation du système d'autograding

Tests automatisés

Votre dépôt GitHub Classroom est configuré avec des tests automatiques qui s'exécutent à chaque push. Ces tests vérifient que votre code respecte les exigences de chaque exercice.

Comment ça fonctionne ?

  1. Déclenchement automatique : À chaque git push, GitHub Actions lance une série de tests
  2. Validation du code : Les tests vérifient la structure HTML, le CSS, la présence de fichiers, etc.
  3. Rapport de résultats : Vous recevez un feedback immédiat sur ce qui fonctionne ou non
  4. Note automatique : Votre score est calculé en fonction des tests réussis

Où voir les résultats des tests ?

1. Sur votre Pull Request

Quand vous ouvrez une PR, vous verrez une section "Checks" en bas de la page :

1
2
3
✅ All checks have passed        (Tous les tests sont OK)
❌ Some checks were not successful  (Des tests ont échoué)
🟡 Checks are running...         (Tests en cours)

Pour voir les détails :

  1. Cliquez sur "Details" à côté du test qui a échoué
  2. Vous serez redirigé vers la page des logs GitHub Actions

2. Dans l'onglet "Actions" du dépôt

  1. Allez sur votre dépôt GitHub
  2. Cliquez sur l'onglet "Actions" en haut
  3. Vous verrez la liste de tous les workflows exécutés
  4. Cliquez sur un workflow pour voir les détails

Comprendre les logs de tests

Structure typique des logs

FAIL tests/exercice-1.test.js
Exercice 1 - Tableau des notes
    ✓ Le fichier index.html existe (15 ms)
    ✓ Le fichier styles.css existe (3 ms)
    ✕ Le tableau contient 10 lignes d'élèves (45 ms)
    ✓ L'en-tête du tableau a un background différent (12 ms)
    ✕ Les cellules ont des bordures (8 ms)

Tests Suites: 1 failed, 1 total
Tests:       2 failed, 3 passed, 5 total

Interpréter les résultats

Symbole Signification Action requise
✅ ✓ Test réussi Rien à faire, c'est parfait !
❌ ✕ Test échoué Lire le message d'erreur et corriger
⏭️ ○ Test ignoré Peut-être pas encore implémenté

Debugging pas à pas

Étape 1 : Identifier le test qui échoue

Dans les logs, cherchez la ligne avec ✕ :

✕ Les cellules ont des bordures (8 ms)

Étape 2 : Lire le message d'erreur complet

Juste en dessous, vous trouverez des détails :

1
2
3
Expected CSS property 'border' on 'td' or 'table' elements
Selector checked: td, table
Property found: none

Étape 3 : Localiser le problème dans votre code

Ouvrez styles.css et vérifiez :

1
2
3
4
5
6
7
/* ❌ Problème : règle manquante ou mal écrite */
/* table { ... } */

/* ✅ Solution : ajoutez la règle */
td, th {
border: 1px solid #ddd;
}

Étape 4 : Corriger et re-tester

1
2
3
git add .
git commit -m "fix(exercice-1): ajout bordures cellules tableau"
git push origin exercice-1

Les tests se relanceront automatiquement !

Conseils pour réussir les tests

Conseils pratiques

  1. Testez localement avant de pusher.
  2. Lisez attentivement les messages d'erreur
  3. Respectez les noms de fichiers exacts (minuscules, tirets)
  4. Validez votre HTML sur W3C Validator
  5. Commitez régulièrement pour voir l'évolution des tests
  6. Ne paniquez pas si des tests échouent : c'est fait pour vous guider !

Pièges courants

  • ❌ Fichiers dans le mauvais dossier
  • ❌ Fautes de frappe dans les noms de fichiers
  • ❌ Balises HTML mal fermées
  • ❌ Sélecteurs CSS trop spécifiques ou inexistants
  • ❌ Images sans attribut alt
  • ❌ Oubli du lien vers le fichier CSS

En cas de problème persistant

Si vous ne comprenez pas pourquoi un test échoue :

  1. Relisez les logs attentivement (ligne par ligne)
  2. Comparez avec l'énoncé de l'exercice
  3. Vérifiez que votre structure de dossiers est correcte
  4. Demandez de l'aide dans les commentaires de la PR
  5. Consultez la documentation MDN pour la syntaxe HTML/CSS

L'enseignant peut également ajouter des commentaires directement sur votre PR pour vous guider.

Exercices à faire

Rendez-vous dans les sections dédiées aux exercices dans la barre de navigation latérale pour accéder aux énoncés détaillés et aux ressources nécessaires pour chaque exercice.

Liste des exercices

Ce TP comprend 6 exercices progressifs couvrant les tableaux HTML, les formulaires, les iframes et les galeries d'images :

  • Exercice 0 : Formulaire d'inscription (HTML uniquement) - Focus sur la structure
  • Exercice 1 : Tableau de notes d'élèves
  • Exercice 2 : Comparaison de produits
  • Exercice 3 : Navigation avec iframes
  • Exercice 4 : Formulaire de commande (HTML + CSS + Images)
  • Exercice 5 : Galerie d'images interactive (HTMl + CSS + Javascript)

Date limite et modalités de rendu

Deadline

Date limite : à la fin de la séance

  • Toutes les branches doivent être poussées sur GitHub
  • Les 6 commentaires doivent être ajoutés au pull request "Feedback"
  • Les captures d'écran doivent être ajoutées dans le PR "Feedback"

Aucun retard ne sera accepté sans justification valable.