Skip to content

Disable automated CI triggers; run iOS Maestro E2E on Linux via sim-remote - #1

Merged
jwajgelt merged 3 commits into
mainfrom
jwajgelt/remove-workflow-triggers-1a9474
Aug 27, 2026
Merged

jwajgelt merged 3 commits into
mainfrom
jwajgelt/remove-workflow-triggers-1a9474

Conversation

@jwajgelt

Copy link
Copy Markdown
Member

Summary:

Two infrastructure changes for this fork:

1. Remove automated workflow triggers. This fork doesn't need upstream's CI automation. All push, pull_request/pull_request_target, schedule, issues/issue_comment, and release triggers are replaced with workflow_dispatch, so nothing runs automatically but every workflow can still be run by hand. Reusable workflow_call workflows (only runnable from a dispatched workflow) are untouched.

2. Run the iOS Maestro E2E tests on Linux against remote simulators. The E2E jobs move from macOS runners to ubuntu-latest, driving a remote fleet simulator through sim-remote (softu release, which includes the Maestro shims from software-mansion/radon-cloud#143):

  • .github/actions/maestro-ios: installs libplist-utils (backs the plutil shim), downloads the arch-matched sim-remote binary, sim-remote login to acquire a fleet machine (with a guard so an unset SIM_ROUTER_URL secret doesn't override the baked-in router URL), eval "$(sim-remote install-shims)" before running Maestro, and sim-remote logout on always().
  • maestro-ios.js: uses explicit UDIDs instead of the booted alias (which only resolves locally), opens a sim-remote reverse start <udid> 8081 tunnel in Debug so the app in the remote simulator can reach the runner-local Metro, and falls back from "iPhone … Pro" to any iPhone when picking a device.
  • e2e-ios-rntester.yml: test job moves to ubuntu-latest (the .app is built upstream and downloaded as an artifact).
  • e2e-ios-templateapp.yml: split into a macOS build job (init project, pod install, xcodebuild, upload .app artifact) and a Linux test job (download .app, re-init the project JS-only for Metro in Debug, run Maestro).

Reviewer notes:

  • Running the E2E requires the SIM_ROUTER_USERNAME / SIM_ROUTER_API_KEY repo secrets (SIM_ROUTER_URL optional — a default is baked into the binary).
  • Each matrix flavor (and each retry in test-all.yml) acquires its own fleet machine; queueing is bounded by the 900 s login timeout.
  • Video recording depends on SIGINT reaching the recording shim to finalize the .mov; if flaky, the artifact step simply uploads whatever files exist.

Changelog:

[INTERNAL] [CHANGED] - Disable automated CI triggers on this fork and run iOS Maestro E2E on Linux runners via sim-remote

Test Plan:

  • python3 -c "yaml.safe_load(...)" over every touched workflow/action file — all parse.
  • node --check .github/workflow-scripts/maestro-ios.js — passes. (ESLint not run: no node_modules in the worktree.)
  • On a Linux (aarch64) VM: downloaded the softu sim-remote binary with the exact commands the action uses; verified install-shims, login, logout, reverse start <UDID> <PORT>, and simctl passthrough all exist; eval "$(sim-remote install-shims)" puts all six shims (xcrun, xcodebuild, plutil, applesimutils, open, xcode-select) on PATH and exports SIM_REMOTE_BIN; plistutil is provided by libplist-utils.
  • Not run: a full E2E pass against an actual fleet machine (needs the router secrets configured on the repo).

This fork does not need upstream's CI automation. Replace all push,
pull_request, schedule, issue, and release triggers with
workflow_dispatch so nothing runs automatically; reusable
workflow_call workflows are left untouched.
Move the iOS E2E test jobs from macOS runners to ubuntu-latest,
driving a remote fleet simulator through sim-remote's Maestro shims
(install-shims). The maestro-ios action now installs libplist-utils
(plutil shim), downloads sim-remote from the softu release, logs in
to acquire a machine, and releases it when done. The runner script
passes explicit UDIDs and opens a reverse tunnel for Metro in Debug.
e2e-ios-templateapp is split into a macOS build job that uploads the
.app and a Linux test job that runs Maestro against it.
@jwajgelt
jwajgelt merged commit 919ad26 into main Aug 27, 2026
2 checks passed
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