Class_generator/Legacy/tests
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
..
fixtures Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00
integration Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00
unit Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00
utils Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00
package.json Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00
README.md Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00
run-tests.js Complete architectural rewrite with ultra-modular system 2025-09-22 07:08:39 +08:00

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é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

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

# 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.