Open FrenchToastStudio opened 1 week ago
Un problème avec l'auto-correction actuelle de Classrooms (https://github.com/education/autograding/issues/111) avec une Action est que c'est 0 ou 100%, sauf si on crée un classrooms.yaml personnalisé (ce qui va à l'encontre de la structure du framework Jest avec les suites, it, expect, etc.). Bref, si une action de "npm test" (ou n'importe quel test) se termine avec 0 == 100%, sinon une action se termine avec 1 (au moins un test qui échoue) == 0%.
Un autre défi est que GitHub a archivé le projet education/autograding en mai, alors ce n'est pas sûr si le projet va continuer de même.
Une solution éventuelle pourrait être de générer un .json à partir de Jest et de l'analyser pour calculer des points. https://github.com/im-open/process-jest-test-results est un projet intéressant à ce propos.
Quelque soit la solution, il faudrait qu'elle s'adapte à des changements dans Jest. C'est à dire qu'on peut facilement rajouter ou supprimer des tests/expect dans Jest et le calcul de la note pour la partie test s'adapte en conséquence. C'est très pénible (même avec Copilot ou ChatGPT) de faire un classroom.yaml à la main à partir des tests Jest.
Voici ce que propose GitHub classrooms pour un "Custom YAML" pour les tests du lab0:
name: Autograding Tests
'on':
- push
- repository_dispatch
permissions:
checks: write
actions: read
contents: read
jobs:
run-autograding-tests:
runs-on: ubuntu-latest
if: github.actor != 'github-classroom[bot]'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Lab 0 tests
id: lab-0-tests
uses: classroom-resources/autograding-command-grader@v1
with:
test-name: Lab 0 tests
setup-command: npm ci
command: npm test
timeout: 10
max-score: 100
- name: Autograding Reporter
uses: classroom-resources/autograding-grading-reporter@v1
env:
LAB-0-TESTS_RESULTS: "${{steps.lab-0-tests.outputs.result}}"
with:
runners: lab-0-tests
Je note que les actions utilisées actuellement n'ont pas été archivées:
J'ai également créé un issue pour montrer un cas concret avec de multiples tests qui ne fonctionne pas comme on voudrait dans node.
Il y a un script que CoPilot m'a généré qui peut créer un Custom YAML à partir de tous les fichiers jest dans un projet. Même avec ça, ce n'est pas parfait, car un fichier test peut faire plusieurs it()
ou describe()
et le tout est agrégé dans un seul test (pass/fail). C'est mieux que npm test
par contre.
Auto Correction
En tant que chargé de laboratoire, j'ai besoin que GitHub Classroom puisse corriger les laboratoire automatiquement afin que je puisse noter ceux-ci justement.
Github Action
Pour ce faire je propose d'utiliser la fonction de "Grading and Feedback" de GH Classroom afin de séparer les différent point d'évaluation (exemple ne pas avoir le test pour vérifier le test de parasites-mollassons et les test pour vérifier le classement ne devrait pas être dans le même test)
Jest
Afin d'arriver à notre but avec le gradins et Feedback il va donc falloir séparer les test fait dans le template des test que l'étudiant va rajouter
Exemples:
Ceci permettrais d'avoir un calcul plus détaillé de la note d'un élève directement dans GH classroom. Afin de s'assurer que l'élève ne modifie pas les test de autograding il suffit de protéger tout les fichier dans le dossier AutoGrading