Class_generator/Legacy/tests/README.md
StillHammer 38920cc858 Complete architectural rewrite with ultra-modular system
Major Changes:
- Moved legacy system to Legacy/ folder for archival
- Built new modular architecture with strict separation of concerns
- Created core system: Module, EventBus, ModuleLoader, Router
- Added Application bootstrap with auto-start functionality
- Implemented development server with ES6 modules support
- Created comprehensive documentation and project context
- Converted SBS-7-8 content to JSON format
- Copied all legacy games and content to new structure

New Architecture Features:
- Sealed modules with WeakMap private data
- Strict dependency injection system
- Event-driven communication only
- Inviolable responsibility patterns
- Auto-initialization without commands
- Component-based UI foundation ready

Technical Stack:
- Vanilla JS/HTML/CSS only
- ES6 modules with proper imports/exports
- HTTP development server (no file:// protocol)
- Modular CSS with component scoping
- Comprehensive error handling and debugging

Ready for Phase 2: Converting legacy modules to new architecture

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 07:08:39 +08:00

230 lines
7.2 KiB
Markdown

# 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
```bash
cd tests/
npm install # (optionnel, pour jsdom si nécessaire)
```
### Commandes Principales
```bash
# 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/)
```bash
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éseau
- `createLogCapture()` - Capture des logs pour vérification
- `createTimerMock()` - Mock des timers/setTimeout
- `loadModuleForTest()` - 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
```bash
# 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
1. **Tests Unitaires**: Créer `tests/unit/nouveau-module.test.js`
2. **Tests d'Intégration**: Créer `tests/integration/nouveau-flux.test.js`
3. **Fixtures**: Ajouter données dans `tests/fixtures/`
4. **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:
```yaml
# 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.