Docs: Alte jamulix/GitHub-Verweise auf Forgejo umgestellt

- README, HILFE.md, welcome.html: Clone-/Release-/Profil-/Issue-Links
  und UI-Link auf https://kitux.de/forgejo/dschlueter/typewriter_tutor
- README CI/CD-Abschnitt abgerüstet: tote GitHub-Actions-Badges entfernt,
  auf reale lokale Validierung per Pre-commit-Hook reduziert
- CI_CD.md gelöscht (beschrieb die bereits entfernten .github/workflows)
- tests/README.md: CI-Beispielkommentar host-neutral formuliert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-22 12:06:36 +02:00
commit 50326fa1b7
5 changed files with 16 additions and 344 deletions

319
CI_CD.md
View file

@ -1,319 +0,0 @@
# CI/CD Integration - Typewriter Trainer
Dieses Dokument beschreibt die Continuous Integration und Continuous Deployment (CI/CD) Setup für den Typewriter Trainer.
## Übersicht
Die Test-Suite ist vollständig in CI/CD-Pipelines integriert und bietet:
- ✅ **Automatische Tests** bei jedem Push und Pull Request
- ✅ **Multi-Python-Version Support** (3.9, 3.10, 3.11, 3.12)
- ✅ **Coverage Reports** mit HTML-Visualisierung
- ✅ **Pre-commit Hooks** für lokale Validierung
- ✅ **Code Quality Checks** (flake8 Linting)
## GitHub Actions Workflows
### 1. Tests Workflow (`.github/workflows/tests.yml`)
**Trigger:**
- Push auf `main` und `develop` Branches
- Pull Requests auf `main` und `develop`
- Manuell über `workflow_dispatch`
**Jobs:**
#### Test Job
- Führt Tests auf Python 3.9, 3.10, 3.11, 3.12 aus
- Installiert Dependencies aus `requirements.txt`
- Führt Unit Tests aus (schnell, < 1 Sekunde)
- Führt Integration Tests aus (~3 Sekunden)
- Führt alle Tests kombiniert aus
- Matrix-Build für Multi-Version-Kompatibilität
#### Test Summary Job
- Läuft nach allen Tests (immer, auch bei Fehlern)
- Generiert Test-Zusammenfassung in GitHub Actions Summary
- Zeigt Anzahl der Tests und Status an
#### Lint Job
- Code Quality Check mit flake8
- Prüft auf Syntax-Fehler und undefined names
- Complexity und Line-Length Checks (nicht blockierend)
**Badge Status:**
```markdown
![Tests](https://github.com/jamulix/typewriter/actions/workflows/tests.yml/badge.svg)
```
### 2. Coverage Workflow (`.github/workflows/coverage.yml`)
**Trigger:**
- Push auf `main` und `develop` Branches
- Pull Requests auf `main` und `develop`
- Manuell über `workflow_dispatch`
**Features:**
- Generiert Test Coverage Report mit `coverage.py`
- Erstellt HTML Coverage Report als Artifact
- Berechnet Coverage-Prozentsatz
- Generiert dynamisches Coverage-Badge (grün ≥90%, gelb ≥60%, rot <60%)
- Kommentiert Coverage auf Pull Requests
- Speichert HTML-Report für 30 Tage
**Badge Status:**
```markdown
![Coverage](https://github.com/jamulix/typewriter/actions/workflows/coverage.yml/badge.svg)
```
**Coverage Report anzeigen:**
1. Gehe zu Actions → Coverage Workflow → Latest Run
2. Lade "coverage-report" Artifact herunter
3. Öffne `htmlcov/index.html` im Browser
## Lokale Test-Ausführung
### Alle Tests ausführen
```bash
# Alle Tests (Unit + Integration)
python -m unittest discover -s tests -p "test_*.py" -v
# Nur Unit Tests (schnell)
python -m unittest tests.test_lesson_service tests.test_statistics_service tests.test_settings_service -v
# Nur Integration Tests
python -m unittest tests.test_integration_progress tests.test_integration_statistics -v
```
### Coverage Report generieren
**Mit Script:**
```bash
./run_coverage.sh
```
**Manuell:**
```bash
# Coverage installieren
pip install coverage
# Tests mit Coverage ausführen
coverage run -m unittest discover -s tests -p "test_*.py"
# Terminal Report
coverage report -m
# HTML Report
coverage html
# Öffne htmlcov/index.html im Browser
```
## Pre-commit Hooks
### Automatische Test-Validierung vor jedem Commit
Der Pre-commit Hook führt automatisch alle Tests aus, bevor ein Commit erstellt wird.
**Installation:**
```bash
# Hook ist bereits installiert in .git/hooks/pre-commit
# Falls nicht, kopiere aus Template:
cp .githooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
```
**Funktionsweise:**
1. ✅ Führt Unit Tests aus
2. ✅ Führt Integration Tests aus
3. ✅ Blockiert Commit bei Test-Fehlern
4. ✅ Zeigt farbiges Output für bessere Übersicht
**Hook überspringen (nicht empfohlen):**
```bash
git commit --no-verify -m "message"
```
## Test-Statistiken
### Gesamt-Übersicht
| Kategorie | Anzahl | Status |
|-----------|--------|--------|
| **Gesamt Tests** | 80 | ✅ 100% |
| **Unit Tests** | 54 | ✅ Bestanden |
| **Integration Tests** | 26 | ✅ Bestanden |
| **Ausführungszeit** | ~2.9s | ⚡ Schnell |
### Unit Tests Breakdown
| Service | Tests | Coverage |
|---------|-------|----------|
| LessonService | 17 | Navigation & Validierung |
| StatisticsService | 15 | Berechnungen (ZPM/WPM) |
| SettingsService | 22 | Validierungen |
### Integration Tests Breakdown
| Service | Tests | Coverage |
|---------|-------|----------|
| ProgressService | 12 | CRUD & State Management |
| StatisticsService | 14 | DB Operations & Daily Practice |
## Coverage Konfiguration
Die Coverage-Konfiguration ist in `.coveragerc` definiert:
```ini
[run]
source = .
omit =
*/tests/*
*/venv/*
*/migrations/*
setup.py
[report]
precision = 2
show_missing = True
[html]
directory = htmlcov
```
**Ausgeschlossene Dateien:**
- Test-Dateien selbst
- Virtual Environments
- Migrations
- Setup-Scripts
## Best Practices
### Für Entwickler
1. **Immer Tests schreiben** für neue Features
2. **Lokale Tests ausführen** vor dem Push:
```bash
python -m unittest discover tests -v
```
3. **Coverage checken** für neue Code-Bereiche:
```bash
./run_coverage.sh
```
4. **Pre-commit Hook aktiv lassen** für automatische Validierung
### Für Pull Requests
1. ✅ Alle Tests müssen bestehen (automatisch geprüft)
2. ✅ Coverage sollte nicht sinken
3. ✅ Lint-Checks sollten bestehen
4. ✅ Review GitHub Actions Summary
### Für Releases
1. Erstelle Branch von `develop`
2. Alle Tests auf `main` müssen grün sein
3. Coverage Report prüfen
4. Merge nach `main` → automatische Tests laufen
## Troubleshooting
### Tests schlagen in CI fehl, aber lokal nicht
**Mögliche Ursachen:**
- Python-Version unterschiedlich (CI tested 3.9-3.12)
- Dependencies nicht korrekt in `requirements.txt`
- Plattform-spezifische Unterschiede (Linux vs. macOS/Windows)
**Lösung:**
```bash
# Teste mit verschiedenen Python-Versionen lokal
python3.9 -m unittest discover tests -v
python3.11 -m unittest discover tests -v
```
### Coverage Report zeigt falsche Werte
**Lösung:**
```bash
# Lösche alte Coverage-Daten
rm -rf .coverage htmlcov/
# Neu generieren
./run_coverage.sh
```
### Pre-commit Hook blockiert Commit
**Das ist gewollt!** Der Hook verhindert, dass fehlerhafte Tests in den Code kommen.
**Lösung:**
1. Prüfe Test-Output: `python -m unittest discover tests -v`
2. Fixe die fehlschlagenden Tests
3. Commit erneut
**Nur in Notfällen umgehen:**
```bash
git commit --no-verify -m "message"
```
### GitHub Actions schlagen fehl mit "Module not found"
**Lösung:**
- Stelle sicher, dass alle Dependencies in `requirements.txt` sind
- Prüfe ob `requirements.txt` im Repository committed ist
## Workflow-Diagramm
```
┌─────────────────────────────────────────────────────────────┐
│ Developer Workflow │
└─────────────────────────────────────────────────────────────┘
1. Code ändern
2. Lokale Tests (optional)
│ ./run_coverage.sh
3. git add / git commit
4. Pre-commit Hook
│ ✅ Unit Tests
│ ✅ Integration Tests
│ ❌ Blockiert bei Fehler
5. git push
┌────────────────────────┐
│ GitHub Actions │
├────────────────────────┤
│ • Tests (Multi-Python) │
│ • Coverage Report │
│ • Lint Check │
│ • Artifact Upload │
└────────────────────────┘
6. Review & Merge
```
## Weitere Ressourcen
- **Test-Dokumentation:** `tests/README.md`
- **GitHub Actions Docs:** https://docs.github.com/actions
- **Coverage.py Docs:** https://coverage.readthedocs.io
- **Python unittest:** https://docs.python.org/3/library/unittest.html
## Zusammenfassung
**80 Tests**, alle bestanden (100% Erfolgsrate)
**GitHub Actions** für automatische Tests
**Coverage Reports** mit HTML-Visualisierung
**Pre-commit Hooks** für lokale Validierung
**Multi-Python-Version** Support (3.9-3.12)
**Code Quality** Checks mit flake8
Die Test-Suite ist **produktionsbereit** und vollständig in CI/CD integriert! 🎉

View file

@ -419,8 +419,8 @@ Der Text scrollt **automatisch**, sodass:
## 📞 Weitere Hilfe
- 📖 **Projekt-Dokumentation**: Siehe README.md
- 🐛 **Bug melden**: GitHub Issues
- 💡 **Feature-Vorschlag**: GitHub Discussions
- 🐛 **Bug melden**: [Forgejo Issues](https://kitux.de/forgejo/dschlueter/typewriter_tutor/issues)
- 💡 **Feature-Vorschlag**: [Forgejo Issues](https://kitux.de/forgejo/dschlueter/typewriter_tutor/issues)
- 📧 **Support**: Siehe README für Kontakt
---

View file

@ -56,11 +56,11 @@ Ein moderner, webbasierter Tipptrainer mit **adaptivem Metronom** und umfangreic
1. **Repository klonen oder Download:**
```bash
git clone https://github.com/jamulix/typewriter.git
cd typewriter
git clone https://kitux.de/forgejo/dschlueter/typewriter_tutor.git
cd typewriter_tutor
```
Alternativ: [Neuestes Release herunterladen](https://github.com/jamulix/typewriter/tags)
Alternativ: [Neuestes Release herunterladen](https://kitux.de/forgejo/dschlueter/typewriter_tutor/tags)
2. **Virtuelle Umgebung erstellen (empfohlen):**
```bash
@ -205,9 +205,9 @@ Die Statistik-Seite (`/statistics`) bietet:
- **Datenexport**: CSV und JSON-Download Ihrer Statistiken
- **Verlaufsanalyse**: Sehen Sie Ihre Fortschritte über mehrere Sitzungen
## 🧪 Tests & CI/CD
## 🧪 Tests
Das Projekt enthält eine umfassende Test-Suite mit **80 Tests** (100% Erfolgsrate) und vollständiger CI/CD-Integration.
Das Projekt enthält eine umfassende Test-Suite mit **80 Tests** (100% Erfolgsrate) und lokaler Validierung per Pre-commit-Hook.
### Test-Übersicht
@ -256,18 +256,12 @@ python test_metronome_velocity.py
- ✅ **App-Tests**: Statistik-Berechnungen, API-Endpoints, Input-Validierung, CSV/JSON-Export
- ✅ **Metronom-Tests**: 5 Anpassungsregeln, Realistische Szenarien, Edge Cases
### CI/CD Integration
### Lokale Validierung
**GitHub Actions Workflows:**
Die Validierung läuft lokal über einen Git-Pre-commit-Hook (aktuell ist keine serverseitige CI eingerichtet).
![Tests](https://github.com/jamulix/typewriter/actions/workflows/tests.yml/badge.svg)
![Coverage](https://github.com/jamulix/typewriter/actions/workflows/coverage.yml/badge.svg)
- ✅ **Automatische Tests** bei jedem Push und Pull Request
- ✅ **Multi-Python-Version** Support (3.9, 3.10, 3.11, 3.12)
- ✅ **Coverage Reports** mit HTML-Visualisierung
- ✅ **Pre-commit Hooks** für lokale Validierung
- ✅ **Code Quality Checks** (flake8 Linting)
- ✅ **Pre-commit Hook** führt Unit- und Integrationstests vor jedem Commit aus und blockiert bei Fehlern
- ✅ **Coverage Reports** mit HTML-Visualisierung (lokal via `./run_coverage.sh`)
**Pre-commit Hook Installation:**
```bash
@ -276,11 +270,8 @@ cp .githooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
```
Der Pre-commit Hook führt automatisch alle Tests vor jedem Commit aus und blockiert bei Fehlern.
**Weitere Informationen:**
- 📖 Service Tests: [`tests/README.md`](tests/README.md)
- 📖 CI/CD Setup: [`CI_CD.md`](CI_CD.md)
- 📖 Metronom Tests: [`README_METRONOME_TESTS.md`](README_METRONOME_TESTS.md)
## 🔧 Entwicklung
@ -532,7 +523,7 @@ MIT License - siehe [LICENSE](LICENSE) Datei für Details.
**Dieter Schlüter**
📧 dieter.schlueter@linix.de
🌐 [GitHub: @jamulix](https://github.com/jamulix)
🌐 [Forgejo: @dschlueter](https://kitux.de/forgejo/dschlueter)
---

View file

@ -120,9 +120,9 @@
<div class="mt-3 text-muted">
<small>
Entwickelt mit ❤️ für effektives Tipptraining<br>
<a href="https://github.com/jamulix/typewriter" target="_blank" class="text-decoration-none">
<i data-lucide="github" style="width: 16px; height: 16px; display: inline;"></i>
GitHub
<a href="https://kitux.de/forgejo/dschlueter/typewriter_tutor" target="_blank" class="text-decoration-none">
<i data-lucide="git-branch" style="width: 16px; height: 16px; display: inline;"></i>
Forgejo
</a>
| © 2025 <a href="mailto:dieter.schlueter@linix.de" class="text-decoration-none">Dieter Schlüter</a>
</small>

View file

@ -227,7 +227,7 @@ Für vollständige Integration Tests (mit Datenbank, Flask-Context, etc.) siehe
Diese Tests können einfach in CI/CD-Pipelines integriert werden:
```bash
# In GitHub Actions / GitLab CI
# In CI/CD (z.B. Forgejo Actions / GitLab CI)
python -m unittest discover tests -v
```