diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index b8a544293..6b079c2f4 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -1,8 +1,10 @@ name: iOS on: + # No push trigger for t3/ios-mvf: PR #10 (t3/ios-mvf -> main) already tests every merge into + # it, and carries full-ui so the audit runs there. A push run would take a second macOS slot. push: - branches: [main, t3/ios-mvf] + branches: [main] paths: - "ios/**" - "!ios/**/*.md" @@ -65,9 +67,9 @@ jobs: xcodebuild -version swift --version - # Booting takes 2 to 3 minutes and needs nothing from the build, so it runs alongside the - # steps below; the UI test step waits for it. - - name: Boot the Simulator in the background + # Booting in the background was tried and dropped: on the runner's 3 cores it slowed + # swift test and the builds by about 6 minutes to save 2:40. xcodebuild boots it at test time. + - name: Find the Simulator run: | runtime="com.apple.CoreSimulator.SimRuntime.iOS-${SIM_OS//./-}" udid="$(xcrun simctl list devices available -j \ @@ -79,7 +81,6 @@ jobs: exit 1 fi echo "SIM_UDID=$udid" >> "$GITHUB_ENV" - nohup xcrun simctl bootstatus "$udid" -b > "$RUNNER_TEMP/simulator-boot.log" 2>&1 & # The package's drift test compares the vendored server schemas with the server's own copies: # the checkout's files once that branch merges, else the t3/server branch, which the shallow @@ -141,12 +142,6 @@ jobs: -destination "generic/platform=iOS" CODE_SIGNING_ALLOWED=NO COMPILER_INDEX_STORE_ENABLE=NO HOUSESCAN_GIT_COMMIT="${GITHUB_SHA::12}" build - - name: Wait for the Simulator - timeout-minutes: 10 - run: | - xcrun simctl bootstatus "$SIM_UDID" -b - echo "Booted $SIM_NAME on iOS $SIM_OS ($SIM_UDID)." - - name: UI test the whole flow in the Simulator # Replays the committed synthetic wall (ios/HouseScanUITests/Fixtures/synthetic-wall) with # -autopilot and the bundled sample result. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8d9706e0..96183e649 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,7 +33,7 @@ The `size:*` label describes the effective diff. It is a review signal, not a me | Label PR size | a pull request opens or updates | none | | TestFlight | someone runs it from the Actions tab | none | -The iOS UI tests skip the every-state accessibility audit on pull requests, because it adds about 10 minutes and macOS runners are scarce. Add the `full-ui` label when a pull request changes screens or copy; pushes to `t3/ios-mvf` and `main` always run it. +The iOS UI tests skip the every-state accessibility audit on pull requests, because it adds about 10 minutes and macOS runners are scarce. Add the `full-ui` label when a pull request changes screens or copy; pushes to `main` always run it, and PR #10 (`t3/ios-mvf` into `main`) carries the label, so every merge into `t3/ios-mvf` runs it once. `make check` runs the three local suites. They need uv, Node 24 with pnpm, and Xcode 26 or newer; each directory's README has details. No check is required by branch rules yet. Don't call one required until the rules require its status.