Repository navigation
feat(hardware-button): press phone volume and power keys once - #3859
Conversation
|
Size Report
Startup median (7 runs, lower is better):
|
51f3fb4 to
06c07c3
Compare
PR #3859 validation evidence — hardware-button (#3848) — round 5Current head Round-5 review items and dispositions1. Limrun Android hardware-button cells (reviewer finding). Added: 2. Device-SDK build (reviewer finding). Run on the round-5 working tree, which is byte-identical to this head under Exit code 0; build products and Prior-round Swift unit+UI bundle run (449 tests, 0 failures) was at the pre-rebase tree 3. Design simplifications (reviewer suggestion) — measured:
Live Android re-verificationBuilt-source CLI ( At the shared-helper head ( At the final head ( Sessions closed, daemons stopped gracefully, volume restored, state dirs removed. Gates at this headBase
Prior Coverage-lane failure — facts and dispositionThe prior head's Coverage CI lane recorded 1 failed test out of 16,703 passed (58 skipped). It is not a coverage-threshold or uncovered-line failure. The failure is one assertion in Facts, without asserting attribution either way: this diff touches zero daemon-server/daemon-client/upload/lease files (diff stat: none); the test passes solo and the full provider-integration project passes solo (65 files / 204 tests, 44.76s) at this head locally; the daemon quiesce/shutdown seam around this behavior was rewritten upstream after the failed run's base ( |
|
Thanks for the PR. At 06c07c3 I found two problems, and I think both need to be fixed before merge. Limrun Android refuses the new buttons. The iOS device branch has never been compiled or run. The only branch that presses is Could the design be smaller? Export On CI, Smoke Tests looks unrelated to this change. The log shows TEST BUILD SUCCEEDED, then "The Apple runner budget ran out before this step began" with no assertion, and the later Swift test bundles ran with 0 failures. Coverage is unclear. The log I read stops mid-run with no failed test or threshold report, so I cannot attribute it. Two limits on this review. I did not compile the Swift device branch, so I have not confirmed that Before merge, please declare the hardware-button cells on Limrun Android, or narrow the help, docs and issue claim. Then please post the device-SDK runner build at the new head. |
06c07c3 to
066cb0d
Compare
|
Round 5 addressed; head is now 1. Limrun Android cells — added. 2. Device-SDK build — done at this head. 3. Smaller design — adopted where measurable, rejected with numbers where not.
Prior Coverage-lane failure at Local gates at |
|
The PR is ready at 066cb0d. Both earlier issues are fixed: the Limrun Android cells are now declared, and the device-SDK build is posted. All 19 checks pass, and the earlier Coverage failure in remote-upload-lease-beat.test.ts did not recur. This diff does not touch the upload or lease code. No conflicts. It is ready for human review. Not blocking: the three-line comment after I did not run the iOS build-for-testing; the TEST BUILD SUCCEEDED result comes from your transcript. No physical iPhone run exists, so the XCUIDevice volume press is compiled but not exercised. I did not rerun your eager-closure and fallow-complexity measurements. I ran no live presses through the Appium legs or a live Limrun Android session. The Limrun cell uses the same Android interactor and scoped adb path that home and app-switcher already use there. |
Closes #3848
Summary
Adds
hardware-button <volume-up|volume-down|power>: one press of a phone hardware key, never foregrounding the session app. Single press; no aliases, hold, or raw codes; an unknown/missing positional refusesINVALID_ARGSbefore device dispatch. The buttons join the existingSYSTEM_BUTTONSfamily, so every owner's typed family denial covers them until it declares a cell. Android (ADB/helper; Appium viamobile: pressKey24/25/26; Limrun shares the same phone/TV rule) presses all three on phones/tablets. A physical iPhone/iPad presses volume via the local runner (XCUIDevice) or Appiummobile: pressButton; power is unsupported on every Apple leaf; iOS Simulators, Android TV and tvOS refuse (TV: usetv-remote— #3817's merged TV buttons stay the TV route). Only scope edit: registry line-cap ratchet 2179→2192 (chore(gates)commit, additive descriptor).Latent provider bug, untouched: Android webdriver
home/appSwitcherlegs callmobile: pressButton, whichappium-uiautomator2-driverdoes not implement.Validation
Head
066cb0d742(rebased onto71eae2adcd; round-5: shared Limrun/local phone-TV fact builder, shared positionals parser). device-SDKbuild-for-testing AgentDeviceRunner -destination 'generic/platform=iOS'→ TEST BUILD SUCCEEDED (exit 0). Exact-headcheck:affected --runreceipt and live emulator transcript: evidence comment on this PR. This PR's Swift delta is unchanged since its unit+UI run (449 tests, 0 failures). Not verified live: physical iPhone volume and Appium legs (no such device/session here) — fail-closed and fact/unit-covered. CI device lanes are the remote obligation.