Compétence de Test E2E
Déclencheur
- Mots-clés :
teste,e2e,playwright,test navigateur,test visuel,smoke test - Appel :
/e2e-test [suite] [--flags]
Description
Test E2E automatisé avec comportement humain pour les environnements de prévisualisation et de production. Utilise Chrome MCP ou Playwright MCP pour l'automatisation du navigateur.
Suites de Test
| Suite | Durée | Description |
|---|---|---|
smoke | 30s | Connexion, Upload, UI de base (par défaut avec teste) |
full | 5min | Tous les scénarios P0+P1 |
visual | 2min | Uniquement les comparaisons de captures d'écran |
upload | 1min | Tous les formats de fichiers |
download | 2min | Fonctions d'export |
login | 30s | Flux d'authentification |
api | 1min | Tests des points d'accès API |
Flags
| Flag | Description |
|---|---|
--preview | Tester uniquement localhost |
--production | Tester uniquement l'URL de production |
--quick | Uniquement les scénarios P0 (test le plus rapide) |
--human | Chrome MCP avec vrai navigateur |
--headless | Playwright MCP headless (CI/CD) |
--update-baselines | Mettre à jour les baselines de captures d'écran |
--mobile | Tester les viewports mobiles (375px, 768px) |
Workflow
1. VÉRIFICATION DE L'ENVIRONNEMENT
- Vérifier si localhost est en cours d'exécution (curl/fetch)
- Vérifier si l'URL de production est accessible
- Choisir l'environnement de test en fonction des flags
2. CONFIGURATION DU NAVIGATEUR
- Si --human : utiliser Chrome MCP (mcp__claude-in-chrome__)
- Sinon : utiliser Playwright MCP (mcp__playwright__)
- Viewport : 1280x720 (Desktop) ou 375x667 (Mobile)
3. ACTIVER LE COMPORTEMENT HUMAIN
- Délais aléatoires : 200-800ms entre les actions
- Vitesse de frappe : 50-150ms par touche
- Survole avant clic (pause de 200-500ms)
- Défilement fluide plutôt qu'instantané
4. EXÉCUTER LA SUITE DE TEST
- Pour chaque test : capture d'écran avant/après
- En cas d'erreur : sauvegarder la capture d'écran et les logs de la console
- Vérification du téléchargement : vérifier la taille du fichier
5. GÉNÉRER LE RAPPORT
- Rapport Markdown dans .playwright-mcp/reports/
- Images de différences pour les écarts visuels
- Résumé avec statut Pass/Fail/Flaky
Scénarios de Test (P0 - Critique pour l'entreprise)
1. Chargement de la Page d'Accueil
- Naviguer vers l'URL
- Attendre que l'élément principal soit visible
- Vérifier que le logo/la marque est visible
- Capture d'écran : landing-page.png
2. Flux de Connexion/Authentification
- Cliquer sur le bouton de connexion
- Attendre l'animation de la modale/de la page
- Vérifier que les options d'authentification sont visibles (OAuth, Email, etc.)
- Capture d'écran : login-modal.png
3. Changer de Langue (si i18n)
- Trouver le sélecteur de langue
- Cliquer avec délai humain
- Attendre le changement de texte
- Vérifier que les textes de l'interface ont changé
- Capture d'écran : language-toggle.png
4. Téléchargement de Fichier (si présent)
- Cliquer sur la zone de téléchargement
- Sélectionner un fichier de test
- Attendre la confirmation
- Vérifier que le nom du fichier est affiché
- Capture d'écran : file-uploaded.png
5. Exécuter l'Action Principale
- Exécuter la fonction principale de l'application
- Attendre l'état de chargement
- Attendre le résultat (max 60s)
- Vérifier que le contenu du résultat est présent
- Capture d'écran : result.png
6. Export/Téléchargement (si présent)
- Cliquer sur le bouton de téléchargement
- Attendre l'événement de téléchargement
- Vérifier que le format du fichier est correct
- Vérifier que la taille du fichier est > au minimum
- Capture d'écran : download-complete.png
Scénarios de Test (P1 - Important)
7. Navigation/Historique
- Cliquer sur un élément de navigation
- Attendre l'animation
- Vérifier que le contenu correct est chargé
8. Activation/Désactivation du Thème (si présent)
- Trouver le bouton de changement de thème
- Noter les couleurs actuelles
- Cliquer sur le bouton
- Vérifier que les couleurs ont changé
- Capture d'écran : theme-toggle.png
9. Design Responsive
- Définir la viewport sur 375x667
- Vérifier que la navigation mobile est visible
- Vérifier que les fonctions principales sont accessibles
- Capture d'écran : mobile-view.png
10. Gestion des Erreurs
- Provoquer une erreur (saisie invalide)
- Attendre le message d'erreur
- Vérifier que l'erreur est conviviale
- Capture d'écran : error-state.png
Fonctions de Comportement Humain
// Délai aléatoire (200-800ms)
async function humanDelay() {
const delay = 200 + Math.random() * 600;
await page.waitForTimeout(delay);
}
// Frappe humaine (50-150ms par touche)
async function humanType(selector: string, text: string) {
await page.click(selector);
await humanDelay();
for (const char of text) {
await page.keyboard.type(char);
await page.waitForTimeout(50 + Math.random() * 100);
}
}
// Motif survol -> pause -> clic
async function humanClick(selector: string) {
await page.hover(selector);
await page.waitForTimeout(200 + Math.random() * 300);
await page.click(selector);
await humanDelay();
}
// Défilement fluide
async function humanScroll(pixels: number) {
await page.evaluate((px) => {
window.scrollTo({ top: px, behavior: "smooth" });
}, pixels);
await page.waitForTimeout(500);
}
Format du Rapport
## Rapport de Test E2E - [DATE] [HEURE]
### Environnement
- **URL** : [URL testée]
- **Navigateur** : Chromium [version]
- **Viewport** : 1280x720
- **Suite** : smoke
### Résultats
| # | Test | Statut | Durée | Capture d'écran |
| --- | -------------------- | ------- | ----- | ----------------------------- |
| 1 | Chargement Page d'Accueil | PASS | 0.8s | [voir](landing-page.png) |
| 2 | Modale de Connexion | PASS | 1.2s | [voir](login-modal.png) |
| 3 | Téléchargement Fichier | PASS | 2.1s | [voir](file-uploaded.png) |
| 4 | Action Principale | SLOW | 45.2s | [voir](result.png) |
| 5 | Téléchargement | FAIL | 3.4s | [voir](error.png) |
### Résumé
- **Total** : N Tests
- **Réussis** : X (Y%)
- **Échoués** : A (B%)
- **Lents/Instables** : C (D%)
- **Durée** : Zs
Baselines Visuelles
.playwright-mcp/
├── baselines/ # Référence dorée (suivi git)
│ ├── landing-page-desktop.png
│ ├── landing-page-mobile.png
│ ├── login-modal.png
│ ├── result.png
│ └── error-state.png
├── current/ # Captures d'écran actuelles (ignoré par git)
├── diffs/ # Différences de pixels (ignoré par git)
└── reports/ # Rapports de test (ignoré par git)
Exécution
Appel le Plus Simple
Utilisateur : "teste"
-> Exécute la suite smoke sur l'environnement disponible
Tests Spécifiques
Utilisateur : "teste upload"
-> Exécute uniquement la suite de téléchargement
Utilisateur : "teste production visual"
-> Exécute la suite visuelle sur la production
Utilisateur : "teste --quick --human"
-> Test rapide avec un vrai navigateur Chrome
Intégration CI/CD
Utilisateur : "teste --headless --full"
-> Tous les tests en mode headless pour la pipeline
Gestion des Erreurs
-
Localhost inaccessible :
- Afficher un avertissement
- Demander si le serveur de développement doit être démarré
-
Production inaccessible :
- Afficher un avertissement
- Vérifier le statut du déploiement
-
Délai d'attente du test (>60s) :
- Capture d'écran de l'état actuel
- Sauvegarder les logs de la console
- Marquer comme ÉCHEC
-
Différence visuelle détectée :
- Générer une image de différence
- Marquer comme INSTABLE (pas automatiquement ÉCHEC)
- L'utilisateur décide si une mise à jour de la baseline est nécessaire
Configuration
.e2e-config.json optionnel à la racine du projet :
{
"previewUrl": "http://localhost:5173",
"productionUrl": "https://your-app.com",
"defaultSuite": "smoke",
"timeouts": {
"navigation": 10000,
"action": 60000,
"download": 30000
},
"viewports": {
"desktop": { "width": 1280, "height": 720 },
"tablet": { "width": 768, "height": 1024 },
"mobile": { "width": 375, "height": 667 }
},
"humanBehavior": {
"enabled": true,
"minDelay": 200,
"maxDelay": 800,
"typingSpeed": { "min": 50, "max": 150 }
},
"screenshots": {
"onEveryStep": false,
"onFailure": true,
"fullPage": false
}
}
Prérequis
- Chrome MCP ou Playwright MCP installé
- Projet Node.js avec
package.json - Optionnel :
.e2e-config.jsonpour la configuration du projet
Auteur
Dresden AI Insights - https://dresdenaiinsights.com