The project combines fast local tests with connected Compose coverage, real emulator configurations, a physical Motorola Razr, release-artifact audits, and written evidence that records what passed and what remains.
Validation strategy
Start narrow, broaden with risk
Routine development preserves Gradle caches and starts with the smallest affected task. Broader checks are added only after targeted behavior passes or when integration risk requires them.
The current 40-test Tablet suite exercises UI semantics, navigation, dialogs, adaptive layouts, accessibility reflow, Favorites traversal, and device behavior.
./gradlew :app:connectedDebugAndroidTestStatic
Compilation and lint
Kotlin compilation catches layer and type failures early; Android lint checks resources, manifests, API usage, accessibility, and packaging concerns.
Release AAB/APK signatures, registered upload certificate, production manifest, dependencies, backup exclusions, and 16 KB packaging are audited separately.
validate-protected-play-bundle-linux.py
Device coverage
Real Android configurations
Window width, platform level, runtime page size, accessibility scale, network state, and physical hinge posture are separate test dimensions—not aliases for a single phone emulator.
Configuration
Purpose
Verified result
API 26 phone
Minimum supported Android 8 runtime
Pass prior 36/36 connected coverage
API 36 phone
Target Android 16 behavior, edge-to-edge, predictive Back
Pass 27/27 readiness suite
API 35 · 16 KB
Modern runtime memory-page compatibility
Pass APK, ELF, and runtime checks
Pixel Fold
Foldable window states and compact/expanded transitions
Pass open-state suite and focused regressions
Pixel Tablet
Expanded portrait/landscape and two-pane behavior
Pass current 40/40 connected suite
Motorola Razr 2023 · Android 16
OEM behavior, notification navigation, local mention controls, and physical hinge lifecycle
Navigation, Player station cards, account headers, dialogs, and list content remain operable at Android's 2× text setting with enlarged display size. Prior maximum-settings coverage passes 39/39.
A full VIP/RIP list preserves stable list instances, avoids unrelated recomputation, and traverses end to end while keeping sort and request state responsive.
Five API 35 debug-emulator cold launches measured 948–986 ms with a 969 ms median. This is diagnostic evidence, not a physical-device or Play performance claim.
All five stations have representative public and authenticated validation covering their supported metadata, Queue, account, Chat, Favorites, request, and secondary-page boundaries.
The Ubuntu path keeps the keystore in memory-backed storage, uses non-persistent Gradle inputs, verifies the exact registered upload certificate, and removes temporary material.
The Android workflow checks out the candidate, configures JDK 17 and Android 36, and runs tests, lint, and debug assembly. A separate Pages workflow builds the canonical privacy notice and project portal with Jekyll before deployment from main.
Milestone records distinguish automated results, emulator observations, physical-device checks, assumptions, and work that still requires Play or owner access.