# Tests Frontend - Filtrage des Playbooks ## Guide de Test Manuel ### Prérequis 1. L'API backend doit être démarrée 2. L'interface web doit être accessible 3. Au moins un hôte dans `role_proxmox` et un hôte hors de ce groupe --- ## Test 1 : Filtrage pour Hôte Non-Proxmox ### Objectif Vérifier que `backup-proxmox-config` n'apparaît PAS pour un hôte hors du groupe `role_proxmox` ### Étapes 1. Ouvrir l'interface web 2. Aller dans la section "Hôtes" 3. Localiser un hôte qui n'est PAS dans `role_proxmox` (ex: `raspi.4gb.home`) 4. Cliquer sur le bouton **"Playbook"** pour cet hôte 5. Observer la liste des playbooks ### Résultat Attendu - ✅ Message affiché : "Seuls les playbooks compatibles avec cet hôte sont affichés (X disponibles)" - ✅ La liste contient : `bootstrap-host`, `health-check`, `vm-upgrade`, `vm-reboot`, etc. - ❌ La liste NE contient PAS : `backup-proxmox-config` ### Capture d'Écran ![Test 1 - Avant](docs/test1_avant.png) → Devrait montrer backup-proxmox-config ![Test 1 - Après](docs/test1_apres.png) → Ne devrait PAS montrer backup-proxmox-config --- ## Test 2 : Filtrage pour Hôte Proxmox ### Objectif Vérifier que `backup-proxmox-config` APPARAÎT pour un hôte du groupe `role_proxmox` ### Étapes 1. Ouvrir l'interface web 2. Aller dans la section "Hôtes" 3. Localiser un hôte dans `role_proxmox` (ex: `ali2v.xeon.home`) 4. Cliquer sur le bouton **"Playbook"** pour cet hôte 5. Observer la liste des playbooks ### Résultat Attendu - ✅ Message affiché : "Seuls les playbooks compatibles avec cet hôte sont affichés (X disponibles)" - ✅ La liste contient : `backup-proxmox-config` - ✅ La liste contient aussi : `bootstrap-host`, `health-check`, etc. ### Vérification Supplémentaire - Le nombre de playbooks disponibles devrait être SUPÉRIEUR au Test 1 --- ## Test 3 : Filtrage pour Groupe Non-Proxmox ### Objectif Vérifier que `backup-proxmox-config` n'apparaît PAS pour un groupe autre que `role_proxmox` ### Étapes 1. Ouvrir l'interface web 2. Aller dans la section "Groupes" 3. Sélectionner un groupe autre que `role_proxmox` (ex: `env_lab`) 4. Cliquer sur le bouton **"Playbook"** pour ce groupe 5. Observer la liste des playbooks par catégorie ### Résultat Attendu - ✅ Message affiché : "Seuls les playbooks compatibles avec ce groupe sont affichés (X disponibles)" - ✅ Catégorie "BACKUP" : NE contient PAS `backup-proxmox-config` - ✅ Catégorie "MAINTENANCE" : Contient les playbooks universels - ✅ Catégorie "MONITORING" : Contient `health-check` --- ## Test 4 : Filtrage pour Groupe Proxmox ### Objectif Vérifier que `backup-proxmox-config` APPARAÎT pour le groupe `role_proxmox` ### Étapes 1. Ouvrir l'interface web 2. Aller dans la section "Groupes" 3. Sélectionner le groupe `role_proxmox` 4. Cliquer sur le bouton **"Playbook"** pour ce groupe 5. Observer la liste des playbooks par catégorie ### Résultat Attendu - ✅ Message affiché : "Seuls les playbooks compatibles avec ce groupe sont affichés (X disponibles)" - ✅ Catégorie "BACKUP" : CONTIENT `backup-proxmox-config` - ✅ Toutes les autres catégories : Contiennent les playbooks universels --- ## Test 5 : Compteur de Playbooks ### Objectif Vérifier que le compteur affiche le bon nombre de playbooks ### Étapes 1. Pour chaque test ci-dessus, noter le nombre affiché dans le message 2. Compter manuellement les playbooks dans la liste 3. Comparer les deux nombres ### Résultat Attendu - ✅ Le nombre affiché correspond au nombre de playbooks dans la liste - ✅ Le pluriel est correct ("1 disponible" vs "X disponibles") --- ## Test 6 : Tentative d'Exécution Incompatible (Protection Backend) ### Objectif Vérifier que même si on contourne le frontend, le backend bloque l'exécution ### Étapes 1. Ouvrir la console développeur du navigateur (F12) 2. Exécuter cette commande JavaScript : ```javascript fetch('/api/ansible/execute', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'votre-api-key' }, body: JSON.stringify({ playbook: 'backup-proxmox-config.yml', target: 'raspi.4gb.home' }) }) .then(r => r.json()) .then(console.log) ``` ### Résultat Attendu - ✅ Réponse HTTP 400 (Bad Request) - ✅ Message d'erreur : ```json { "detail": "Le playbook 'backup-proxmox-config.yml' (hosts: role_proxmox) n'est pas compatible avec la cible 'raspi.4gb.home'. Ce playbook ne peut être exécuté que sur: role_proxmox" } ``` --- ## Test 7 : Vérification API Directe ### Objectif Vérifier que l'API retourne bien les playbooks filtrés ### Étapes 1. Ouvrir un terminal 2. Exécuter ces commandes curl : ```bash # Test 1 : Playbooks pour raspi.4gb.home curl -H "X-API-Key: votre-key" \ "http://localhost:8000/api/ansible/playbooks?target=raspi.4gb.home" # Test 2 : Playbooks pour ali2v.xeon.home curl -H "X-API-Key: votre-key" \ "http://localhost:8000/api/ansible/playbooks?target=ali2v.xeon.home" # Test 3 : Playbooks pour role_proxmox curl -H "X-API-Key: votre-key" \ "http://localhost:8000/api/ansible/playbooks?target=role_proxmox" # Test 4 : Playbooks pour env_lab curl -H "X-API-Key: votre-key" \ "http://localhost:8000/api/ansible/playbooks?target=env_lab" ``` ### Résultat Attendu **Test 1 (raspi.4gb.home) :** ```json { "playbooks": [ {"name": "bootstrap-host", "hosts": "all", ...}, {"name": "health-check", "hosts": "all", ...}, {"name": "vm-upgrade", "hosts": "all", ...} // PAS de backup-proxmox-config ], "filter": "raspi.4gb.home" } ``` **Test 2 (ali2v.xeon.home) :** ```json { "playbooks": [ {"name": "backup-proxmox-config", "hosts": "role_proxmox", ...}, {"name": "bootstrap-host", "hosts": "all", ...}, {"name": "health-check", "hosts": "all", ...} // backup-proxmox-config EST présent ], "filter": "ali2v.xeon.home" } ``` **Test 3 (role_proxmox) :** ```json { "playbooks": [ {"name": "backup-proxmox-config", "hosts": "role_proxmox", ...}, // + tous les playbooks avec hosts: all ], "filter": "role_proxmox" } ``` **Test 4 (env_lab) :** ```json { "playbooks": [ // Seulement les playbooks avec hosts: all // PAS de backup-proxmox-config ], "filter": "env_lab" } ``` --- ## Test 8 : Gestion d'Erreur ### Objectif Vérifier que l'interface gère correctement les erreurs ### Étapes 1. Arrêter temporairement l'API backend 2. Dans l'interface, cliquer sur "Playbook" pour un hôte 3. Observer le comportement ### Résultat Attendu - ✅ Message d'erreur affiché : "Erreur chargement playbooks: [message]" - ✅ La modale ne s'ouvre pas ou affiche un message d'erreur - ✅ Pas de crash de l'interface --- ## Checklist Complète ### Interface Utilisateur - [ ] Message informatif affiché dans la modale (hôte) - [ ] Message informatif affiché dans la modale (groupe) - [ ] Compteur de playbooks correct - [ ] Pluriel correct ("disponible" vs "disponibles") - [ ] Icônes affichées correctement ### Filtrage Fonctionnel - [ ] Hôte non-Proxmox : backup-proxmox-config absent - [ ] Hôte Proxmox : backup-proxmox-config présent - [ ] Groupe non-Proxmox : backup-proxmox-config absent - [ ] Groupe Proxmox : backup-proxmox-config présent - [ ] Groupe "all" : tous les playbooks présents ### Protection Backend - [ ] Exécution incompatible bloquée (HTTP 400) - [ ] Message d'erreur explicite - [ ] API retourne les bons playbooks filtrés ### Robustesse - [ ] Gestion d'erreur si API indisponible - [ ] Encodage URL correct pour noms spéciaux - [ ] Pas de crash si aucun playbook compatible --- ## Résultats Attendus Globaux | Cible | backup-proxmox-config | Autres Playbooks | |-------|----------------------|------------------| | `raspi.4gb.home` | ❌ Absent | ✅ Présents | | `ali2v.xeon.home` | ✅ Présent | ✅ Présents | | `role_proxmox` | ✅ Présent | ✅ Présents | | `env_lab` | ❌ Absent | ✅ Présents | | `all` | ❌ Absent | ✅ Présents | --- ## Rapport de Test ### Date : _____________ ### Testeur : _____________ | Test | Statut | Notes | |------|--------|-------| | Test 1 : Hôte Non-Proxmox | ⬜ Pass ⬜ Fail | | | Test 2 : Hôte Proxmox | ⬜ Pass ⬜ Fail | | | Test 3 : Groupe Non-Proxmox | ⬜ Pass ⬜ Fail | | | Test 4 : Groupe Proxmox | ⬜ Pass ⬜ Fail | | | Test 5 : Compteur | ⬜ Pass ⬜ Fail | | | Test 6 : Protection Backend | ⬜ Pass ⬜ Fail | | | Test 7 : API Directe | ⬜ Pass ⬜ Fail | | | Test 8 : Gestion d'Erreur | ⬜ Pass ⬜ Fail | | ### Conclusion ⬜ Tous les tests passent - Implémentation validée ⬜ Certains tests échouent - Corrections nécessaires ### Problèmes Rencontrés _____________________________________________ _____________________________________________ _____________________________________________