Skip to content

test(ios): add local semantic checks across Duo pose transitions #2731

Description

@thymikee

Part of #2725.

Decision: local-only Duo regression coverage for now

The maintainer explicitly approved keeping Duo coverage local until GitHub Actions supports it. Deliver a repeatable local scenario and evidence; automatic PR/scheduled selection is NOT a completion condition for this issue. Clearly label it local/manual coverage, never automatic regression coverage. No new self-hosted runner or hosted-toolchain installation is requested.

Investigation of CI availability (2026-09-21)

Dependencies and scope

Prerequisite: PR #2724 must be merged, or explicitly base the test PR on its branch. Do not duplicate its input fix. #2728/#2729/#2730 are not prerequisites for a semantic interaction replay: do not assert their new metadata or forced-fallback behavior here.

Reuse the fixture app and existing replay/test harness; no new framework or CI/gate registration. Pin DEVELOPER_DIR to a Duo-capable Xcode, accept an explicit UDID/session, and document the runtime and Device Hub Accessibility prerequisites. If the fold helper reports device-hub-window-missing, report actionable setup failure rather than skipping. The investigation observed this with a real window on a second host display; moving it to the main display restored pose control. Include that workaround without claiming the window is absent.

Required scenario

  1. Verify the correct fixture surface and select a local test session.
  2. Exercise closed -> half-open -> open -> closed. After each fold, capture fresh state, press a visible selector/ref, and assert the selected tab or another activation-dependent app counter changed.
  3. On open, scroll and assert a newly visible canary; long-press and assert its dedicated count increments.
  4. Run one multipointer pinch canary and assert recognized scale change, not onFinalize or transport success. Derive its coordinates from the current target bounds rather than portrait constants. Reuse the existing gesture-lab fixture.
  5. Never reuse refs across pose changes or mutations. Save failure artifacts, clean up the session, and restore the starting pose where safely possible.

Acceptance

  • One documented local command reproduces the scenario using the existing harness.
  • Publish the tested commit, toolchain/runtime, command, semantic results, and remote-accessible result summary in the PR.
  • Demonstrate a wrong-display or geometry mutation makes a semantic assertion fail, then restore and pass.
  • Run relevant harness tests and affected gates. Do not require an automatic Duo job or weaken the ordinary iPhone CI lane.
  • Record future GHA enablement as deferred work, with the admission requirements: Duo runtime/device type, working Device Hub pose controls/permissions, and an actual successful lane run.

Implementation can start on #2724's branch with its PR base/dependency explicit. Do not merge ahead of the prerequisite. Follow AGENTS.md and manual-session hygiene.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions