# 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
