summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2023-12-08 15:52:44 +0100
committerBug Magnet <marco.nikic@mullvad.net>2023-12-08 15:52:44 +0100
commit6873304ac722cd1c96020a8d4dda4942beebc886 (patch)
tree2b2a99f4eb45fe9f92423e9b3a85254b4508a9f7
parent4c496be6791da025c9f9e555727def1e7e660537 (diff)
parenta4d678b4409dfdc959c62987c6385bc0581b91c2 (diff)
downloadmullvadvpn-6873304ac722cd1c96020a8d4dda4942beebc886.tar.xz
mullvadvpn-6873304ac722cd1c96020a8d4dda4942beebc886.zip
Merge branch 'fix-the-screenshot-automation-ios-405'
-rw-r--r--.github/workflows/ios-screenshots.yml65
-rw-r--r--.github/workflows/ios.yml11
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme2
-rw-r--r--ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift1
-rw-r--r--ios/MullvadVPNScreenshots/MullvadVPNScreenshots.swift10
-rw-r--r--ios/Snapfile8
6 files changed, 88 insertions, 9 deletions
diff --git a/.github/workflows/ios-screenshots.yml b/.github/workflows/ios-screenshots.yml
new file mode 100644
index 0000000000..5453e84500
--- /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 cf1941a165..a76a674eaa 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 bd48a92aef..9e2f372416 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme
@@ -23,7 +23,7 @@
</BuildActionEntries>
</BuildAction>
<TestAction
- buildConfiguration = "Debug"
+ buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift b/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift
index dbe1e62d11..ea790a8c28 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 56e6f5e4fa..77a8380f4e 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
diff --git a/ios/Snapfile b/ios/Snapfile
index a3be439b60..95dd009cf7 100644
--- a/ios/Snapfile
+++ b/ios/Snapfile
@@ -1,9 +1,9 @@
# A list of devices you want to take the screenshots from
devices([
- "iPhone 8 Plus", # 5.5"
- "iPhone 11 Pro Max", # 6.5"
- "iPhone 14 Pro Max", # 6.7"
- "iPad Pro (12.9-inch) (2nd generation)",
+ "iPhone SE (3rd generation)",
+ "iPhone 15 Pro",
+ "iPhone 15 Pro Max",
+ "iPad Pro (11-inch) (4th generation)",
"iPad Pro (12.9-inch) (6th generation)"
])