veza/veza-docs/ORIGIN/error-logs/TERR-008-categorization.md
okinrev b7955a680c 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

5.8 KiB

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:

// 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:

// 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:

// 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)

  1. toast mock (30 min) - SIMPLE
  2. Hooks conditionnels (2-4h) - MOYENNE Total: 2.5-4.5 heures

PRIORITÉ BASSE (Amélioration qualité)

  1. Sélecteurs de tests (1-2h) - SIMPLE
  2. Warnings React Router (15 min) - TRIVIAL
  3. 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