feat: Permettre à l'élève de consulter ses notes et moyennes
Some checks failed
CI / Backend Tests (push) Has been cancelled
CI / Frontend Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Naming Conventions (push) Has been cancelled
CI / Build Check (push) Has been cancelled

L'élève avait accès à ses compétences mais pas à ses notes numériques.
Cette fonctionnalité lui donne une vue complète de sa progression scolaire
avec moyennes par matière, détail par évaluation, statistiques de classe,
et un mode "découverte" pour révéler ses notes à son rythme (FR14, FR15).

Les notes ne sont visibles qu'après publication par l'enseignant, ce qui
garantit que l'élève les découvre avant ses parents (délai 24h story 6.7).
This commit is contained in:
2026-04-05 16:04:26 +02:00
parent b7dc27f2a5
commit cf76314d0e
23 changed files with 2457 additions and 30 deletions

View File

@@ -397,12 +397,17 @@ test.describe('Parent Schedule Consultation (Story 4.4)', () => {
timeout: 20000
});
// Switch to week view
// Switch to week view (retry click if view doesn't switch — Svelte hydration race)
const weekButton = page.locator('.view-toggle button', { hasText: 'Semaine' });
await expect(weekButton).toBeVisible({ timeout: 10000 });
await weekButton.click();
// Week headers should show
await expect(page.getByText('Lun', { exact: true })).toBeVisible({ timeout: 15000 });
const lunHeader = page.getByText('Lun', { exact: true });
try {
await expect(lunHeader).toBeVisible({ timeout: 10000 });
} catch {
await weekButton.click();
await expect(lunHeader).toBeVisible({ timeout: 30000 });
}
await expect(page.getByText('Ven', { exact: true })).toBeVisible();
});
@@ -422,7 +427,7 @@ test.describe('Parent Schedule Consultation (Story 4.4)', () => {
// Navigate forward and wait for the new day to load
await page.getByLabel('Suivant').click();
// Wait for the day title to change, confirming navigation completed
await page.waitForTimeout(1500);
await page.waitForTimeout(3000);
// Navigate back to the original day
await page.getByLabel('Précédent').click();