Repository navigation
Test Android VPN integration on API 26 and API 35 emulators - #64
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
ceed5d3fby CI run #214.Artifacts expire after 14 days. Neither APK uses the MegaProxy release key.