This commit is contained in:
Gilles Soulier
2026-01-05 16:08:01 +01:00
parent dcba044cd6
commit c67befc549
2215 changed files with 26743 additions and 329 deletions

293
docs/QUICKTEST.md Executable file
View File

@@ -0,0 +1,293 @@
# Quick Test Guide - Linux BenchTools v1.1.0
Guide rapide pour tester les nouvelles fonctionnalités après la mise à jour.
---
## 🚀 Démarrage Rapide
```bash
cd /home/gilles/Documents/vscode/serv_benchmark
# Rebuild et redémarrer
docker compose build backend
docker compose up -d
# Vérifier les logs
docker logs linux_benchtools_backend --tail 20
docker logs linux_benchtools_frontend --tail 20
```
---
## ✅ Tests Backend (v1.0.1)
### Test 1 : Health Check
```bash
curl http://localhost:8007/api/health
# Attendu: {"status":"ok"}
```
### Test 2 : Stats Endpoint (Fix session DB)
```bash
curl http://localhost:8007/api/stats | jq
# Attendu: JSON avec total_devices, total_benchmarks, avg_global_score
```
### Test 3 : Devices Endpoint
```bash
curl http://localhost:8007/api/devices?page_size=10 | jq
# Attendu: JSON avec items[], total, page, page_size
```
### Test 4 : Validation des Scores
```bash
# Test avec un score invalide (devrait être rejeté)
curl -X POST http://localhost:8007/api/benchmark \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"device_identifier": "test",
"bench_script_version": "1.0",
"hardware": {...},
"results": {
"global_score": 150 # ❌ Invalide (>100)
}
}'
# Attendu: Erreur 422 Unprocessable Entity
```
---
## ✅ Tests Frontend (v1.1.0)
### Test 1 : Vérifier les Nouveaux Éléments HTML
```bash
# Vérifier la barre de recherche
curl -s http://localhost:8087/ | grep "searchInput"
# Attendu: Ligne avec id="searchInput"
# Vérifier le bouton actualiser
curl -s http://localhost:8087/ | grep "refreshBtn"
# Attendu: Ligne avec id="refreshBtn"
# Vérifier l'horodatage
curl -s http://localhost:8087/ | grep "lastUpdate"
# Attendu: Ligne avec id="lastUpdate"
```
### Test 2 : Vérifier les Fichiers JS/CSS
```bash
# Vérifier que dashboard.js contient la fonction de recherche
curl -s http://localhost:8087/js/dashboard.js | grep "filterDevices"
# Attendu: Fonction filterDevices présente
# Vérifier que components.css contient les skeleton loaders
curl -s http://localhost:8087/css/components.css | grep "skeleton"
# Attendu: Classes skeleton présentes
```
---
## 🌐 Tests Manuels dans le Navigateur
### Test 1 : Recherche en Temps Réel
1. Ouvrir http://localhost:8087/
2. Dans la barre de recherche, taper "lenovo"
3. ✅ Vérifier que seuls les devices avec "lenovo" s'affichent
4. Effacer le texte
5. ✅ Vérifier que tous les devices réapparaissent
6. Cliquer sur "Effacer"
7. ✅ Vérifier que le champ est vidé
### Test 2 : Bouton Actualiser
1. Ouvrir http://localhost:8087/
2. Noter l'horodatage affiché (ex: "Mis à jour: 18:45:32")
3. Cliquer sur "🔄 Actualiser"
4. ✅ Vérifier que le bouton affiche "⏳ Chargement..."
5. ✅ Vérifier que le bouton est désactivé (grisé)
6. Attendre la fin du chargement
7. ✅ Vérifier que le bouton redevient "🔄 Actualiser"
8. ✅ Vérifier que l'horodatage a changé
### Test 3 : Gestion d'Erreurs avec Retry
1. Arrêter le backend : `docker compose stop backend`
2. Ouvrir http://localhost:8087/
3. Cliquer sur "🔄 Actualiser"
4. ✅ Vérifier qu'un message d'erreur s'affiche
5. ✅ Vérifier le message : "Impossible de se connecter au serveur backend..."
6. ✅ Vérifier qu'un bouton "🔄 Réessayer" est présent
7. Redémarrer le backend : `docker compose start backend`
8. Attendre 5 secondes (démarrage)
9. Cliquer sur "🔄 Réessayer"
10. ✅ Vérifier que les données se chargent normalement
### Test 4 : Protection Anti-Spam
1. Ouvrir http://localhost:8087/
2. Ouvrir la console du navigateur (F12)
3. Aller dans l'onglet "Network"
4. Cliquer rapidement 10 fois sur "🔄 Actualiser"
5. ✅ Vérifier qu'une seule requête `/api/devices` apparaît
6. ✅ Vérifier que le bouton reste désactivé pendant le chargement
### Test 5 : Auto-Refresh (30 secondes)
1. Ouvrir http://localhost:8087/
2. Noter l'horodatage (ex: "Mis à jour: 18:45:32")
3. Attendre 30 secondes sans toucher à rien
4. ✅ Vérifier que l'horodatage se met à jour automatiquement
5. Ouvrir l'onglet Network (F12)
6. ✅ Vérifier qu'une requête `/api/devices` apparaît toutes les 30 secondes
### Test 6 : Responsive Design (Optionnel)
1. Ouvrir http://localhost:8087/
2. Redimensionner la fenêtre du navigateur
3. ✅ Vérifier que les cartes stats s'adaptent (grid responsive)
4. ✅ Vérifier que la toolbar reste utilisable
5. Tester sur mobile (F12 → Toggle device toolbar)
6. ✅ Vérifier que tout est accessible
---
## 🧪 Tests avec Données Réelles
### Test 1 : Exécuter un Benchmark
```bash
# Sur une machine Linux (ou la machine hôte)
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
--server http://localhost:8007/api/benchmark \
--token "YOUR_TOKEN_FROM_ENV" \
--device "test-machine"
```
### Test 2 : Vérifier dans le Dashboard
1. Ouvrir http://localhost:8087/
2. ✅ Vérifier que "Total Devices" s'incrémente
3. ✅ Vérifier que "Total Benchmarks" s'incrémente
4. ✅ Vérifier que la nouvelle machine apparaît dans le tableau
5. Rechercher la machine par son nom
6. ✅ Vérifier qu'elle apparaît dans les résultats
### Test 3 : Modifier un Device
1. Aller sur http://localhost:8087/devices.html
2. Cliquer sur un device
3. Modifier la description
4. Sauvegarder
5. Vérifier dans les logs backend :
```bash
docker logs linux_benchtools_backend --tail 50
```
6. ✅ Vérifier qu'une requête PUT /api/devices/{id} apparaît
7. Retourner au dashboard
8. ✅ Vérifier que le timestamp `updated_at` a bien changé (Fix Bug #1)
---
## 📊 Tests de Performance
### Test 1 : Temps de Chargement Initial
```bash
# Mesurer le temps de chargement de la page
curl -o /dev/null -s -w 'Total: %{time_total}s\n' http://localhost:8087/
# Attendu: < 1 seconde
```
### Test 2 : Temps de Réponse API
```bash
# Stats endpoint
time curl -s http://localhost:8007/api/stats > /dev/null
# Attendu: < 200ms
# Devices endpoint
time curl -s http://localhost:8007/api/devices?page_size=50 > /dev/null
# Attendu: < 500ms
```
### Test 3 : Recherche avec Beaucoup de Devices
1. Insérer 100+ devices dans la base (script de test)
2. Ouvrir http://localhost:8087/
3. Taper dans la barre de recherche
4. ✅ Vérifier que le filtrage est instantané (< 100ms ressenti)
5. ✅ Vérifier qu'il n'y a pas de lag
---
## 🐛 Tests de Régression
### Test 1 : Fonctionnalités Existantes
- [ ] Dashboard affiche les stats correctement
- [ ] Tableau des devices affiche tous les devices
- [ ] Scores sont affichés avec les bonnes couleurs
- [ ] Navigation entre pages fonctionne
- [ ] Liens "Voir" dans le tableau fonctionnent
- [ ] Page device_detail fonctionne
### Test 2 : Style Monokai
- [ ] Thème sombre est appliqué
- [ ] Couleurs sont cohérentes
- [ ] Badges de scores ont les bonnes couleurs
- [ ] Pas de régression visuelle
---
## ✅ Checklist Finale
### Backend
- [ ] `/api/health` fonctionne
- [ ] `/api/stats` fonctionne (Fix Bug #2)
- [ ] `/api/devices` fonctionne
- [ ] Validation des scores rejette les valeurs invalides (Fix Bug #4)
- [ ] Timestamp `updated_at` se met à jour (Fix Bug #1)
- [ ] Aucune erreur dans les logs backend
### Frontend
- [ ] Barre de recherche présente et fonctionne
- [ ] Bouton "🔄 Actualiser" présent et fonctionne
- [ ] Horodatage s'affiche et se met à jour
- [ ] Bouton "Effacer" fonctionne
- [ ] Erreurs affichent un bouton "🔄 Réessayer" (Fix Bug #3)
- [ ] Protection anti-spam fonctionne
- [ ] Auto-refresh fonctionne (30s)
- [ ] Aucune erreur dans la console du navigateur
### Documentation
- [ ] CHANGELOG_2025-12-13.md créé
- [ ] BUGFIXES_2025-12-13.md créé
- [ ] FRONTEND_IMPROVEMENTS_2025-12-13.md créé
- [ ] QUICKTEST.md créé (ce fichier)
---
## 🎉 Validation Finale
Si tous les tests ci-dessus passent :
```bash
echo "✅ Linux BenchTools v1.1.0 - PRODUCTION READY"
```
Si des tests échouent :
```bash
echo "❌ Des problèmes ont été détectés. Vérifier les logs."
docker logs linux_benchtools_backend --tail 100
docker logs linux_benchtools_frontend --tail 100
```
---
## 📞 Support
En cas de problème :
1. Vérifier les logs : `docker logs linux_benchtools_backend --tail 100`
2. Vérifier la console du navigateur (F12)
3. Consulter la documentation :
- [BUGFIXES_2025-12-13.md](BUGFIXES_2025-12-13.md)
- [FRONTEND_IMPROVEMENTS_2025-12-13.md](FRONTEND_IMPROVEMENTS_2025-12-13.md)
- [README.md](README.md)
---
**Version testée** : 1.1.0
**Date** : 13 décembre 2025
**Status** : ✅ Prêt pour tests