đ„ Guide des Tests E2E avec Documentation VidĂ©oï
KoproGo utilise Playwright pour les tests End-to-End qui génÚrent automatiquement des vidéos de documentation vivante !
đŻ Quâest-ce que câest ?ï
Les tests E2E testent toute la stack :
â Frontend (Astro + Svelte)
â Backend (Rust + Actix-web)
â Base de donnĂ©es (PostgreSQL)
â API REST
â PWA + Mode Offline
Chaque test gĂ©nĂšre une vidĂ©o qui montre exactement comment lâapplication fonctionne !
đ DĂ©marrage Rapideï
1. Installation (une seule fois)ï
cd frontend
npm install
npm run test:install # Installe Playwright + Chromium
2. DĂ©marrer les Servicesï
Terminal 1 - Backend:
cd backend
docker-compose up -d postgres # Si pas déjà démarré
cargo run
Terminal 2 - Frontend (optionnel si test:e2e démarre déjà le serveur):
cd frontend
npm run dev
3. Lancer les Testsï
cd frontend
npm run test:e2e # Exécute tous les tests + génÚre les vidéos
4. Voir les VidĂ©os ! đŹï
npm run test:e2e:report # Ouvre le rapport HTML avec vidéos intégrées
đč VidĂ©os GĂ©nĂ©rĂ©esï
AprÚs chaque exécution, vous trouverez les vidéos dans :
frontend/test-results/
âââ auth-Authentication-Flow-should-login-successfully-chromium/
â âââ video.webm â VidĂ©o du parcours de login
âââ pwa-offline-PWA-Capabilities-should-work-offline-chromium/
â âââ video.webm â VidĂ©o du mode offline
âââ dashboards-Syndic-Dashboard-chromium/
âââ video.webm â VidĂ©o du dashboard
đŹ Commandes Disponiblesï
# Mode Headless (CI/CD) - GénÚre les vidéos
npm run test:e2e
# Mode UI - Interface graphique interactive
npm run test:e2e:ui
# Mode Headed - Voir le navigateur en action
npm run test:e2e:headed
# Mode Debug - Debug pas Ă pas
npm run test:e2e:debug
# Voir le rapport avec vidéos
npm run test:e2e:report
đ Tests Disponiblesï
1. Tests dâAuthentification (auth.spec.ts)ï
npx playwright test auth.spec.ts
Ce qui est testé :
â Page de login accessible
â Login avec appel API backend rĂ©el
â Redirection vers dashboard selon le rĂŽle
â Gestion dâerreurs (mauvais password)
â Persistance de session (localStorage + IndexedDB)
â Logout complet
â CrĂ©ation de comptes pour chaque rĂŽle
VidĂ©o gĂ©nĂ©rĂ©e : Parcours complet dâun utilisateur qui se connecte.
2. Tests des Dashboards (dashboards.spec.ts)ï
npx playwright test dashboards.spec.ts
Ce qui est testé :
â Dashboard Syndic (gestion immeubles)
â Dashboard Comptable (finances)
â Dashboard CopropriĂ©taire (infos personnelles)
â Dashboard SuperAdmin (vue plateforme)
â Navigation entre sections
â Permissions par rĂŽle
VidĂ©os gĂ©nĂ©rĂ©es : Un parcours pour chaque type dâutilisateur.
3. Tests PWA et Offline (pwa-offline.spec.ts)ï
npx playwright test pwa-offline.spec.ts
Ce qui est testé :
â Manifest.json valide
â Service Worker enregistrĂ©
â Indicateur online/offline
â IndexedDB utilisĂ©
â Mode offline fonctionnel
â Queue de synchronisation
Vidéos générées : Démonstration du mode offline.
đ Cas dâUsage des VidĂ©osï
1. Documentation dâĂquipeï
# Générer les vidéos
npm run test:e2e
# Partager le rapport
npm run test:e2e:report
# Envoyer le lien dans Slack/Teams
2. Onboarding DĂ©veloppeursï
Les vidĂ©os montrent exactement comment lâapplication fonctionne :
Parcours utilisateur complet
Interactions frontend-backend
Mode offline en action
3. PrĂ©sentation Client/Stakeholdersï
# Exécuter les tests en mode headed pour montrer en direct
npm run test:e2e:headed
# Ou partager les vidéos du dernier run
npm run test:e2e:report
4. Debuggingï
Si un test Ă©choue, la vidĂ©o montre exactement ce qui sâest passĂ© :
npm run test:e2e:report
# Cliquer sur le test qui a échoué
# Voir la vidéo + screenshots + traces
đ§ Configurationï
Modifier la qualitĂ© vidĂ©oï
Dans frontend/playwright.config.ts :
video: {
mode: 'on', // Toujours enregistrer
size: { width: 1920, height: 1080 } // HD
}
Garder les vidĂ©os mĂȘme en cas de succĂšsï
Par défaut, toutes les vidéos sont gardées (mode: 'on') pour la documentation.
Pour Ă©conomiser lâespace :
video: {
mode: 'retain-on-failure' // Seulement en cas d'échec
}
đ€ CI/CD avec GitHub Actionsï
Le workflow .github/workflows/e2e-tests.yml :
â Lance le backend + PostgreSQL
â ExĂ©cute tous les tests E2E
â GĂ©nĂšre les vidĂ©os
đŠ Sauvegarde les vidĂ©os comme artifacts GitHub
đŹ Commente la PR avec lien vers les vidĂ©os
Voir les vidĂ©os dans GitHub Actionsï
Aller dans Actions tab
Sélectionner le workflow run
Descendre vers Artifacts
Télécharger
test-videos-XXX.zip
Les vidéos sont gardées 30 jours !
đ Rapport HTML Interactifï
Le rapport HTML contient :
playwright-report/
âââ index.html â Page principale
âââ data/ â DonnĂ©es des tests
âââ trace/ â Traces Playwright
Contenu du rapport :
đ„ VidĂ©os de chaque test (embedded)
đž Screenshots Ă chaque Ă©tape
đ Logs de console
â±ïž Timeline dâexĂ©cution
đ Traces interactives
npm run test:e2e:report # Ouvre dans le navigateur
đš Ăcrire de Nouveaux Testsï
Template de Baseï
import { test, expect } from '@playwright/test';
test('Mon nouveau test', async ({ page }) => {
// Se connecter (si besoin)
await page.goto('/login');
await page.fill('input[type="email"]', 'test@test.com');
await page.fill('input[type="password"]', 'test123');
await page.click('button[type="submit"]');
// Tester ma fonctionnalité
await page.click('text=Ma Fonctionnalité');
await expect(page.locator('text=SuccĂšs')).toBeVisible();
});
Test avec CrĂ©ation dâUtilisateurï
test('Mon test avec nouvel utilisateur', async ({ page }) => {
// Créer un utilisateur via l'API
const response = await page.request.post('http://127.0.0.1:8080/api/v1/auth/register', {
data: {
email: `user-${Date.now()}@test.com`,
password: 'test123',
first_name: 'Test',
last_name: 'User',
role: 'syndic'
}
});
const { user } = await response.json();
// Login avec ce compte
await page.goto('/login');
await page.fill('input[type="email"]', user.email);
await page.fill('input[type="password"]', 'test123');
await page.click('button[type="submit"]');
// Faire quelque chose...
});
La vidĂ©o sera automatiquement gĂ©nĂ©rĂ©e ! đ„
đ ProblĂšmes Courantsï
Backend pas dĂ©marrĂ©ï
Erreur :
Error: connect ECONNREFUSED 127.0.0.1:8080
Solution :
cd backend
cargo run
Base de donnĂ©es pas migrĂ©eï
Erreur :
relation "users" does not exist
Solution :
cd backend
sqlx migrate run
Timeout des testsï
Erreur :
Timeout 30000ms exceeded
Solution :
Augmenter le timeout dans playwright.config.ts :
use: {
navigationTimeout: 60000, // 60 secondes
}
Service Worker pas enregistrĂ©ï
Solution : Vérifier que le serveur de dev est démarré et que la PWA est bien configurée.
đ Ressourcesï
GĂ©nĂ©rer des Tests Automatiquementï
npx playwright codegen http://localhost:3000
Cela ouvre un navigateur et enregistre vos actions en code Playwright !
âš Workflow RecommandĂ©ï
DĂ©veloppement dâune Nouvelle FonctionnalitĂ©ï
Développer la fonctionnalité (frontend + backend)
Ăcrire un test E2E qui la valide :
# Créer le fichier de test touch tests/e2e/ma-feature.spec.ts
Exécuter le test en mode UI pour le développer :
npm run test:e2e:ui
Générer la vidéo finale :
npm run test:e2e
Partager la vidĂ©o avec lâĂ©quipe/client :
npm run test:e2e:report
Pull Requestï
Les tests sâexĂ©cutent automatiquement via GitHub Actions
Les vidéos sont uploadées comme artifacts
Le bot commente la PR avec le lien vers les vidéos
Reviewer peut voir exactement comment ça fonctionne ! đŹ
đ Câest Tout !ï
# Quick Start
cd frontend
npm run test:install # Installation (une fois)
cd ../backend && cargo run & # Démarrer le backend
cd ../frontend
npm run test:e2e # Lancer les tests
npm run test:e2e:report # Voir les vidéos !
Les vidĂ©os sont votre documentation vivante ! đ„âš
Elles montrent exactement comment lâapplication fonctionne, remplaçant des heures de documentation Ă©crite par des vidĂ©os claires et actualisĂ©es automatiquement.