- Complete test infrastructure with runners, helpers, and fixtures - Unit tests for core modules: EnvConfig, ContentScanner, GameLoader - Integration tests for proxy, content loading, and navigation - Edge case tests covering data corruption, network failures, security - Stress tests with 100+ concurrent requests and performance monitoring - Test fixtures with malicious content samples and edge case data - Comprehensive README with usage instructions and troubleshooting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
7.2 KiB
7.2 KiB
Tests - Class Generator
Suite complète de tests unitaires (TU) et tests d'intégration (TI) pour l'application Class Generator.
📁 Structure
tests/
├── unit/ # Tests unitaires
│ ├── env-config.test.js # Tests pour EnvConfig
│ ├── content-scanner.test.js # Tests pour ContentScanner
│ └── game-loader.test.js # Tests pour GameLoader
├── integration/ # Tests d'intégration
│ ├── proxy-digitalocean.test.js # Tests du proxy DigitalOcean
│ ├── content-loading-flow.test.js # Tests du flux de chargement
│ └── navigation-system.test.js # Tests du système de navigation
├── fixtures/ # Données de test
│ └── content-samples.js # Échantillons de contenu
├── utils/ # Utilitaires de test
│ └── test-helpers.js # Helpers et mocks
├── run-tests.js # Script principal de lancement
├── package.json # Configuration npm pour les tests
└── README.md # Cette documentation
🚀 Lancement des Tests
Installation
cd tests/
npm install # (optionnel, pour jsdom si nécessaire)
Commandes Principales
# Tous les tests
node run-tests.js
# Tests unitaires seulement
node run-tests.js --unit-only
# Tests d'intégration seulement
node run-tests.js --integration-only
# Mode verbose (affichage détaillé)
node run-tests.js --verbose
# Avec couverture de code
node run-tests.js --coverage
# Tests spécifiques
node run-tests.js --pattern=content
# Arrêt au premier échec
node run-tests.js --bail
Via NPM (depuis le dossier tests/)
npm test # Tous les tests
npm run test:unit # Tests unitaires
npm run test:integration # Tests d'intégration
📋 Tests Unitaires (TU)
EnvConfig (env-config.test.js)
- ✅ Construction et configuration
- ✅ Méthodes utilitaires (isRemoteContentEnabled, etc.)
- ✅ Test de connectivité avec timeouts
- ✅ Configuration dynamique
- ✅ Génération de signatures AWS
- ✅ Diagnostics
ContentScanner (content-scanner.test.js)
- ✅ Initialisation et découverte de contenu
- ✅ Conversion de noms de modules JSON → JS
- ✅ Chargement de contenu JSON distant/local
- ✅ Scan de fichiers de contenu (.js et .json)
- ✅ Gestion des erreurs et logs
- ✅ Discovery de fichiers communs
GameLoader (game-loader.test.js)
- ✅ Chargement et création d'instances de jeu
- ✅ Conversion de noms (game types → class names)
- ✅ Cycle de vie des jeux (start, destroy, restart)
- ✅ Validation de contenu pour les jeux
- ✅ Gestion des erreurs de construction
- ✅ État et informations du jeu actuel
🔗 Tests d'Intégration (TI)
Proxy DigitalOcean (proxy-digitalocean.test.js)
- ✅ Endpoints du proxy (
/do-proxy/filename.json) - ✅ Support des méthodes GET et HEAD
- ✅ Headers CORS et authentification
- ✅ Listing des fichiers (
/do-proxy/_list) - ✅ Performance et requêtes simultanées
- ✅ Gestion des erreurs 403/404
- ✅ Intégration DigitalOcean Spaces réelle
Flux de Chargement (content-loading-flow.test.js)
- ✅ Flux complet: Scan → Load → Game
- ✅ Fallback local si distant échoue
- ✅ Respect des priorités de configuration
- ✅ Gestion des erreurs en cascade
- ✅ Performance et cache
- ✅ Validation d'intégrité des données
Système de Navigation (navigation-system.test.js)
- ✅ Parsing d'URL et paramètres
- ✅ Navigation et routage entre pages
- ✅ Gestion de l'historique de navigation
- ✅ Validation de routes et paramètres
- ✅ État de connectivité réseau
- ✅ Intégration avec GameLoader
- ✅ Gestion des erreurs de navigation
🛠️ Utilitaires de Test
Test Helpers (utils/test-helpers.js)
createMockDOM()- Environnement DOM simulécreateMockFetch()- Mock pour requêtes réseaucreateLogCapture()- Capture des logs pour vérificationcreateTimerMock()- Mock des timers/setTimeoutloadModuleForTest()- Chargement de modules pour tests- Assertions personnalisées
Fixtures (fixtures/content-samples.js)
- Échantillons de contenu JSON et JS
- Données de test pour compatibilité des jeux
- Réponses réseau mockées
- Cas de test pour validation
📊 Coverage et Métriques
Les tests couvrent:
Modules Core (Couverture ~90%+)
- EnvConfig: Configuration, connectivité, AWS auth
- ContentScanner: Discovery, chargement JSON/JS, fallbacks
- GameLoader: Instantiation, validation, cycle de vie
Flux d'Intégration (Couverture ~85%+)
- Proxy DigitalOcean: Authentification, CORS, performance
- Chargement de Contenu: Priorités, fallbacks, validation
- Navigation: Routage, historique, état réseau
Points Non Couverts
- Interface utilisateur (événements DOM complexes)
- Jeux individuels (logique métier spécifique)
- WebSocket logger en temps réel
- Fonctionnalités futures (IA, chinois)
🚨 Contraintes et Limitations
Environnement de Test
- Node.js 18+ requis (support natif
--test) - Pas de navigateur réel (simulation DOM)
- Pas d'accès fichier système complet
- Réseau mockée pour la plupart des tests
Tests d'Intégration
- Nécessitent serveurs actifs (proxy sur 8083)
- Dépendent de la connectivité DigitalOcean
- Peuvent échouer si clés d'API invalides
- Timeouts pour éviter blocages
Performance
- Tests rapides (~30s max pour suite complète)
- Parallélisation des TU mais pas des TI
- Mocks utilisés pour éviter latence réseau
🔧 Debugging et Maintenance
Logs de Debug
# Mode verbose avec tous les logs
node run-tests.js --verbose
# Tests spécifiques avec debug
TEST_VERBOSE=1 node --test tests/unit/content-scanner.test.js
Ajout de Nouveaux Tests
- Tests Unitaires: Créer
tests/unit/nouveau-module.test.js - Tests d'Intégration: Créer
tests/integration/nouveau-flux.test.js - Fixtures: Ajouter données dans
tests/fixtures/ - Helpers: Étendre
tests/utils/test-helpers.js
Résolution de Problèmes Courants
| Problème | Solution |
|---|---|
| Tests timeout | Augmenter timeout dans run-tests.js |
| Proxy inaccessible | Vérifier que websocket-server.js est démarré |
| Erreurs DigitalOcean | Vérifier clés d'accès dans env-config.js |
| Modules non trouvés | Vérifier paths relatifs dans test helpers |
| DOM errors | Compléter mocks DOM dans createMockDOM() |
📈 Intégration Continue
Les tests peuvent être intégrés dans des pipelines CI/CD:
# Exemple GitHub Actions
- name: Run Tests
run: |
cd tests
node run-tests.js --bail --coverage
🎯 Objectifs de Qualité
- Couverture: 85%+ pour modules core
- Performance: <30s pour suite complète
- Fiabilité: Pas de tests flaky
- Maintenance: Tests lisibles et bien documentés
💡 Tip: Utilisez --pattern= pour ne lancer que les tests spécifiques lors du développement.
🔍 Debug: Activez --verbose pour voir les détails d'exécution et les logs.
🚀 CI/CD: Les tests sont conçus pour s'intégrer facilement dans vos pipelines d'automatisation.