# đŸ§Ș Guide de Test - Navigation Folders ## 🎯 Objectif Valider que la correction de la navigation dans les dossiers fonctionne correctement dans tous les scĂ©narios. ## 🚀 PrĂ©paration ### 1. DĂ©marrer le serveur de dĂ©veloppement ```bash cd c:\dev\git\web\ObsiViewer npm start ``` ### 2. Ouvrir la console du navigateur - **Chrome/Edge**: F12 → Onglet Console - **Firefox**: F12 → Onglet Console - Filtrer les logs: `[PaginatedNotesList]` ### 3. PrĂ©parer l'environnement de test - CrĂ©er plusieurs dossiers avec diffĂ©rents nombres de notes: - `test-empty` (0 notes) - `test-small` (5 notes) - `test-medium` (50 notes) - `test-large` (200 notes) - `test-deep/level1/level2` (sous-dossiers) ## 📋 ScĂ©narios de Test ### ✅ Test 1: Navigation Simple **Objectif**: VĂ©rifier que la sĂ©lection d'un dossier affiche les bonnes notes **Étapes**: 1. Ouvrir l'application 2. Cliquer sur le dossier `test-medium` (50 notes) 3. Observer la liste de notes **RĂ©sultat attendu**: - ✅ La liste affiche exactement 50 notes - ✅ Le compteur indique "50" en bas Ă  droite - ✅ Console log: `[PaginatedNotesList] Folder filter changed: { from: null, to: 'test-medium' }` - ✅ RequĂȘte HTTP: `GET /api/vault/metadata/paginated?folder=test-medium&limit=100` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 2: Navigation Rapide (Multiple Clics) **Objectif**: VĂ©rifier qu'il n'y a pas de "flicker" lors de changements rapides **Étapes**: 1. Cliquer sur `test-small` (5 notes) 2. **ImmĂ©diatement** cliquer sur `test-medium` (50 notes) 3. **ImmĂ©diatement** cliquer sur `test-large` (200 notes) **RĂ©sultat attendu**: - ✅ Pas de "flash" des notes du dossier prĂ©cĂ©dent - ✅ La liste finale affiche 200 notes de `test-large` - ✅ Pas d'erreur dans la console - ✅ Chaque clic dĂ©clenche un nouveau `setFolderFilter()` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 3: Dossier Vide **Objectif**: VĂ©rifier le comportement avec un dossier sans contenu **Étapes**: 1. Cliquer sur le dossier `test-empty` (0 notes) **RĂ©sultat attendu**: - ✅ Message "Aucune note trouvĂ©e" - ✅ Compteur indique "0" - ✅ Pas d'erreur dans la console - ✅ RequĂȘte HTTP: `GET /api/vault/metadata/paginated?folder=test-empty&limit=100` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 4: Dossiers Profonds **Objectif**: VĂ©rifier la navigation dans des sous-dossiers **Étapes**: 1. DĂ©velopper (expand) le dossier `test-deep` 2. DĂ©velopper le sous-dossier `level1` 3. Cliquer sur `level2` **RĂ©sultat attendu**: - ✅ Affiche uniquement les notes de `test-deep/level1/level2` - ✅ N'affiche PAS les notes des dossiers parents - ✅ Le chemin complet est envoyĂ© au serveur: `folder=test-deep/level1/level2` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 5: Combinaison Dossier + Recherche **Objectif**: VĂ©rifier que la recherche fonctionne dans un dossier filtrĂ© **Étapes**: 1. Cliquer sur `test-medium` (50 notes) 2. Saisir "test" dans la barre de recherche 3. Observer le rĂ©sultat 4. Effacer la recherche **RĂ©sultat attendu**: - ✅ AprĂšs saisie: Affiche uniquement les notes contenant "test" dans `test-medium` - ✅ Compteur mis Ă  jour (ex: "12") - ✅ AprĂšs effacement: Revient aux 50 notes - ✅ RequĂȘte HTTP inclut: `?folder=test-medium&search=test` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 6: Combinaison Dossier + Tag **Objectif**: VĂ©rifier l'interaction entre filtres de dossier et de tag **Étapes**: 1. Cliquer sur `test-medium` (50 notes) 2. Noter le nombre de notes affichĂ©es (ex: 50) 3. Cliquer sur un tag (ex: `#important`) 4. Observer le rĂ©sultat 5. Cliquer sur un autre dossier **RĂ©sultat attendu**: - ✅ AprĂšs tag: Affiche les notes de `test-medium` ayant le tag `#important` - ✅ AprĂšs changement dossier: Affiche les notes du nouveau dossier ayant le tag `#important` - ✅ RequĂȘte HTTP: `?folder=...&tag=important` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 7: Retour Ă  "Tout Afficher" **Objectif**: VĂ©rifier la rĂ©initialisation du filtre **Étapes**: 1. Cliquer sur un dossier (ex: `test-medium`) 2. Cliquer sur "✹ Tout" dans Quick Links **RĂ©sultat attendu**: - ✅ Affiche toutes les notes de tous les dossiers - ✅ Compteur affiche le total (ex: "1,234") - ✅ Console log: `[PaginatedNotesList] Folder filter changed: { from: 'test-medium', to: null }` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 8: Scroll Infini **Objectif**: VĂ©rifier la pagination avec un grand dossier **Étapes**: 1. Cliquer sur `test-large` (200 notes) 2. Scroller vers le bas de la liste 3. Observer le chargement automatique **RĂ©sultat attendu**: - ✅ Les premiĂšres 100 notes se chargent immĂ©diatement - ✅ En scrollant, les 100 notes suivantes se chargent automatiquement - ✅ Indicateur "Chargement..." visible pendant le chargement - ✅ RequĂȘte HTTP avec cursor: `?folder=test-large&cursor=100` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 9: RafraĂźchissement Page **Objectif**: VĂ©rifier la persistance de l'Ă©tat aprĂšs F5 **Étapes**: 1. Cliquer sur un dossier (ex: `test-medium`) 2. Observer l'URL (doit contenir `?folder=test-medium`) 3. Appuyer sur F5 (rafraĂźchir la page) **RĂ©sultat attendu**: - ✅ La page se recharge avec le mĂȘme dossier sĂ©lectionnĂ© - ✅ Les notes du dossier s'affichent immĂ©diatement - ✅ L'URL conserve `?folder=test-medium` **RĂ©sultat observĂ©**: ___________ --- ### ✅ Test 10: Navigation Back/Forward **Objectif**: VĂ©rifier la compatibilitĂ© avec l'historique du navigateur **Étapes**: 1. Cliquer sur `test-small` 2. Cliquer sur `test-medium` 3. Cliquer sur `test-large` 4. Cliquer sur le bouton "Retour" du navigateur (2 fois) 5. Cliquer sur le bouton "Avancer" du navigateur **RĂ©sultat attendu**: - ✅ Retour 1: Revient Ă  `test-medium` avec ses notes - ✅ Retour 2: Revient Ă  `test-small` avec ses notes - ✅ Avancer: Revient Ă  `test-medium` - ✅ L'URL change Ă  chaque navigation **RĂ©sultat observĂ©**: ___________ --- ## 🔍 Validation Console ### Logs Attendus (Exemple) ```javascript // Navigation vers un dossier [PaginatedNotesList] Folder filter changed: { from: null, to: 'folder-4' } // RequĂȘte HTTP GET /api/vault/metadata/paginated?folder=folder-4&limit=100 200 OK (45ms) // Changement de dossier [PaginatedNotesList] Folder filter changed: { from: 'folder-4', to: 'Allo-3' } GET /api/vault/metadata/paginated?folder=Allo-3&limit=100 200 OK (38ms) // RĂ©initialisation [PaginatedNotesList] Folder filter changed: { from: 'Allo-3', to: null } GET /api/vault/metadata/paginated?limit=100 200 OK (120ms) ``` ### ⚠ Logs d'Erreur Ă  Surveiller ```javascript // ❌ Ne devrait PAS apparaĂźtre [PaginatedNotesList] Failed to set folder filter: ... Error: Network error Error: 404 Not Found ``` --- ## 📊 MĂ©triques de Performance ### Temps de RĂ©ponse Attendus | ScĂ©nario | Temps Cible | Acceptable | Critique | |----------|-------------|------------|----------| | Dossier < 100 notes | < 100ms | < 200ms | > 500ms | | Dossier > 100 notes | < 150ms | < 300ms | > 1s | | Changement rapide | < 50ms | < 100ms | > 200ms | | Scroll infini | < 100ms | < 200ms | > 500ms | ### Utilisation MĂ©moire - **Initial**: ~50 MB - **AprĂšs navigation 10 dossiers**: ~60-70 MB - **Maximum acceptable**: < 150 MB ### RequĂȘtes HTTP - **Chaque sĂ©lection de dossier**: 1 requĂȘte - **Pas de double requĂȘte** pour la mĂȘme sĂ©lection - **Annulation automatique** si navigation rapide --- ## ✅ Checklist Finale ### Fonctionnel - [ ] Test 1: Navigation simple - OK - [ ] Test 2: Navigation rapide - OK - [ ] Test 3: Dossier vide - OK - [ ] Test 4: Dossiers profonds - OK - [ ] Test 5: Dossier + Recherche - OK - [ ] Test 6: Dossier + Tag - OK - [ ] Test 7: Retour "Tout" - OK - [ ] Test 8: Scroll infini - OK - [ ] Test 9: RafraĂźchissement page - OK - [ ] Test 10: Back/Forward - OK ### Performance - [ ] Temps de rĂ©ponse < 200ms - OK - [ ] Pas de "flicker" visuel - OK - [ ] MĂ©moire < 150 MB - OK - [ ] Pas de double requĂȘte - OK ### Console - [ ] Logs corrects `[PaginatedNotesList]` - OK - [ ] RequĂȘtes HTTP avec bons params - OK - [ ] Pas d'erreur JavaScript - OK - [ ] Pas de warning Angular - OK --- ## 🐛 Signaler un Bug Si un test Ă©choue: 1. **Noter les dĂ©tails**: - NumĂ©ro du test - RĂ©sultat observĂ© - Logs console (screenshot ou copie) - URL actuelle 2. **Reproduire** le bug: - Essayer 3 fois - Noter si c'est intermittent 3. **CrĂ©er un rapport**: ```markdown ## Bug: [Titre court] **Test**: #X - [Nom du test] **ObservĂ©**: [Description] **Attendu**: [Description] **Console**: [Logs] **URL**: [URL complĂšte] **Reproductible**: Oui/Non ``` --- ## 🎉 Validation Finale **Tous les tests passent ?** - ✅ **OUI** → La correction est validĂ©e ✹ - ❌ **NON** → Voir la section "Signaler un Bug" **Signature du testeur**: ___________ **Date**: ___________ **Environnement**: Windows/Mac/Linux + Chrome/Firefox/Edge **Version**: Angular 20 + ObsiViewer v___________