diff --git a/scripts/taler-monitoring/android-test/.gitignore b/scripts/taler-monitoring/android-test/.gitignore index fc1fb44..49b08e5 100644 --- a/scripts/taler-monitoring/android-test/.gitignore +++ b/scripts/taler-monitoring/android-test/.gitignore @@ -8,3 +8,4 @@ out-source-gui/ out-gui-chain/ out-matrix-*/ out-stack-run-*/ +out-survey-*/ diff --git a/scripts/taler-monitoring/android-test/GUI-AUTOMATION-NOTES.md b/scripts/taler-monitoring/android-test/GUI-AUTOMATION-NOTES.md index b30472b..18fe398 100644 --- a/scripts/taler-monitoring/android-test/GUI-AUTOMATION-NOTES.md +++ b/scripts/taler-monitoring/android-test/GUI-AUTOMATION-NOTES.md @@ -264,50 +264,76 @@ Scripts **today** implement Android only; they should honour: | **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 | -### Dual-stack run result (2026-07-17 · headless AVD) +### Lageübersicht GOA + stage (as-is survey · 2026-07-17 ~22:05–22:18) -**What ran:** published F-Droid wallet **1.6.1** (`net.taler.wallet.fdroid`), -`run-android-pay-smoke.sh` with **Abheben + Bezahlen**, `SMOKE_STRICT=1`, -per-stack wall **480 s** (no full matrix / no Gradle — time-bounded). -Device: `emulator-5554` (TalerWallet34, headless, SwiftShader). -Host RAM ~**3.7 GiB** (~150 MiB free during run) — under recommended ≥6–8 GiB. +**Device:** headless `emulator-5554` · host ~3.7 GiB RAM (often <300 MiB free) · timeout per leg ≤420 s. +**Legs:** Abheben + Bezahlen (`DO_WITHDRAW=1 DO_PAY=1`). Artefakte: `out-survey-20260717-220527/` (gitignored). -| Stack | Bank / pay entry | Exit | Elapsed | Withdraw URI | Pay URI | wallet-core withdraw | wallet-core pay | ANR | Overall | -|-------|------------------|------|---------|--------------|---------|----------------------|-----------------|-----|---------| -| **goa** | bank.hacktivism.ch · paivana pay-template | **10** | ~106 s | delivered | delivered | **NO** | **NO** | **YES** (System UI) | **FAIL** | -| **stage** (*lefrancpaysan*) | stage.bank… · fermes `panier-legumes` order | **10** | ~176 s | delivered | delivered | **NO** | **NO** | **YES** (Android System) | **FAIL** | +#### Varianten -Neither stack hit the 480 s timeout; both finished under 3 min with hard fail. +| Variante | Quelle | Bemerkung | +|----------|--------|-----------| +| **stable (published)** | F-Droid `net.taler.wallet.fdroid` **1.6.1 / 854** | as-is | +| **master as-is** | rebuild `origin/master` @ `f65a976c` → `.fdroid.debug` | as-is, no patches | +| **ältere Releases** (3/6/9/12 mon) | F-Droid APKs für `1.5.0`/`1.3.0`/`1.1.0`/`1.0.8` | **nicht auffindbar** (HTTP miss) → **SKIP** (kein Selbstbau älterer Tags) | +| **master + inference** (extra) | local branch `local/master-with-inference` @ `3ebe8b09` | merges `fix-bank-withdraw-auto-exchange` + `fix-withdraw-spinner-fallback` · **not pushed** | -**What worked (infra / landings):** +#### Ergebnis-Matrix -- adb install F-Droid APK -- GOA + stage **demo-withdraw.json** returned usable `taler://withdraw/…` -- GOA **pay-template** paivana URI built -- stage merchant **template POST** → `taler://pay/…/fermes-des-collines/…` -- Intent delivery (`am start VIEW`) for withdraw and pay -- Artifacts under `out-stack-run-20260717-215934/{goa,stage}/` (gitignored) +| Variant | Stack | Install / deep-link | Withdraw URI | Pay URI | wallet-core Abheben | wallet-core Pay | ANR | Exit | +|---------|-------|---------------------|--------------|---------|---------------------|-----------------|-----|------| +| stable published | **goa** (hacktivism) | OK | OK bank.hacktivism.ch | OK paivana template | **NO** | soft/YES once* | **YES** | **10** | +| stable published | **stage** (*.lefrancpaysan) | OK | OK stage.bank… | OK fermes order | **NO** | **NO** | **YES** | **10** | +| master as-is | **goa** | OK | OK | OK paivana | **NO** | **NO** | **YES** | **10** | +| master as-is | **stage** | OK | OK | OK fermes | **NO** | **NO** | **YES** | **10** | +| master+inference | **goa** | OK | OK | OK | **NO** | **NO** | **YES** | **10** | +| master+inference | **stage** | OK | OK | OK | **NO** | **NO** | **YES** | **10** | -**What failed (app/GUI on this host):** +\*stable-goa console once reported pay wallet-core YES mid-run; final score still ANR-dominated / not reliable settlement. -- **System UI / Android System ANR** → only Close/Wait; no Confirm/Abheben/Pay taps -- **wallet-core** never showed `prepareBankIntegratedWithdrawal` / pay prepare in logcat -- Chooser noise: **Taler Wallet** + **Taler Wallet Debug** both installed (“Open with”) -- Unattended **Abheben + Bezahlen** not green on this emulator/RAM +#### Was pro Stack **steht** (Infra) -**Interpretation:** +| Check | **goa / hacktivism** | **stage / \*.lefrancpaysan** | +|-------|----------------------|------------------------------| +| Bank `…/intro/demo-withdraw.json` → `taler://withdraw/…` | **OK** | **OK** | +| Pay entry | paivana `pay-template` **OK** | fermes `panier-legumes` POST → `taler://pay/…` **OK** | +| adb `VIEW` Intent delivery | **OK** | **OK** | +| Unattended Confirm/Abheben/Pay GUI | **FAIL (ANR)** | **FAIL (ANR)** | +| wallet-core prepare/accept withdraw in logcat | **not seen** | **not seen** | -| Layer | GOA | stage | -|-------|-----|-------| -| HTTP / bank / merchant reachability for smoke inputs | OK | OK | -| Deep-link plumbing | OK | OK | -| Unattended GUI Confirm → settled | **blocked (ANR)** | **blocked (ANR)** | -| Strict smoke (`SMOKE_STRICT=1`) | fail rc=10 | fail rc=10 | +**Fazit as-is:** Beide Stacks liefern die **Eingänge** (Withdraw- + Pay-URIs). Die **GUI/wallet-core-Strecke** ist auf diesem Emulator für **alle** getesteten App-Varianten (stable, master, inference) **gleich tot** — System UI / Android System ANR, keine brauchbaren Taps. Das ist **kein Stack-Unterschied** GOA vs stage und **kein** belastbarer App-Versions-Vergleich. -**Not a stack-specific regression** between GOA and stage in this run — same failure mode (host/emulator). -Settlement proof remains **host CLI e2e/ladder**, not this Android GUI path, until a device with enough RAM is used. +#### Inference-Patch-Versuch (lokal, **kein Push**) -**Retry when:** physical phone or host with more free RAM; ideally uninstall one of fdroid / fdroid.debug to avoid “Open with”; optional `WINDOWED=0` stays default (headless). +Weil **nichts** der as-is-Varianten wallet-core-grün war, wurde zusätzlich gebaut: + +```text +taler-android branch: local/master-with-inference # NOT pushed +base: origin/master +merged: origin/dev/hernani-inference/fix-bank-withdraw-auto-exchange + origin/dev/hernani-inference/fix-withdraw-spinner-fallback +commit: 3ebe8b091379 +APK: apks/wallet-master-inference-3ebe8b091379.apk (local) +``` + +| Stack | Inference smoke | Besser als master/stable? | +|-------|-----------------|---------------------------| +| goa | exit 10, ANR, no withdraw core | **Nein** | +| stage | exit 10, ANR, no withdraw core | **Nein** | + +**Kein grünes Inference-Signal** auf diesem Host → wir können **nicht** belegen, dass die Patches Withdraw/Pay „retten“. +Ebenso können wir **nicht** belegen, dass master ohne Patches „schuld“ ist: die Umgebung erreicht wallet-core gar nicht. + +> **Wenn später auf Gerät/mehr RAM die Inference-APK plötzlich grün und master/stable rot ist:** +> das ist der **klare Fix-Hinweis** — Patches aus `dev/hernani-inference/*` upstreamen / in master holen. +> **Heute:** noch **nicht** der Fall; primärer Blocker = **Emulator/RAM/ANR**. + +#### Nächste sinnvolle Schritte (später) + +1. Physisches Gerät oder Host ≥6–8 GiB free RAM +2. Nur **eine** Wallet-Package-ID installiert (kein Open-with) +3. Survey wiederholen: stable · master · `local/master-with-inference` auf **goa + stage** +4. Ältere F-Droid-APKs nur wenn wieder gehostet; kein Selbstbau alter Tags ---