README: document the test and release scripts
All checks were successful
Build TV app / build (push) Successful in 46s

This commit is contained in:
be-nj
2026-08-26 14:33:33 +02:00
parent a7d8fcd089
commit bb6af51788

View File

@@ -83,18 +83,37 @@ Repos, die APK selbst liegt auf dem Branch `apk`.
```
./gradlew test # Unit-Tests, Reports unter tests/runs/
tests/helpers/emulator.sh start # headloser Google-TV-Emulator
tests/helpers/emulator.sh install app/build/outputs/apk/debug/app-debug.apk
tests/helpers/emulator.sh shot name # Screenshot nach tests/runs/screenshots/
tests/helpers/emulator.sh stop
tests/smoke.sh # Emulator: bauen, starten, durchklicken (~40 s)
tests/smoke.sh --stop # dasselbe, Emulator danach herunterfahren
```
Der Emulator (AVD `castarr-googletv`, API 34) startet aus einem Snapshot und
ist in wenigen Sekunden oben; `stop` schreibt den Snapshot vorher neu. Ein
Kaltstart entsteht nur, wenn der Snapshot fehlt.
`tests/smoke.sh` baut das Debug-APK, setzt die Demo-Playlist als Quelle,
läuft mit dem D-Pad von der Senderliste bis in den Player und schlägt fehl
bei Absturz, ANR oder leerer Senderliste. Screenshots und Log landen unter
`tests/runs/`. Nicht abgedeckt: echte Wiedergabe, Onboarding am Handy,
Kopplung.
Demo-Daten für einen Lauf ohne echtes Backend: `tests/demo/make-demo-data.py`
erzeugt Playlist und EPG, die ein lokaler HTTP-Server als generische Quelle
ausliefert.
Der Emulator dahinter lässt sich auch einzeln steuern:
```
tests/helpers/emulator.sh start | stop | status
tests/helpers/emulator.sh install <apk>
tests/helpers/emulator.sh shot <name>
```
Er startet aus einem Snapshot und ist in wenigen Sekunden oben; `stop`
schreibt den Snapshot vorher neu. Ein Kaltstart entsteht nur, wenn der
Snapshot fehlt (AVD `castarr-googletv`, API 34).
### Release
```
tools/release.sh 0.11.6 --notes notes.md
```
Bumpt die Version, testet, baut signiert, taggt, schiebt die APK auf den
Branch `apk` und legt das Gitea-Release an. Ohne `--notes` schreibt es einen
Entwurf aus den Commit-Betreffs, den du selbst ausformulierst — Release-Notes
erfindet das Skript nicht.
Architektur-Notizen: [CONTEXT.md](CONTEXT.md) und [docs/adr/](docs/adr/).