monitoring: GUI-AUTOMATION-NOTES + AUTO_ANDROID/AUTO_GUI flags
Document minimal variant; Linux defaults to Android-only automation; macOS can enable both ecosystems later via flags.
This commit is contained in:
parent
e51b3208c2
commit
c57f08b9d6
6 changed files with 231 additions and 193 deletions
179
scripts/taler-monitoring/android-test/GUI-AUTOMATION-NOTES.md
Normal file
179
scripts/taler-monitoring/android-test/GUI-AUTOMATION-NOTES.md
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
# GUI automation notes (Android wallet)
|
||||
|
||||
Canonical notes for **graphical** Android wallet tests against GOA / stage.
|
||||
Older name `AUTOMATED-GUI-NOTES.md` redirects here.
|
||||
|
||||
---
|
||||
|
||||
## Minimal variant (implemented first) — status 2026-07
|
||||
|
||||
This is the **minimal vanilla** path we actually shipped; full dual-platform
|
||||
GUI is planned via flags (below), not required to use these scripts today.
|
||||
|
||||
| Piece | Status | Notes |
|
||||
|-------|--------|--------|
|
||||
| F-Droid published APK install | **done** | `net.taler.wallet.fdroid` 1.6.1 / 854 |
|
||||
| Source build + same smoke | **done** | `:wallet:assembleFdroidDebug` → `net.taler.wallet.fdroid.debug` |
|
||||
| Default source branch | **done** | `dev/hernani-inference/fix-bank-withdraw-auto-exchange` (minimal GOA exchange auto-add) |
|
||||
| Deep-link entry (≡ QR) | **done** | `adb` `VIEW` `taler://withdraw/…` / `taler://pay…` |
|
||||
| Explorer API mint (chain) | **done** | `run-goa-gui-chain.sh` (GOA + stage) |
|
||||
| UI taps via uiautomator | **done** | best-effort Confirm/ToS/Pay; ANR → prefer **Wait** |
|
||||
| Screenshots / logcat artifacts | **done** | under `out*`, `out-gui-chain/` (gitignored) |
|
||||
| Host CLI e2e settlement | **separate** | `taler-monitoring.sh e2e` / `ladder` (not Android UI) |
|
||||
| Reliable unattended Confirm on 4 GiB Linux host | **limited** | System UI ANR; use phone or more RAM |
|
||||
| iOS GUI | **not in this tree** | see taler-ios `dev/hernani-inference/gui-workflows` |
|
||||
| macOS full dual AVD helpers | **upstream** | taler-android `gui-workflows` (Homebrew); ported ideas here for Linux |
|
||||
|
||||
**Ground rule:** bring it to run; app diffs only if needed and **minimal**; prefer
|
||||
extending existing `dev/hernani-inference/*` branches over new trees.
|
||||
|
||||
```bash
|
||||
cd scripts/taler-monitoring/android-test
|
||||
|
||||
# Minimal hybrid (install + deep-link + light taps)
|
||||
STACK=goa ./run-android-pay-smoke.sh
|
||||
|
||||
# GUI multi-round taps
|
||||
STACK=goa ./run-android-gui-smoke.sh
|
||||
STACK=stage ./run-android-gui-smoke.sh
|
||||
|
||||
# Explorer mint + multi withdraw/pay chain (from gui-workflows)
|
||||
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
|
||||
|
||||
# Build fix-branch APK then smoke (GUI=1 for gui smoke)
|
||||
./run-android-build-and-smoke.sh
|
||||
GUI=1 ./run-android-build-and-smoke.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Platform capability flags (planned + defaults)
|
||||
|
||||
Automation can run on hosts that support **Android only**, **GUI tooling only**
|
||||
(conceptual), or **both**. Flags keep that explicit for CI and laptops.
|
||||
|
||||
### Proposed env flags
|
||||
|
||||
| Variable | Values | Meaning |
|
||||
|----------|--------|---------|
|
||||
| `AUTO_ANDROID` | `0` / `1` | Run Android wallet automation (adb, APK, emulator/device) |
|
||||
| `AUTO_GUI` | `0` / `1` | Drive **graphical** UI (uiautomator taps, multi-round). If `0`, deep-link/CLI-only install smoke. |
|
||||
| `AUTO_PLATFORM` | `auto` / `linux` / `macos` / `ios` | Host family (optional override) |
|
||||
|
||||
**Semantics:**
|
||||
|
||||
| `AUTO_ANDROID` | `AUTO_GUI` | Behaviour |
|
||||
|----------------|------------|-----------|
|
||||
| `1` | `0` | Android install + deep-link smoke only (no multi-round taps) |
|
||||
| `1` | `1` | Android + graphical drive (vanilla GUI / chain) |
|
||||
| `0` | `1` | Reserved (e.g. future desktop/web GUI); currently **no-op** with a clear message |
|
||||
| `0` | `0` | Skip mobile automation |
|
||||
|
||||
### Defaults by host (when flags unset)
|
||||
|
||||
| Host (`uname -s`) | Default `AUTO_ANDROID` | Default `AUTO_GUI` | Rationale |
|
||||
|-------------------|------------------------|--------------------|-----------|
|
||||
| **Linux** | **`1`** | **`1`** if device/emulator present, else scripts exit 3 | This repo’s day-to-day path; **Android only** (no iOS here) |
|
||||
| **Darwin (macOS)** | `1` | `1` | Can run Android emulators **and** (separately) taler-ios GUI helpers; both flags on for Android scripts; iOS is out of tree |
|
||||
| **Other** | `0` | `0` | Fail closed |
|
||||
|
||||
**Linux default = Android** (no second mobile platform in this suite).
|
||||
**macOS** may enable both ecosystems in the wider monorepo sense; for *these*
|
||||
scripts only Android is implemented — set `AUTO_ANDROID=1` (default) and keep
|
||||
iOS under `taler-ios`.
|
||||
|
||||
### Resolution helper (convention for future wrappers)
|
||||
|
||||
```bash
|
||||
# Example for a future run-all-mobile.sh
|
||||
os=$(uname -s)
|
||||
: "${AUTO_PLATFORM:=auto}"
|
||||
case "$AUTO_PLATFORM" in
|
||||
auto) case "$os" in Linux) AUTO_PLATFORM=linux ;; Darwin) AUTO_PLATFORM=macos ;; *) AUTO_PLATFORM=other ;; esac ;;
|
||||
esac
|
||||
case "$AUTO_PLATFORM" in
|
||||
linux)
|
||||
: "${AUTO_ANDROID:=1}"
|
||||
: "${AUTO_GUI:=1}"
|
||||
# no iOS
|
||||
;;
|
||||
macos)
|
||||
: "${AUTO_ANDROID:=1}"
|
||||
: "${AUTO_GUI:=1}"
|
||||
# optional later: AUTO_IOS=1 for taler-ios scripts
|
||||
;;
|
||||
*)
|
||||
: "${AUTO_ANDROID:=0}"
|
||||
: "${AUTO_GUI:=0}"
|
||||
;;
|
||||
esac
|
||||
```
|
||||
|
||||
Scripts **today** implement Android only; they should honour:
|
||||
|
||||
- `AUTO_ANDROID=0` → exit 0 with “skipped (AUTO_ANDROID=0)”
|
||||
- `AUTO_GUI=0` → call deep-link smoke without multi-round GUI (or set `GUI_ROUNDS=0`)
|
||||
|
||||
---
|
||||
|
||||
## Vanilla layers (detail)
|
||||
|
||||
| Layer | What | Tooling |
|
||||
|-------|------|---------|
|
||||
| **A — Install** | F-Droid or from-source APK | `adb install` |
|
||||
| **B — Entry (shortcut)** | `taler://withdraw/…` / `taler://pay…` | `adb am start -a VIEW` |
|
||||
| **C — Graphical UI** | Confirm / ToS / Pay taps; ANR Wait | `uiautomator` + `lib_ui.py` / chain |
|
||||
| **D — Evidence** | Screenshots, XML, logcat, URIs | `out*/` |
|
||||
|
||||
### Legitimate shortcuts
|
||||
|
||||
| Shortcut | Replaces |
|
||||
|----------|----------|
|
||||
| Deep-link withdraw/pay | Camera QR / opening paywall |
|
||||
| Host `POST` template → pay URI | Browser shop checkout UI |
|
||||
| Label-list taps | Human reading button text |
|
||||
| Skip full ToS scroll | Tap Accept if shown |
|
||||
|
||||
### Scripts
|
||||
|
||||
| Script | Role |
|
||||
|--------|------|
|
||||
| `run-android-pay-smoke.sh` | Hybrid: install + deep-link + light taps |
|
||||
| `run-android-gui-smoke.sh` | Multi-round GUI drive |
|
||||
| `run-goa-gui-chain.sh` | Multi mint/withdraw/pay (gui-workflows port) |
|
||||
| `run-android-build-and-smoke.sh` | Build inference fix branch + smoke (`GUI=1` optional) |
|
||||
| `lib_ui.py` | Dump/tap/ANR helpers |
|
||||
|
||||
---
|
||||
|
||||
## Stacks under test
|
||||
|
||||
| Stack | Withdraw | Pay |
|
||||
|-------|----------|-----|
|
||||
| **GOA** | explorer mint / `demo-withdraw.json` @ bank.hacktivism.ch | goa-shop templates / Paivana pay-template |
|
||||
| **stage** | explorer / demo-withdraw @ stage.bank… | fermes / jardin public templates |
|
||||
|
||||
---
|
||||
|
||||
## Upstream branches (`taler-android` `dev/hernani-inference/*`)
|
||||
|
||||
| Branch | Role |
|
||||
|--------|------|
|
||||
| `gui-workflows` | macOS emulator helpers + original `goa-chain-emu.sh` |
|
||||
| `fix/bank-withdraw-auto-exchange` | **Minimal** GOA exchange auto-add (default build branch) |
|
||||
| `fix/withdraw-spinner-fallback` | Spinner + OIM; use if spinner still hangs |
|
||||
| `experimental-oim*` | Optional cash UI |
|
||||
|
||||
---
|
||||
|
||||
## Checklist
|
||||
|
||||
- [x] Minimal variant documented
|
||||
- [x] Two stacks (goa / stage)
|
||||
- [x] Flags design (`AUTO_ANDROID` / `AUTO_GUI` / platform defaults)
|
||||
- [x] Linux default = Android suite only
|
||||
- [x] Inference-branch policy
|
||||
- [ ] Wrapper enforces flags in every entry script (incremental)
|
||||
- [ ] Reliable unattended Confirm on low-RAM Linux emulator
|
||||
Loading…
Add table
Add a link
Reference in a new issue