ci(android): trust cached fixture APKs - #1479
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
| set -e | ||
| set -eu | ||
| fixture_session=fixture-cache | ||
| cleanup_fixture_session() { |
There was a problem hiding this comment.
P1 — The exact-head Android Smoke job is deterministically broken at this line. reactivecircus/android-emulator-runner@v2.35.0 executes each script: line via a separate sh -c; run 30392465598 fails on cleanup_fixture_session() { with /usr/bin/sh: 1: Syntax error: end of file unexpected (expecting "}"), before install/open/snapshot runs. Keep every line self-contained (for example, a one-line EXIT trap) or move this sequence into a checked-in script, then rerun Android Smoke at the new exact head. The current run provides no live app evidence.
| trap cleanup_fixture_session EXIT | ||
| node --experimental-strip-types src/bin.ts install "${{ steps.fixture-app.outputs.apk-path }}" --platform android | ||
| node --experimental-strip-types src/bin.ts open "${{ steps.fixture-app.outputs.app-id }}" --platform android --session "$fixture_session" --relaunch | ||
| node --experimental-strip-types src/bin.ts snapshot -i --platform android --session "$fixture_session" |
There was a problem hiding this comment.
P2 — After the script-splitting blocker is fixed, this command still does not establish the claimed Android smoke contract: its output is discarded and the step asserts only a zero exit code. The repository device-verification guidance requires snapshot -i --json evidence with androidSnapshot.backend == android-helper and helperVersion equal to the package version, plus an assertion that the intended fixture app/device state was observed. Add a machine-readable assertion here (or in the checked-in smoke script) and rerun it at the new exact head; the current run never reached this line.
|
Re-review clean at 01340c1. The linewise emulator-script failure is fixed, and exact-head Android Smoke now proves the trusted cache-hit to repack/signature verification to source CLI install/open/snapshot/close path, plus replay and helper smoke. Static, coverage, typecheck, integration, and Fallow checks are green; iOS Smoke is still in progress. No remaining code findings. Residual risk: no separately authorized cross-vendor review. |
|
Addressed both Android Smoke review findings in caa75ed. The emulator action now calls one checked-in fixture script, so its install/open/snapshot/close sequence is not split across reactivecircus script invocations. That script retains the JSON snapshot and asserts android-helper backend, helper version equal to package.json, and the Agent Device Tester fixture screen. Added regression coverage for the workflow contract and stale-helper rejection. Validation: pnpm format:check, pnpm typecheck, pnpm lint, node --test test/ci/trusted-fixture-artifact.test.mjs, actionlint, and fixture-cache fallback smoke. |
|
Claude review triage (review completed against the PR diff):
No unresolved actionable Claude findings remain. |
|
Android Smoke diagnosis and fix: the cached APK restore, install, and open all succeeded on 05a3a53. The uploaded snapshot artifact showed the documented CLI response envelope: success=true with the snapshot under data, including appBundleId=com.callstack.agentdevicelab and Android helper metadata. Commit 70ae21f validates that exact envelope and then asserts the foreground package, helper/version, and fixture label. Focused fixture/cache/fallback/actionlint tests and Fallow are green; exact-head CI has restarted. |
|
Re-review clean at 70ae21f. The new checked-in smoke assertion strengthens the evidence: exact-head Android Smoke proves trusted artifact restore, signed APK repack, explicit artifact source, source-CLI install/open, foreground fixture identity, package-version-matched Android helper snapshot, replay, and helper smoke. All completed gates are green; iOS Smoke remains in progress. No remaining code findings. Residual risk: no separately authorized cross-vendor review. |
|
Summary
Scope: Android fixture-cache parity only. PR #1408 merged during implementation, so this PR targets main rather than the former stacked branch. No user-facing docs changed; this is CI-internal behavior documented next to the workflow/action contracts.
Validation