--- name: iOS test screenshots on: pull_request: types: - closed branches: - main paths: - .github/workflows/ios.yml - ios/.swiftformat - ios/**/*.swift - ios/**/*.xctestplan workflow_dispatch: permissions: {} jobs: test: if: github.event.pull_request.merged || github.event_name == 'workflow_dispatch' name: Screenshot tests runs-on: macos-15-xlarge env: SOURCE_PACKAGES_PATH: .spm TEST_ACCOUNT: ${{ secrets.IOS_TEST_ACCOUNT_NUMBER }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Configure cache uses: actions/cache@v3 with: path: ios/${{ env.SOURCE_PACKAGES_PATH }} key: ${{ runner.os }}-spm-${{ hashFiles('ios/**/Package.resolved') }} restore-keys: | ${{ runner.os }}-spm- - name: Setup go-lang uses: actions/setup-go@v3 with: go-version: 1.21.13 - name: Configure Xcode uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '16.1' - name: Configure Rust run: | rustup default stable rustup update stable rustup target add aarch64-apple-ios-sim - name: Configure Xcode project run: | for file in *.xcconfig.template ; do cp $file ${file//.template/} ; done sed -i "" \ "/HAS_TIME_ACCOUNT_NUMBER =/ s#= .*#= 1234123412341234#" \ UITests.xcconfig working-directory: ios/Configurations - name: Install zip run: | brew update brew install zip - name: Install xcbeautify run: | brew update brew install xcbeautify - name: Install protobuf run: | brew update brew install protobuf - name: Run screenshot tests run: | set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ -project MullvadVPN.xcodeproj \ -scheme MullvadVPN \ -testPlan MullvadVPNScreenshots \ -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 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