diff --git a/.github/workflows/ios-screenshots.yml b/.github/workflows/ios-screenshots-creation.yml similarity index 98% rename from .github/workflows/ios-screenshots.yml rename to .github/workflows/ios-screenshots-creation.yml index 9b98e8c87563..f48116678aa8 100644 --- a/.github/workflows/ios-screenshots.yml +++ b/.github/workflows/ios-screenshots-creation.yml @@ -1,5 +1,5 @@ --- -name: iOS screenshots +name: iOS create screenshots on: push: tags: diff --git a/.github/workflows/ios-screenshots-tests.yml b/.github/workflows/ios-screenshots-tests.yml new file mode 100644 index 000000000000..6d2efe9d9649 --- /dev/null +++ b/.github/workflows/ios-screenshots-tests.yml @@ -0,0 +1,75 @@ +--- +name: iOS test screenshots +on: + pull_request: + types: + - closed + branches: + - main + paths: + - .github/workflows/ios.yml + - ios/.swiftformat + - ios/**/*.swift + - ios/**/*.xctestplan + workflow_dispatch: +jobs: + test: + if: github.event.pull_request.merged + name: Screenshot tests + runs-on: macos-13-xlarge + env: + SOURCE_PACKAGES_PATH: .spm + TEST_ACCOUNT: ${{ secrets.IOS_TEST_ACCOUNT_NUMBER }} + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - 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.19.5 + + - name: Set up yeetd to workaround XCode being slow in CI + run: | + wget https://github.com/biscuitehh/yeetd/releases/download/1.0/yeetd-normal.pkg + sudo installer -pkg yeetd-normal.pkg -target / + yeetd & + - name: Configure Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + - name: Configure Rust + run: rustup target add aarch64-apple-ios-sim + + - name: Configure Xcode project + run: | + cp Base.xcconfig.template Base.xcconfig + cp App.xcconfig.template App.xcconfig + cp PacketTunnel.xcconfig.template PacketTunnel.xcconfig + cp Screenshots.xcconfig.template Screenshots.xcconfig + sed -i "" "s/MULLVAD_ACCOUNT_TOKEN = /MULLVAD_ACCOUNT_TOKEN = $TEST_ACCOUNT/g" Screenshots.xcconfig + working-directory: ios/Configurations + + - name: Install xcbeautify + run: | + brew update + brew install xcbeautify + + - 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 15" \ + -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ + test 2>&1 | xcbeautify + working-directory: ios/ diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index a76a674eaaf8..fad2c4d17852 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -46,7 +46,6 @@ jobs: runs-on: macos-13-xlarge env: SOURCE_PACKAGES_PATH: .spm - TEST_ACCOUNT: ${{ secrets.IOS_TEST_ACCOUNT_NUMBER }} steps: - name: Checkout repository uses: actions/checkout@v3 @@ -82,7 +81,6 @@ jobs: cp App.xcconfig.template App.xcconfig cp PacketTunnel.xcconfig.template PacketTunnel.xcconfig cp Screenshots.xcconfig.template Screenshots.xcconfig - sed -i "" "s/MULLVAD_ACCOUNT_TOKEN = /MULLVAD_ACCOUNT_TOKEN = $TEST_ACCOUNT/g" Screenshots.xcconfig working-directory: ios/Configurations - name: Install xcbeautify @@ -99,11 +97,4 @@ jobs: -destination "platform=iOS Simulator,name=iPhone 15" \ -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ test 2>&1 | xcbeautify - set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ - -project MullvadVPN.xcodeproj \ - -scheme MullvadVPN \ - -testPlan MullvadVPNScreenshots \ - -destination "platform=iOS Simulator,name=iPhone 15" \ - -clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \ - test 2>&1 | xcbeautify working-directory: ios/