veza/veza-docs/ORIGIN/error-logs/TERR-008-categorization.md
okinrev 5ffcd50e0a P0: stabilisation backend/chat/stream + nouvelle base migrations v1
Backend Go:
- Remplacement complet des anciennes migrations par la base V1 alignée sur ORIGIN.
- Durcissement global du parsing JSON (BindAndValidateJSON + RespondWithAppError).
- Sécurisation de config.go, CORS, statuts de santé et monitoring.
- Implémentation des transactions P0 (RBAC, duplication de playlists, social toggles).
- Ajout d’un job worker structuré (emails, analytics, thumbnails) + tests associés.
- Nouvelle doc backend : AUDIT_CONFIG, BACKEND_CONFIG, AUTH_PASSWORD_RESET, JOB_WORKER_*.

Chat server (Rust):
- Refonte du pipeline JWT + sécurité, audit et rate limiting avancé.
- Implémentation complète du cycle de message (read receipts, delivered, edit/delete, typing).
- Nettoyage des panics, gestion d’erreurs robuste, logs structurés.
- Migrations chat alignées sur le schéma UUID et nouvelles features.

Stream server (Rust):
- Refonte du moteur de streaming (encoding pipeline + HLS) et des modules core.
- Transactions P0 pour les jobs et segments, garanties d’atomicité.
- Documentation détaillée de la pipeline (AUDIT_STREAM_*, DESIGN_STREAM_PIPELINE, TRANSACTIONS_P0_IMPLEMENTATION).

Documentation & audits:
- TRIAGE.md et AUDIT_STABILITY.md à jour avec l’état réel des 3 services.
- Cartographie complète des migrations et des transactions (DB_MIGRATIONS_*, DB_TRANSACTION_PLAN, AUDIT_DB_TRANSACTIONS, TRANSACTION_TESTS_PHASE3).
- Scripts de reset et de cleanup pour la lab DB et la V1.

Ce commit fige l’ensemble du travail de stabilisation P0 (UUID, backend, chat et stream) avant les phases suivantes (Coherence Guardian, WS hardening, etc.).
2025-12-06 11:14:38 +01:00

216 lines
5.8 KiB
Markdown

# TERR-008: Catégorisation des Tests Frontend
## 📊 Vue d'Ensemble
- **Total fichiers de tests**: 189
- **Tests passants**: Majorité (✓ visible dans les logs)
- **Erreurs récurrentes**: 5 catégories principales
## 🔍 Catégorisation des Erreurs
### CATÉGORIE 1: APIs Browser Manquantes (PRIORITÉ HAUTE)
#### 1.1 ResizeObserver is not defined
**Fréquence**: Très élevée (apparaît dans de nombreux tests)
**Impact**: Tests échouent silencieusement ou avec warnings
**Cause**: `ResizeObserver` n'est pas mocké dans `src/test/setup.ts`
**Fichiers affectés**:
- Composants utilisant des librairies UI (Radix UI, etc.)
- Composants avec resize detection
- Composants de layout dynamique
**Solution**:
```typescript
// Ajouter dans src/test/setup.ts
global.ResizeObserver = class ResizeObserver {
observe() {}
unobserve() {}
disconnect() {}
};
```
**Temps estimé**: 5 minutes
**Complexité**: TRIVIAL
---
#### 1.2 WebSocket Mock Incomplet
**Fréquence**: Moyenne
**Impact**: Tests WebSocket échouent
**Erreur**: `TypeError: realWebSocket.addEventListener is not a function`
**Cause**: Le mock WebSocket dans `setup.ts` n'implémente pas `addEventListener`
**Fichiers affectés**:
- `src/features/streaming/hooks/usePlaybackRealtime.test.ts`
- Tous les tests utilisant WebSocket
**Solution**:
```typescript
// Améliorer MockWebSocket dans src/test/setup.ts
class MockWebSocket {
// ... existing code ...
addEventListener(type: string, listener: EventListener) {
// Implementation
}
removeEventListener(type: string, listener: EventListener) {
// Implementation
}
}
```
**Temps estimé**: 15 minutes
**Complexité**: SIMPLE
---
### CATÉGORIE 2: Problèmes React Hooks (PRIORITÉ MOYENNE)
#### 2.1 Rendered more hooks than during the previous render
**Fréquence**: Moyenne
**Impact**: Tests échouent avec erreur React
**Cause**:
- Hooks conditionnels
- Hooks dans des conditions if/else
- Hooks après des early returns
- Re-renders avec nombre différent de hooks
**Fichiers affectés**:
- Composants avec logique conditionnelle complexe
- Hooks personnalisés avec conditions
**Solution**:
- Auditer les composants pour hooks conditionnels
- Utiliser `useMemo`/`useCallback` au lieu de hooks conditionnels
- Réorganiser la logique pour éviter hooks conditionnels
**Temps estimé**: 2-4 heures
**Complexité**: MOYENNE
---
### CATÉGORIE 3: Mocks Manquants/Incomplets (PRIORITÉ MOYENNE)
#### 3.1 toast.success is not a function
**Fréquence**: Faible
**Impact**: Tests échouent lors de l'appel à toast
**Cause**: Mock de `toast` non configuré ou incomplet
**Fichiers affectés**:
- Tests utilisant `useToast` hook
- Tests avec notifications
**Solution**:
```typescript
// Dans src/mocks/test-setup.ts ou setup.ts
vi.mock('@/hooks/useToast', () => ({
useToast: () => ({
toast: {
success: vi.fn(),
error: vi.fn(),
info: vi.fn(),
warning: vi.fn(),
},
}),
}));
```
**Temps estimé**: 30 minutes
**Complexité**: SIMPLE
---
### CATÉGORIE 4: Problèmes de Sélecteurs de Tests (PRIORITÉ BASSE)
#### 4.1 Unable to find an element with the text
**Fréquence**: Faible
**Impact**: Tests échouent mais peuvent être corrigés facilement
**Cause**:
- Texte divisé par plusieurs éléments
- Texte avec caractères spéciaux (✓, ✗)
- Sélecteurs trop spécifiques
**Exemples**:
- "✓ Ce nom d'utilisateur est disponible"
- "✗ Ce nom d'utilisateur est déjà pris"
**Solution**:
- Utiliser `getByText` avec fonction de matching
- Utiliser `getByRole` ou `getByTestId` au lieu de texte
- Normaliser le texte avant comparaison
**Temps estimé**: 1-2 heures
**Complexité**: SIMPLE
---
### CATÉGORIE 5: Warnings et Avertissements (PRIORITÉ BASSE)
#### 5.1 React Router Future Flag Warning
**Fréquence**: Élevée (warnings)
**Impact**: Aucun (warnings uniquement)
**Cause**: Configuration React Router
**Solution**: Mettre à jour la configuration React Router
**Temps estimé**: 15 minutes
**Complexité**: TRIVIAL
#### 5.2 An update to Component inside a test was not wrapped in act(...)
**Fréquence**: Moyenne (warnings)
**Impact**: Aucun (warnings uniquement)
**Cause**: Mises à jour asynchrones non wrappées
**Solution**: Utiliser `waitFor` et `act` correctement
**Temps estimé**: 1-2 heures
**Complexité**: SIMPLE
---
## 📋 Plan d'Action par Priorité
### PRIORITÉ HAUTE (Impact immédiat)
1.**ResizeObserver mock** (5 min) - TRIVIAL
2.**WebSocket addEventListener** (15 min) - SIMPLE
**Total**: 20 minutes
### PRIORITÉ MOYENNE (Impact fonctionnel)
3.**toast mock** (30 min) - SIMPLE
4.**Hooks conditionnels** (2-4h) - MOYENNE
**Total**: 2.5-4.5 heures
### PRIORITÉ BASSE (Amélioration qualité)
5.**Sélecteurs de tests** (1-2h) - SIMPLE
6.**Warnings React Router** (15 min) - TRIVIAL
7.**act() warnings** (1-2h) - SIMPLE
**Total**: 2.25-4.25 heures
---
## 📊 Statistiques
| Catégorie | Erreurs | Warnings | Temps Estimé | Priorité |
|-----------|---------|----------|--------------|----------|
| APIs Browser | 2 types | - | 20 min | HAUTE |
| React Hooks | 1 type | - | 2-4h | MOYENNE |
| Mocks | 1 type | - | 30 min | MOYENNE |
| Sélecteurs | 1 type | - | 1-2h | BASSE |
| Warnings | - | 2 types | 2.25-4.25h | BASSE |
| **TOTAL** | **5** | **2** | **6-11h** | - |
---
## ✅ Points Positifs
1. **Majorité des tests passent** (✓ visible dans logs)
2. **Architecture de tests solide** (189 fichiers)
3. **Setup de base fonctionnel** (vitest, testing-library)
4. **Erreurs catégorisables et corrigeables**
## 🎯 Conclusion
**Statut**: ✅ **BON ÉTAT** avec améliorations nécessaires
- Tests fonctionnels dans l'ensemble
- Erreurs principalement liées à l'environnement de test
- Corrections rapides possibles pour la majorité
**Temps total estimé**: 6-11 heures
**Impact après corrections**: Tests stables et fiables
**Date**: 2025-11-09