From 881c4c4b0b517708f058010a616d9bef271df39a Mon Sep 17 00:00:00 2001 From: Jon Petersson Date: Wed, 6 Dec 2023 11:22:18 +0100 Subject: [PATCH 1/2] Fix screenshots test --- .../View controllers/Settings/SettingsHeaderView.swift | 1 - ios/MullvadVPNScreenshots/MullvadVPNScreenshots.swift | 10 ++++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift b/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift index dbe1e62d113f..ea790a8c281b 100644 --- a/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift +++ b/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift @@ -32,7 +32,6 @@ class SettingsHeaderView: UITableViewHeaderFooterView { let collapseButton: UIButton = { let button = UIButton(type: .custom) button.accessibilityIdentifier = "CollapseButton" - button.isAccessibilityElement = false button.tintColor = .white return button }() diff --git a/ios/MullvadVPNScreenshots/MullvadVPNScreenshots.swift b/ios/MullvadVPNScreenshots/MullvadVPNScreenshots.swift index 56e6f5e4faad..77a8380f4eaf 100644 --- a/ios/MullvadVPNScreenshots/MullvadVPNScreenshots.swift +++ b/ios/MullvadVPNScreenshots/MullvadVPNScreenshots.swift @@ -87,8 +87,14 @@ class MullvadVPNScreenshots: XCTestCase { cityCell.buttons["CollapseButton"].tap() snapshot("SelectLocation") - // Tap the "Done" button to dismiss the "Select location" controller - app.navigationBars.buttons.firstMatch.tap() + // Tap the "Filter" button and expand each relay filter + app.navigationBars.buttons["Filter"].tap() + app.otherElements["Ownership"].buttons["CollapseButton"].tap() + app.otherElements["Providers"].buttons["CollapseButton"].tap() + snapshot("RelayFilter") + + app.navigationBars.buttons["Cancel"].tap() + app.navigationBars.buttons["Done"].tap() } // Open Settings From a4d678b4409dfdc959c62987c6385bc0581b91c2 Mon Sep 17 00:00:00 2001 From: Jon Petersson Date: Wed, 6 Dec 2023 13:03:43 +0100 Subject: [PATCH 2/2] Run screenshots action on Github --- .github/workflows/ios-screenshots.yml | 65 +++++++++++++++++++ .github/workflows/ios.yml | 11 +++- .../xcschemes/MullvadVPNScreenshots.xcscheme | 2 +- ios/Snapfile | 8 +-- 4 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/ios-screenshots.yml diff --git a/.github/workflows/ios-screenshots.yml b/.github/workflows/ios-screenshots.yml new file mode 100644 index 000000000000..5453e8450051 --- /dev/null +++ b/.github/workflows/ios-screenshots.yml @@ -0,0 +1,65 @@ +--- +name: iOS screenshots +on: + push: + tags: + - ios/* + workflow_dispatch: +jobs: + test: + name: Take screenshots + 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: Create screenshots + 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 cf1941a16552..a76a674eaaf8 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -46,6 +46,7 @@ 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 @@ -81,6 +82,7 @@ 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 @@ -88,7 +90,7 @@ jobs: brew update brew install xcbeautify - - name: Run tests + - name: Run unit tests run: | set -o pipefail && env NSUnbufferedIO=YES xcodebuild \ -project MullvadVPN.xcodeproj \ @@ -97,4 +99,11 @@ 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/ 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 @@