summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2025-05-21 14:21:24 +0200
committerBug Magnet <marco.nikic@mullvad.net>2025-05-27 14:53:32 +0200
commit3c3d04be552478993b17262fa06c3df7ca248b93 (patch)
treeb11def85270d613685c63d471e81e20bfba84127
parentbbf890b10bda837308c05a3de6ac67df5aa2e06e (diff)
downloadmullvadvpn-3c3d04be552478993b17262fa06c3df7ca248b93.tar.xz
mullvadvpn-3c3d04be552478993b17262fa06c3df7ca248b93.zip
Add Swift 6 compatibility to UITests
-rw-r--r--ios/MullvadVPNUITests/Base/BaseUITestCase.swift12
-rw-r--r--ios/MullvadVPNUITests/Base/LoggedInWithTimeUITestCase.swift8
-rw-r--r--ios/MullvadVPNUITests/Base/LoggedOutUITestCase.swift4
-rw-r--r--ios/MullvadVPNUITests/Networking/Networking.swift4
-rw-r--r--ios/MullvadVPNUITests/Networking/TrafficGenerator.swift4
-rw-r--r--ios/MullvadVPNUITests/Pages/Page.swift1
-rw-r--r--ios/MullvadVPNUITests/RelayTests.swift8
-rw-r--r--ios/MullvadVPNUITests/SettingsMigrationTests.swift4
8 files changed, 25 insertions, 20 deletions
diff --git a/ios/MullvadVPNUITests/Base/BaseUITestCase.swift b/ios/MullvadVPNUITests/Base/BaseUITestCase.swift
index d9265ff8ea..71fbbf0b05 100644
--- a/ios/MullvadVPNUITests/Base/BaseUITestCase.swift
+++ b/ios/MullvadVPNUITests/Base/BaseUITestCase.swift
@@ -9,6 +9,7 @@
import Foundation
import XCTest
+@MainActor
class BaseUITestCase: XCTestCase {
let app = XCUIApplication()
static let defaultTimeout = 5.0
@@ -203,20 +204,23 @@ class BaseUITestCase: XCTestCase {
/// Suite level teardown ran after all tests in suite have been executed
override class func tearDown() {
- if shouldUninstallAppInTeardown() && uninstallAppInTestSuiteTearDown() {
- uninstallApp()
+ // This function is not marked `@MainActor` therefore cannot legally enter its context without help
+ Task { @MainActor in
+ if shouldUninstallAppInTeardown() && uninstallAppInTestSuiteTearDown() {
+ uninstallApp()
+ }
}
}
/// Test level setup
- override func setUp() {
+ override func setUp() async throws {
currentTestCaseShouldCapturePackets = false // Reset for each test case run
continueAfterFailure = false
app.launch()
}
/// Test level teardown
- override func tearDown() {
+ override func tearDown() async throws {
if currentTestCaseShouldCapturePackets {
guard let packetCaptureSession = packetCaptureSession else {
XCTFail("Packet capture session unexpectedly not set up")
diff --git a/ios/MullvadVPNUITests/Base/LoggedInWithTimeUITestCase.swift b/ios/MullvadVPNUITests/Base/LoggedInWithTimeUITestCase.swift
index 00fbd24ed0..72847d7e42 100644
--- a/ios/MullvadVPNUITests/Base/LoggedInWithTimeUITestCase.swift
+++ b/ios/MullvadVPNUITests/Base/LoggedInWithTimeUITestCase.swift
@@ -13,8 +13,8 @@ import XCTest
class LoggedInWithTimeUITestCase: BaseUITestCase {
var hasTimeAccountNumber: String?
- override func setUp() {
- super.setUp()
+ override func setUp() async throws {
+ try await super.setUp()
agreeToTermsOfServiceIfShown()
// Make sure that if a previous test ended up in a state where the app got stuck connecting to a relay
@@ -35,8 +35,8 @@ class LoggedInWithTimeUITestCase: BaseUITestCase {
app.launch()
}
- override func tearDown() {
- super.tearDown()
+ override func tearDown() async throws {
+ try await super.tearDown()
guard let hasTimeAccountNumber = self.hasTimeAccountNumber else {
XCTFail("hasTimeAccountNumber unexpectedly not set")
diff --git a/ios/MullvadVPNUITests/Base/LoggedOutUITestCase.swift b/ios/MullvadVPNUITests/Base/LoggedOutUITestCase.swift
index 3414239dc5..9b00ee47ce 100644
--- a/ios/MullvadVPNUITests/Base/LoggedOutUITestCase.swift
+++ b/ios/MullvadVPNUITests/Base/LoggedOutUITestCase.swift
@@ -10,8 +10,8 @@ import Foundation
/// Base class for tests which should start from a logged out state
class LoggedOutUITestCase: BaseUITestCase {
- override func setUp() {
- super.setUp()
+ override func setUp() async throws {
+ try await super.setUp()
agreeToTermsOfServiceIfShown()
logoutIfLoggedIn()
diff --git a/ios/MullvadVPNUITests/Networking/Networking.swift b/ios/MullvadVPNUITests/Networking/Networking.swift
index df814f70c7..09cf550ebc 100644
--- a/ios/MullvadVPNUITests/Networking/Networking.swift
+++ b/ios/MullvadVPNUITests/Networking/Networking.swift
@@ -7,7 +7,7 @@
//
import Foundation
-import Network
+@preconcurrency import Network
import XCTest
enum TransportProtocol: Codable {
@@ -60,7 +60,7 @@ class Networking {
let socketHost = NWEndpoint.Host(host)
let socketPort = try XCTUnwrap(NWEndpoint.Port(port))
let connection = NWConnection(host: socketHost, port: socketPort, using: .tcp)
- var connectionError: Error?
+ nonisolated(unsafe) var connectionError: Error?
let connectionStateDeterminedExpectation = XCTestExpectation(
description: "Completion handler for the reach ad serving domain request is invoked"
diff --git a/ios/MullvadVPNUITests/Networking/TrafficGenerator.swift b/ios/MullvadVPNUITests/Networking/TrafficGenerator.swift
index 590246c5cc..99d4677235 100644
--- a/ios/MullvadVPNUITests/Networking/TrafficGenerator.swift
+++ b/ios/MullvadVPNUITests/Networking/TrafficGenerator.swift
@@ -6,10 +6,10 @@
// Copyright © 2024 Mullvad VPN AB. All rights reserved.
//
-import Network
+@preconcurrency import Network
import XCTest
-class TrafficGenerator {
+class TrafficGenerator: @unchecked Sendable {
let destinationHost: String
let port: Int
var connection: NWConnection
diff --git a/ios/MullvadVPNUITests/Pages/Page.swift b/ios/MullvadVPNUITests/Pages/Page.swift
index c11ac71577..5cb281f70d 100644
--- a/ios/MullvadVPNUITests/Pages/Page.swift
+++ b/ios/MullvadVPNUITests/Pages/Page.swift
@@ -9,6 +9,7 @@
import Foundation
import XCTest
+@MainActor
class Page {
let app: XCUIApplication
diff --git a/ios/MullvadVPNUITests/RelayTests.swift b/ios/MullvadVPNUITests/RelayTests.swift
index fe3d18c509..f1d3c6a501 100644
--- a/ios/MullvadVPNUITests/RelayTests.swift
+++ b/ios/MullvadVPNUITests/RelayTests.swift
@@ -17,14 +17,14 @@ private struct RelayInfo {
class RelayTests: LoggedInWithTimeUITestCase {
var removeFirewallRulesInTearDown = false
- override func setUp() {
- super.setUp()
+ override func setUp() async throws {
+ try await super.setUp()
removeFirewallRulesInTearDown = false
}
- override func tearDown() {
- super.tearDown()
+ override func tearDown() async throws {
+ try await super.tearDown()
if removeFirewallRulesInTearDown {
FirewallClient().removeRules()
diff --git a/ios/MullvadVPNUITests/SettingsMigrationTests.swift b/ios/MullvadVPNUITests/SettingsMigrationTests.swift
index bf616fac2b..64e631deb9 100644
--- a/ios/MullvadVPNUITests/SettingsMigrationTests.swift
+++ b/ios/MullvadVPNUITests/SettingsMigrationTests.swift
@@ -43,8 +43,8 @@ class SettingsMigrationTests: BaseUITestCase {
return false
}
- override func setUp() {
- super.setUp()
+ override func setUp() async throws {
+ try await super.setUp()
agreeToTermsOfServiceIfShown()