--- name: iOS app on: pull_request: paths: - .github/workflows/ios.yml - ios/build-rust-library.sh - ios/.swift-format - ios/wireguard-apple - ios/**/*.swift - ios/**/*.xctestplan workflow_dispatch: permissions: {} jobs: swift-format: name: Run swift format lint runs-on: macos-15 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Run swift format lint run: ./format.sh lint -s working-directory: ios ui-test-build: name: Build for ui tests (staging) runs-on: macos-15 env: SOURCE_PACKAGES_PATH: .spm steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup project uses: ./.github/actions/ios/setup-project-toolchain - name: Build for ui tests run: | set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ -project MullvadVPN.xcodeproj \ -scheme MullvadVPNUITests \ -testPlan MullvadVPNUITestsAll \ -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ -disableAutomaticPackageResolution \ -destination "platform=iOS Simulator,name=iPhone 16" \ clean build-for-testing 2>&1 | xcbeautify working-directory: ios/ test: name: Unit tests runs-on: macos-15-xlarge env: SOURCE_PACKAGES_PATH: .spm steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup project uses: ./.github/actions/ios/setup-project-toolchain - name: Run unit tests run: | set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ -project MullvadVPN.xcodeproj \ -scheme MullvadVPN \ -testPlan MullvadVPNCI \ -destination "platform=iOS Simulator,name=iPhone 16" \ -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ -disableAutomaticPackageResolution \ -resultBundlePath xcode-test-report \ test 2>&1 | xcbeautify working-directory: ios/ - name: Archive test report if: always() run: zip -r test-report.zip ios/xcode-test-report.xcresult - name: Store test report artifact if: always() uses: actions/upload-artifact@v4 with: name: test-report path: test-report.zip