# H5P Service Tests ## Übersicht Das H5P Service Modul verfügt über umfassende Integration Tests, die alle Endpoints und Content-Typen validieren. ## Test-Coverage ### Module - **Server Endpoints**: Health, Info, Editor Selection - **8 Content Type Editors**: Quiz, Video, Presentation, Flashcards, Timeline, Drag & Drop, Fill Blanks, Memory - **8 Content Type Players**: Interaktive Player für alle Content-Typen - **Static Files**: Korrekte Bereitstellung von Editoren, Players und Assets - **Error Handling**: 404-Behandlung für ungültige Routen ## Tests ausführen ### Lokal ```bash cd h5p-service npm install npm test ``` ### Im Docker Container ```bash # Service starten docker compose -f docker-compose.content.yml up -d h5p-service # Tests ausführen docker compose -f docker-compose.content.yml exec h5p-service npm test ``` ## Test-Dateien | Datei | Beschreibung | |-------|--------------| | `h5p-service/tests/server.test.js` | Integration Tests für alle Endpoints | | `h5p-service/tests/setup.js` | Jest Test Setup & Configuration | | `h5p-service/jest.config.js` | Jest Configuration | ## Coverage Reports Nach dem Ausführen der Tests: ```bash # HTML Report öffnen open h5p-service/coverage/lcov-report/index.html ``` Coverage-Ziel: **>80%** ## Test-Kategorien ### 1. Health & Info Tests - Service-Verfügbarkeit - Health Check Endpoint - Service Info Page ### 2. Editor Selection Tests - Alle 8 Content-Typen sichtbar - Korrekte Links zu Editoren - UI-Elemente vorhanden ### 3. Content Type Tests Für jeden der 8 Content-Typen: - Editor lädt korrekt - Player lädt korrekt - Erforderliche UI-Elemente vorhanden **Content-Typen:** 1. Quiz (Question Set) 2. Interactive Video 3. Course Presentation 4. Flashcards 5. Timeline 6. Drag and Drop 7. Fill in the Blanks 8. Memory Game ### 4. Static File Tests - Core Files erreichbar - Editor Files erreichbar - Player Files erreichbar ### 5. Error Handling Tests - 404 für ungültige Routes - Fehlerbehandlung für fehlende Editoren/Players ## CI/CD Integration Die Tests sind in die CI/CD Pipeline integriert: ```yaml # .github/workflows/tests.yml (Beispiel) name: H5P Service Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Start H5P Service run: docker compose -f docker-compose.content.yml up -d h5p-service - name: Wait for Service run: sleep 10 - name: Run Tests run: docker compose -f docker-compose.content.yml exec h5p-service npm run test:ci - name: Upload Coverage uses: codecov/codecov-action@v3 with: files: ./h5p-service/coverage/lcov.info ``` ## Test-Qualität ### Best Practices 1. **Isolation**: Jeder Test ist unabhängig 2. **Cleanup**: Keine persistenten Änderungen 3. **Assertions**: Klare Expectations 4. **Speed**: Tests laufen schnell (<10s gesamt) 5. **Reliability**: Tests sind deterministisch ### Code Review Checklist Bei neuen Features: - [ ] Tests für neue Endpoints hinzugefügt - [ ] Coverage bleibt >80% - [ ] Tests sind dokumentiert - [ ] CI/CD Tests bestehen ## Troubleshooting ### Tests schlagen fehl **Service nicht erreichbar:** ```bash # Service Status prüfen docker compose -f docker-compose.content.yml ps # Logs ansehen docker compose -f docker-compose.content.yml logs h5p-service ``` **Port-Konflikte:** ```bash # Prüfe, ob Port 8003 belegt ist lsof -i :8003 # Stoppe andere Services docker compose -f docker-compose.content.yml down ``` **Veraltete Dependencies:** ```bash cd h5p-service rm -rf node_modules package-lock.json npm install ``` ## Zukünftige Erweiterungen - [ ] E2E Tests mit Playwright - [ ] Content Validation Tests - [ ] Performance Tests - [ ] Security Tests (XSS, CSRF) - [ ] Load Tests - [ ] Visual Regression Tests ## Verwandte Dokumentation - [H5P Service README](../../h5p-service/tests/README.md) - [Content Service Tests](./content-service-tests.md) - [Integration Testing Guide](./integration-testing.md)