T-iOS-1: ios/ XcodeGen project (iOS 17, Swift 6 strict concurrency, ATS per PLAN §5.2), 5 SPM package shells, CI skeleton T-iOS-2: Origin spike vs real server — URLSessionWebSocketTask custom Origin CONFIRMED (no Starscream); 16MiB replay + EMSGSIZE(40) errno correction written back to plan T-iOS-3: WireProtocol frozen contract, 59 tests, 100% line coverage, cross-impl vectors vs src/protocol.ts via tsx T-iOS-4: FakeTransport/FakeClock/FakeHTTPTransport doubles Verify: independent agent re-ran all acceptance — 6/6 PASS
46 lines
1.4 KiB
YAML
46 lines
1.4 KiB
YAML
# iOS CI skeleton (T-iOS-1). T-iOS-16 hardens this: real Node-server
|
|
# integration tests + the per-package 80% coverage gate (PLAN_IOS_CLIENT §9).
|
|
name: ios
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- "ios/**"
|
|
- ".github/workflows/ios.yml"
|
|
pull_request:
|
|
paths:
|
|
- "ios/**"
|
|
- ".github/workflows/ios.yml"
|
|
|
|
jobs:
|
|
package-tests:
|
|
runs-on: macos-15
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
package: [WireProtocol, SessionCore, HostRegistry, APIClient]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Select Xcode 16.3
|
|
run: sudo xcode-select -s /Applications/Xcode_16.3.app/Contents/Developer
|
|
- name: swift test (${{ matrix.package }})
|
|
run: swift test --package-path ios/Packages/${{ matrix.package }}
|
|
|
|
app-build:
|
|
runs-on: macos-15
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Select Xcode 16.3
|
|
run: sudo xcode-select -s /Applications/Xcode_16.3.app/Contents/Developer
|
|
- name: Install XcodeGen
|
|
run: brew install xcodegen
|
|
- name: Generate project
|
|
run: cd ios && xcodegen generate
|
|
- name: Build (iPhone 16 simulator)
|
|
run: |
|
|
xcodebuild -project ios/WebTerm.xcodeproj -scheme WebTerm \
|
|
-destination 'platform=iOS Simulator,name=iPhone 16' \
|
|
CODE_SIGNING_ALLOWED=NO build
|
|
- name: swift test (IntegrationTests scaffold)
|
|
run: swift test --package-path ios/IntegrationTests
|