Skip to content

[Test][Android] Add Sandbox compatibility acceptance gate - #131

Open
Huxpro wants to merge 1 commit into
tiktok:agent/android-resource-fetcher-runtime-fixfrom
Huxpro:agent/android-device-acceptance
Open

[Test][Android] Add Sandbox compatibility acceptance gate#131
Huxpro wants to merge 1 commit into
tiktok:agent/android-resource-fetcher-runtime-fixfrom
Huxpro:agent/android-device-acceptance

Conversation

@Huxpro

@Huxpro Huxpro commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Matrix

  • compatibility: 3 tests
    • real bundle via page typed template fetcher
    • fixed 320x480 Lynx viewport
    • shared density 3.25 across two independent Lynx views via public LynxContext.screenMetrics
    • default PART_ON_LAYOUT strategy
    • fixed viewport + MULTI_THREADS rejected before view or Activity creation
    • all safe page thread strategies (ALL_ON_UI, MOST_ON_TASM, PART_ON_LAYOUT, MULTI_THREADS without a fixed viewport) render a real bundle
    • pre-load listener runs with the bridge ready and before template fetch
    • global per-page fetcher factory is invoked
  • retry: 1 end-to-end test
    • FAIL -> FAIL -> SUCCESS
    • fresh retry token and stale-token rejection
    • release invalidation
    • legacy non-retry error view
  • orientation: 6 isolated tests
    • typed landscape and portrait
    • explicit SYSTEM over global landscape
    • canonical screen_orientation
    • unset Android system behavior
    • embedded view does not mutate host orientation

Reproduce on SG1

ANDROID_HOME=/data00/home/xuan.huang/android-sdk \
  scripts/android-device-acceptance.sh

The script builds both APKs, leases a fresh Lynx Sandbox device, installs, runs all 10 tests in isolated app processes, captures screenshots/logs/hashes, releases the lease, and creates a tarball. It requires an exact clean checkout and fails closed unless the release response confirms the leased serial.

Final evidence

  • exact commit: df875a87541d587ab8aa84a86600c0610f9e44c7
  • SG1 clean checkout: /data00/home/xuan.huang/sparkling-android-device-acceptance-final-8a2b3ea
  • Sandbox device: aries_10, Android 10 / API 29
  • verdict: 10/10 PASS
  • evidence: /tmp/sparkling-android-device-acceptance-df875a8
  • archive: /tmp/sparkling-android-device-acceptance-df875a8.tar.gz
  • archive SHA-256: 712a3b83dbd78eabeae9afc0766b5b191cee0bff10e515967b3ae9f46c4feb98
  • lease released and ADB disconnected

Stack

Add a reproducible Playground-host instrumentation matrix for fixed viewport, shared density, all supported safe thread strategies, typed template fetching, pre-load lifecycle ordering, orientation policy, and failed-view retry behavior.

The runner builds on SG1, requires an exact clean checkout, leases a fresh Lynx Sandbox device, executes ten isolated tests, captures screenshots and hashes, and fails closed unless the lease release is confirmed.

TEST: PATH=/tmp/sparkling-ktlint-bin:$PATH scripts/lint.sh kotlin

TEST: EXPECTED_HEAD=<exact-sha> EVIDENCE_ROOT=<evidence-dir> scripts/android-device-acceptance.sh

Co-authored-by: TRAE CLI <noreply@bytedance.com>
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