koopa-admin-log/scripts/taler-monitoring/android-test
2026-07-17 21:57:42 +02:00
..
.gitignore android-test: matrix published + stable-self + master builds 2026-07-17 21:31:30 +02:00
GUI-AUTOMATION-NOTES.md android-test: self-build only current stable, not older releases 2026-07-17 21:57:33 +02:00
lib_android_env.sh android-test: gate order stable-self then published; FAIL_FAST default 2026-07-17 21:52:40 +02:00
lib_release_age.sh android-test: sample 3/6/9/12-month wallet tags as WARN only 2026-07-17 21:57:01 +02:00
lib_ui.py monitoring: vanilla Android GUI smoke + AUTOMATED-GUI-NOTES 2026-07-17 21:00:56 +02:00
README.md android-test: self-build only current stable, not older releases 2026-07-17 21:57:33 +02:00
run-android-build-and-smoke.sh android-test: matrix published + stable-self + master builds 2026-07-17 21:31:30 +02:00
run-android-gui-smoke.sh android-test: headless emulator default for GUI smokes 2026-07-17 21:29:52 +02:00
run-android-pay-smoke.sh android-test: SMOKE_STRICT hard-fail on ANR / missing withdraw core 2026-07-17 21:53:04 +02:00
run-android-variant-matrix.sh android-test: document self-build-only-for-current-stable policy in header 2026-07-17 21:57:42 +02:00
run-goa-gui-chain.sh android-test: headless emulator default for GUI smokes 2026-07-17 21:29:52 +02:00
start-android-emulator.sh android-test: headless emulator default for GUI smokes 2026-07-17 21:29:52 +02:00

Android pay smoke

1) Published F-Droid wallet

# needs adb device/emulator
./run-android-pay-smoke.sh
STACK=goa ./run-android-pay-smoke.sh
STACK=stage ./run-android-pay-smoke.sh

APK: F-Droid 1.6.1 (net.taler.wallet.fdroid).

2) Source build + same tests

Builds taler-android at a git ref (:wallet:assembleFdroidDebug), then runs the same smoke (install + withdraw/pay deep-links).

# default: inference fix branch (GOA withdraw reliability)
./run-android-build-and-smoke.sh
# tip of master
BRANCH=master ./run-android-build-and-smoke.sh
# self-build of published stable **tag** (same release as F-Droid 1.6.1)
BRANCH=wallet-1.6.1 LABEL=stable-self ./run-android-build-and-smoke.sh
SKIP_PULL=1 BRANCH=master ./run-android-build-and-smoke.sh
TALER_ANDROID_SRC=/path/to/taler-android ./run-android-build-and-smoke.sh

Built package id: net.taler.wallet.fdroid.debug.
Needs ANDROID_HOME (e.g. $HOME/Android/Sdk), Java 17+, network for Maven.

2b) Variant matrix (published + stable self-build + master)

Runs several smokes so a single odd developer build cannot be the only sample:

Variant What
Order Variant
------ ---------
1 stable-self
2 published
3 older / milestones
4 master

Self-build policy: only current published stable (stable-self) + optional master.
Historical versions: published F-Droid APK only; skip if APK gone.
Milestones: MILESTONE_DAYS="90 180 270 365" (±50d), warn only.
Young releases (≤ 14 days): hard blocker on fail.

./run-android-variant-matrix.sh
STACK=goa ./run-android-variant-matrix.sh
INCLUDE_OLDER=0 VARIANTS=stable-self,published,master ./run-android-variant-matrix.sh
# custom milestones (days):
MILESTONE_DAYS="90 180 270 365" ./run-android-variant-matrix.sh

Artifacts + SUMMARY.txt under out-matrix-<timestamp>/.

3) Graphical UI (vanilla)

Deep-link entry (≡ QR) plus multi-round uiautomator taps:

STACK=goa ./run-android-gui-smoke.sh
STACK=stage ./run-android-gui-smoke.sh
# after source build:
GUI=1 ./run-android-build-and-smoke.sh

4) Full GOA/stage chain (from dev/hernani-inference/gui-workflows)

Bank API mint → withdraw deep-link → taps → template pay → taps:

# needs explorer password + device
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

STACK=stage ./run-goa-gui-chain.sh

Canonical notes (minimal variant, flags, Linux defaults): GUI-AUTOMATION-NOTES.md.

Flag Linux default Meaning
AUTO_ANDROID 1 Run Android adb/APK automation
AUTO_GUI 1 Graphical uiautomator drive (else deep-link only)
AUTO_PLATFORM autolinux Host family; macOS can later pair with iOS out of tree
EMULATOR_HEADLESS 1 No host window (-no-window). Server-safe.
EMULATOR_GPU swiftshader_indirect Guest GLES still active for UI/taps/screenshots
AUTO_START_EMULATOR 1 Auto-start headless AVD if no adb device
WINDOWED 0 WINDOWED=1 → show emulator window
# headless AVD only (default path for servers)
./start-android-emulator.sh --wait
# windowed (laptops)
WINDOWED=1 ./start-android-emulator.sh --wait

See also parent GIT-AUTOMATION-NOTES.md.