Skip to content

Test Android VPN integration on API 26 and API 35 emulators - #64

Merged
andre487 merged 6 commits into
mainfrom
test/android-emulator-api26-api35
Oct 6, 2026
Merged

andre487 merged 6 commits into
mainfrom
test/android-emulator-api26-api35

Conversation

@andre487

@andre487 andre487 commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Android CI currently checks screens and persistence under Robolectric without executing Android VPN/TUN/JNI or the real Keystore. Add independent hardware-accelerated API 26 and API 35 scenarios using clean cached AVD snapshots.

Coverage includes real HTTPS traffic to an unpublished HTTP origin; stop/restart and stopping during a stalled SSH handshake; VPN consent denial; notification disconnect and API 35 notification permission denial; encrypted password/key recovery across separate app processes with PASSWORD_ONLY and KEY_ONLY OpenSSH traffic; and actual DocumentsUI export/import/cancellation. Existing deterministic JVM/Robolectric/Go checks remain in place.

The stop-during-start test exposed a lifecycle defect: Stop left the pending JNI startup and its TUN alive until handshake timeout. Track pending startup resources in the service and cancel the native startup context on Stop. Add a localized notification Disconnect action outside Always-on mode.

Both emulator checks have independent successful-ancestor baselines, Bundler/Fastlane entry points, JUnit/Logcat/failure evidence, and release-finalization gates. Update project memory and synchronized English/Russian command references. The disposable API 35 fixture disables its unrelated Pixel Launcher to avoid its ANR dialog obstructing the test activities.

Validation: Python style and 48 tests, native Go tests with the race detector, debug/instrumentation APK builds, and the real stop-during-SSH-start regression on local API 35 pass. GitHub CI passes: API 26 (8/8 scenarios), API 35 (9/9 scenarios), and Android JVM/lint/build checks. Native race/container integration and Python checks passed on the preceding ancestor; only the device-test marker lookup changed afterward.

APK artifacts

Built from commit ceed5d3f by CI run #214.
Artifacts expire after 14 days. Neither APK uses the MegaProxy release key.

@andre487
andre487 marked this pull request as ready for review October 6, 2026 17:47
@andre487
andre487 merged commit e807d97 into main Oct 6, 2026
6 checks passed
@andre487
andre487 deleted the test/android-emulator-api26-api35 branch October 6, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant