monitoring: port GOA GUI chain from taler-android inference branches

Document dev/hernani-inference/gui-workflows and related fix branches;
add Linux-capable run-goa-gui-chain.sh (mint + deep-link + UI taps).
This commit is contained in:
Hernâni Marques 2026-07-17 21:02:41 +02:00
parent 2b89526c60
commit ed6fca0958
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
3 changed files with 413 additions and 2 deletions

View file

@ -100,11 +100,61 @@ balance/settlement is not asserted (settlement still better covered by
| `run-android-gui-smoke.sh` | **Android app UI** surface for the same stacks |
| Combined | CLI = money path green; GUI = app UX green as far as taps go |
## Upstream: `taler-android` `dev/hernani-inference/*`
Branch name is **`hernani-inference`** (not “inferenced”). Remote:
`git@git.taler.net:taler-android.git`.
| Branch | Relevance for automation |
|--------|---------------------------|
| **`dev/hernani-inference/gui-workflows`** | **Primary:** macOS emulator helpers + **GOA GUI chain** (`scripts/goa-chain-emu.sh`, `docs/gui-workflows.md`, `setup-avds.sh`, `start-emulators.sh`). Deep-link + `uiautomator` text taps + bank API mint + shop templates. |
| **`fix/bank-withdraw-auto-exchange`** | App fix: resolve exchange when bank omits it (needed for GOA withdraw UI). |
| **`fix/withdraw-spinner-fallback`** | App fix: stop endless withdraw spinner (+ OIM UI work). |
| **`experimental-oim` / `experimental-oim-pos`** | Experimental cash denomination UI; optional for demos, not required for chain. |
### Port into this tree (Linux-capable)
| Upstream (gui-workflows) | Here (`android-test/`) |
|--------------------------|-------------------------|
| `goa-chain-emu.sh` | **`run-goa-gui-chain.sh`** (goa + stage, Linux paths, explorer secrets as monitoring ladder) |
| `tap_text` / `click_through` | same idea in chain + `lib_ui.py` |
| `mint_withdraw` explorer API | same (Basic → token → POST withdrawals) |
| `mint_pay` public templates | same (goa-shop products / stage fermes templates) |
| `android-env.sh` Homebrew | use `$HOME/Android/Sdk` + system `adb` (see GIT-AUTOMATION-NOTES) |
| macOS-only docs | **Linux supported** for chain/smoke; AVD setup still DIY on Linux |
Open issues mirrored from upstream `ISSUES.md` (gui-workflows):
- **I-and-gui-001** — taps still best-effort; ToS/confirm may need human
- **I-and-gui-003**`EXP_PW_FILE` required for mint
- **I-and-gui-004** — emulator RAM cost (this host ~3.7GiB)
- **I-and-gui-007** — for reliable withdraw GUI, build/install app from **fix/bank-withdraw-auto-exchange** or **fix/withdraw-spinner-fallback**, not plain master alone
Recommended demo stack:
```text
1) Checkout taler-android: fix/withdraw-spinner-fallback (or merge fixes)
2) ./gradlew :wallet:installFdroidDebug
3) Boot emulator / phone
4) android-test/run-goa-gui-chain.sh # STACK=goa|stage
```
```bash
# GOA chain (explorer mint + GUI taps)
EXP_PW_FILE=$HOME/src/koopa/koopa-admin-secrets/koopa/host-root/taler-bank/bank-explorer-password.txt \
STACK=goa PKG=net.taler.wallet.fdroid.debug \
./run-goa-gui-chain.sh
# Stage TESTPAYSAN (explorer via stagepaysan SSH if EXP_PW_FILE unset)
STACK=stage ./run-goa-gui-chain.sh
```
## Future upgrades (not required for vanilla)
- Maestro / Appium flows with stable resource-ids
- Explicit wait for text “Withdrawal complete” / balance
- Separate jobs: F-Droid vs nightly source vs Play flavor
- Port Paivana unlock scripts (upstream I-and-gui-002)
- Dual AVD wallet+POS (upstream I-and-gui-008)
- Record video (`adb shell screenrecord`) on failure
## Checklist — “vanille erreicht?”
@ -114,6 +164,9 @@ balance/settlement is not asserted (settlement still better covered by
- [x] Source-build path (same smoke after build)
- [x] Deep-link shortcuts documented
- [x] Multi-round **graphical** taps (uiautomator)
- [x] GOA-style **chain** (multi withdraw + multi pay) from inference branch
- [x] Screenshots + UI XML + logcat artifacts
- [x] Inference branch mapping documented
- [ ] Fully reliable unattended Confirm→settled on low-RAM emulator (host-limited)
- [ ] App built from withdraw-fix branch by default in build script (optional)
- [ ] Assert final balance in app UI (optional next step)