diff --git a/.github/workflows/ios-screenshots.yml b/.github/workflows/ios-screenshots.yml new file mode 100644 index 000000000000..abd4be70e15e --- /dev/null +++ b/.github/workflows/ios-screenshots.yml @@ -0,0 +1,107 @@ +--- +name: iOS screenshots +on: + pull_request: + paths: + - .github/workflows/ios.yml + - ios/.swiftformat + - ios/**/*.swift + - ios/**/*.xctestplan + tags: + - ios/* + workflow_dispatch: +jobs: + check-formatting: + name: Check formatting + runs-on: macos-13-xlarge + steps: + - name: Install SwiftFormat + run: | + brew update + brew upgrade swiftformat + + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check formatting + run: | + swiftformat --version + swiftformat --lint . + working-directory: ios + + swiftlint: + name: Run swiftlint + runs-on: macos-13-xlarge + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Run swiftlint + run: | + brew install swiftlint + swiftlint --version + swiftlint --reporter github-actions-logging + working-directory: ios + + test: + name: Unit 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 x86_64-apple-ios + + - 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: Bundle + run: bundle install + working-directory: ios + + - name: Install xcbeautify + run: | + brew update + brew install xcbeautify + + - name: Run screenshot tests + run: bundle exec fastlane snapshot + working-directory: ios/ + + - name: Upload screenshot artifacts + uses: actions/upload-artifact@v3 + with: + name: ios-screenshots + path: ios/Screenshots diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 5f4342002dc0..554c9971ac91 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -83,11 +83,6 @@ jobs: cp Screenshots.xcconfig.template Screenshots.xcconfig working-directory: ios/Configurations - - name: Install xcbeautify - run: | - brew update - brew install xcbeautify - - name: Run tests run: | set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme index bd48a92aef4a..9e2f37241665 100644 --- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme +++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme @@ -23,7 +23,7 @@