fix(android): name the OEM install dialog on helper install timeouts - #2619
Conversation
The first install of each helper package on some OEM builds (ColorOS) opens the system install-confirmation flow and adb blocks until it is dismissed, so an unattended first snapshot failed with the generic "adb server may be wedged" advice. Route both helper installs through one seam that rewrites that generic hint, keep the timeout classification and install-failure marker, and carry the IME helper's curated advice into its activation diagnostic.
|
Size Report
Startup median (7 runs, lower is better):
|
|
Reviewed at 6eb8195. The code looks correct: helper install timeouts now carry the install-confirmation hint through the shared helper install path, and the unit tests cover the classification with synthetic timeouts. One validation step is left. This is a device-facing error path, and the tests do not show the hint on a real stall. As the PR body notes, the check is Smoke Tests failed in the iOS runner XCTest |
#2619 copied the snapshot helper manifest fixture after #2618 deleted `installArgs` from AndroidSnapshotHelperManifest, so the new fixture failed typecheck on main: the field is parsed by no one and the leniency case is already covered in snapshot-helper.test.ts. Repair for the breakage on main (2cafab3), unrelated to the settings vocabulary refactor it blocks here.
…tion (#2625) * refactor(settings): derive the permission vocabulary from one declaration packages/contracts/src/settings.ts now declares the settings permission actions, modes, app-scoped targets and macOS targets once, and the two parsers, the settings help fragments and its invalid-args message, the public client permission types, and the CLI's membership sets are built from those collections. Accepted names, normalization, error strings, help ordering and daemon positionals are unchanged; no surface widened what it accepts. The macOS action list stays a literal because it is a support fact owned by platform-apple. Part of #2614. * fix(android): drop the manifest installArgs the type no longer declares #2619 copied the snapshot helper manifest fixture after #2618 deleted `installArgs` from AndroidSnapshotHelperManifest, so the new fixture failed typecheck on main: the field is parsed by no one and the leniency case is already covered in snapshot-helper.test.ts. Repair for the breakage on main (2cafab3), unrelated to the settings vocabulary refactor it blocks here.
Summary
The first
adb installof each Android helper package can stall behind an OEM install-confirmationdialog (ColorOS is one), so an unattended first
snapshot -ior test-IME activation failed with thegeneric "adb server may be wedged" advice. Helper installs now name the dialog and the fix.
installAndroidHelperPackageis the shared install seam for the snapshot helper and the test IMEhelper. Timeouts there raise the install-confirmation hint; every other adb call keeps the
wedged-server advice, and app-under-test installs are unchanged.
activateAndroidTestImehelper-unavailable outcomes and theandroid_test_ime_activate_faileddiagnostic now carry the curated hint.
isCommandTimeoutErroris now a type predicate (error is AppError).Closes #2364. 15 files, +428/−16.
Validation
Commit
6eb81957cd.pnpm check:affected --runpassed on that head (756 files / 5659 tests; fallowdead-code and health baselines clean).
pnpm typecheck,pnpm lint,pnpm format:checkpass.Regression proof: reverting each production edit fails its own test — snapshot-helper install timeout,
IME-helper install timeout, curated-hint passthrough,
adb-failurehint policy, and the runtime warndiagnostic.
app-deploymentpins the generic hint for app installs.Unresolved risk: this is device-facing and no ColorOS/OPPO hardware is available here, so there is no
live run of the changed path. Confirming it needs
agent-device --platform android snapshot -ion afresh install on an OPPO Find N6. Integration Tests and Coverage jobs are not observable locally.
Follow-up: the platform-apple host port still declares
isCommandTimeoutError(error): boolean, whichloses narrowing there but does not change runtime behavior.