diff options
| author | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-21 14:21:24 +0200 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-27 14:53:32 +0200 |
| commit | 3c3d04be552478993b17262fa06c3df7ca248b93 (patch) | |
| tree | b11def85270d613685c63d471e81e20bfba84127 | |
| parent | bbf890b10bda837308c05a3de6ac67df5aa2e06e (diff) | |
| download | mullvadvpn-3c3d04be552478993b17262fa06c3df7ca248b93.tar.xz mullvadvpn-3c3d04be552478993b17262fa06c3df7ca248b93.zip | |
Add Swift 6 compatibility to UITests
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() |
