diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/AuthenticationChallengeResponseProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/AuthenticationChallengeResponseProxyAPITests.swift index 7c872303a17b..40d2b11c4ebe 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/AuthenticationChallengeResponseProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/AuthenticationChallengeResponseProxyAPITests.swift @@ -2,40 +2,41 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class AuthenticationChallengeResponseProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct AuthenticationChallengeResponseProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiAuthenticationChallengeResponse(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor( pigeonApi: api, disposition: UrlSessionAuthChallengeDisposition.useCredential, credential: URLCredential()) - XCTAssertNotNil(instance) + #expect(instance != nil) } - func testDisposition() { + @Test func disposition() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiAuthenticationChallengeResponse(registrar) let instance = AuthenticationChallengeResponse( disposition: .useCredential, credential: URLCredential()) - let value = try? api.pigeonDelegate.disposition(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.disposition(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, UrlSessionAuthChallengeDisposition.useCredential) + #expect(value == UrlSessionAuthChallengeDisposition.useCredential) } - func testCredential() { + @Test func credential() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiAuthenticationChallengeResponse(registrar) let instance = AuthenticationChallengeResponse( disposition: .useCredential, credential: URLCredential()) - let value = try? api.pigeonDelegate.credential(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.credential(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.credential) + #expect(value == instance.credential) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ColorProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ColorProxyAPITests.swift index 977b5ed75ea3..6735405271ce 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ColorProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ColorProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -10,15 +11,15 @@ import XCTest import UIKit #endif -class ColorProxyAPITests: XCTestCase { +@Suite struct ColorProxyAPITests { #if os(iOS) - func testPigeonDefaultConstructor() { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIColor(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor( pigeonApi: api, red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) - XCTAssertNotNil(instance) + #expect(instance != nil) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ErrorProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ErrorProxyAPITests.swift index dc0af4c1c5fc..95dd7252d48f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ErrorProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ErrorProxyAPITests.swift @@ -2,41 +2,42 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class ErrorProxyAPITests: XCTestCase { - func testCode() { +@Suite struct ErrorProxyAPITests { + @Test func code() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiNSError(registrar) let code = 0 let instance = NSError(domain: "", code: code) - let value = try? api.pigeonDelegate.code(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.code(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, Int64(code)) + #expect(value == Int64(code)) } - func testDomain() { + @Test func domain() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiNSError(registrar) let domain = "domain" let instance = NSError(domain: domain, code: 0) - let value = try? api.pigeonDelegate.domain(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.domain(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, domain) + #expect(value == domain) } - func testUserInfo() { + @Test func userInfo() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiNSError(registrar) let userInfo: [String: String?] = ["some": "info"] let instance = NSError(domain: "", code: 0, userInfo: userInfo as [String: Any]) - let value = try? api.pigeonDelegate.userInfo(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.userInfo(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value as! [String: String?], userInfo) + #expect(value as! [String: String?] == userInfo) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FWFWebViewFlutterWKWebViewExternalAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FWFWebViewFlutterWKWebViewExternalAPITests.swift index ab09029b345a..cc6e10ba8c70 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FWFWebViewFlutterWKWebViewExternalAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FWFWebViewFlutterWKWebViewExternalAPITests.swift @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview @@ -15,8 +16,8 @@ import XCTest #error("Unsupported platform.") #endif -class FWFWebViewFlutterWKWebViewExternalAPITests: XCTestCase { - @MainActor func testWebViewForIdentifier() { +@Suite struct FWFWebViewFlutterWKWebViewExternalAPITests { + @MainActor @Test func webViewForIdentifier() throws { let registry = TestRegistry() #if os(iOS) @@ -36,23 +37,23 @@ class FWFWebViewFlutterWKWebViewExternalAPITests: XCTestCase { let result = FWFWebViewFlutterWKWebViewExternalAPI.webView( forIdentifier: Int64(webViewIdentifier), withPluginRegistry: registry) - XCTAssertEqual(result, webView) + #expect(result == webView) } - @MainActor func testWebViewForIdentifierHandlesIncorrectRegistry() { + @MainActor @Test func webViewForIdentifierHandlesIncorrectRegistry() throws { let registry = TestRegistry() // Ensure that passing an empty registry, such as the FlutterAppDelegate // in an app that has adopted UIScene, gracefully returns nil. let result = FWFWebViewFlutterWKWebViewExternalAPI.webView( forIdentifier: 0, withPluginRegistry: registry) - XCTAssertEqual(result, nil) + #expect(result == nil) } // FlutterPluginRegistrar.valuePublished(byPlugin:) is not available on macOS. This // can be removed once this method becomes available. // See https://github.com/flutter/flutter/issues/186911. #if os(iOS) - @MainActor func testWebViewForIdentifierFromRegistrar() { + @MainActor @Test func webViewForIdentifierFromRegistrar() throws { let registry = TestRegistry() #if os(iOS) @@ -72,16 +73,16 @@ class FWFWebViewFlutterWKWebViewExternalAPITests: XCTestCase { let result = FWFWebViewFlutterWKWebViewExternalAPI.webView( forIdentifier: Int64(webViewIdentifier), withPluginRegistrar: registrar) - XCTAssertEqual(result, webView) + #expect(result == webView) } - @MainActor func testWebViewForIdentifierHandlesIncorrectRegistrar() { + @MainActor @Test func webViewForIdentifierHandlesIncorrectRegistrar() throws { let registrar = TestFlutterPluginRegistrar() // Ensure that passing an empty registry, such as the FlutterAppDelegate // in an app that has adopted UIScene, gracefully returns nil. let result = FWFWebViewFlutterWKWebViewExternalAPI.webView( forIdentifier: 0, withPluginRegistrar: registrar) - XCTAssertEqual(result, nil) + #expect(result == nil) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FrameInfoProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FrameInfoProxyAPITests.swift index c421d53d7746..4bc3cfc8124e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FrameInfoProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/FrameInfoProxyAPITests.swift @@ -2,45 +2,46 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview @MainActor -class FrameInfoProxyAPITests: XCTestCase { - @MainActor func testIsMainFrame() { +@Suite struct FrameInfoProxyAPITests { + @MainActor @Test func isMainFrame() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKFrameInfo(registrar) let instance = TestFrameInfo.instance - let value = try? api.pigeonDelegate.isMainFrame(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.isMainFrame(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.isMainFrame) + #expect(value == instance.isMainFrame) } - @MainActor func testRequest() { + @MainActor @Test func request() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKFrameInfo(registrar) let instance = TestFrameInfo.instance - let value = try? api.pigeonDelegate.request(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.request(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value?.value, instance.request) + #expect(value?.value == instance.request) } - @MainActor func testNilRequest() { + @MainActor @Test func nilRequest() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKFrameInfo(registrar) let instance = TestFrameInfoWithNilRequest.instance - let value = try? api.pigeonDelegate.request(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.request(pigeonApi: api, pigeonInstance: instance) // On macOS 15.5+, `WKFrameInfo.request` returns with an empty URLRequest. // Previously it would return nil so accept either. if value != nil { - XCTAssertEqual(value?.value.url?.absoluteString, "") + #expect(value?.value.url?.absoluteString == "") } else { - XCTAssertNil(value) + #expect(value == nil) } } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/GetTrustResultResponseProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/GetTrustResultResponseProxyAPITests.swift index bb4c91d53e88..5f2a56fd380e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/GetTrustResultResponseProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/GetTrustResultResponseProxyAPITests.swift @@ -2,28 +2,29 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class GetTrustResultResponseProxyAPITests: XCTestCase { - func testResult() { +@Suite struct GetTrustResultResponseProxyAPITests { + @Test func result() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiGetTrustResultResponse(registrar) let instance = GetTrustResultResponse(result: SecTrustResultType.invalid, resultCode: -1) - let value = try? api.pigeonDelegate.result(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.result(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, DartSecTrustResultType.invalid) + #expect(value == DartSecTrustResultType.invalid) } - func testResultCode() { + @Test func resultCode() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiGetTrustResultResponse(registrar) let instance = GetTrustResultResponse(result: SecTrustResultType.invalid, resultCode: -1) - let value = try? api.pigeonDelegate.resultCode(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.resultCode(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, -1) + #expect(value == -1) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieProxyAPITests.swift index 21a0b04b2cee..9843f647d20e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieProxyAPITests.swift @@ -2,33 +2,34 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class HTTPCookieProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct HTTPCookieProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiHTTPCookie(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor( pigeonApi: api, properties: [.name: "foo", .value: "bar", .domain: "http://google.com", .path: "/anything"]) - XCTAssertNotNil(instance) + #expect(instance != nil) } - func testGetProperties() { + @Test func getProperties() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiHTTPCookie(registrar) let instance = HTTPCookie(properties: [ .name: "foo", .value: "bar", .domain: "http://google.com", .path: "/anything", ])! - let value = try? api.pigeonDelegate.getProperties(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getProperties(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value?[.name] as? String, "foo") - XCTAssertEqual(value?[.value] as? String, "bar") - XCTAssertEqual(value?[.domain] as? String, "http://google.com") - XCTAssertEqual(value?[.path] as? String, "/anything") + #expect(value?[.name] as? String == "foo") + #expect(value?[.value] as? String == "bar") + #expect(value?[.domain] as? String == "http://google.com") + #expect(value?[.path] as? String == "/anything") } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift index 7d17082be682..c34f7901b2b6 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift @@ -2,13 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class HTTPCookieStoreProxyAPITests: XCTestCase { - @MainActor func testSetCookie() { +@Suite struct HTTPCookieStoreProxyAPITests { + @MainActor @Test func setCookie() async throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKHTTPCookieStore(registrar) @@ -18,26 +19,24 @@ class HTTPCookieStoreProxyAPITests: XCTestCase { .path: "/anything", ])! - let expect = expectation(description: "Wait for setCookie.") - api.pigeonDelegate.setCookie( - pigeonApi: api, - pigeonInstance: instance!, - cookie: cookie - ) { - result in - switch result { - case .success(_): - XCTAssertEqual(instance!.setCookieArg, cookie) - case .failure(let error): - XCTFail("\(error)") + try await withCheckedThrowingContinuation { continuation in + api.pigeonDelegate.setCookie( + pigeonApi: api, + pigeonInstance: instance!, + cookie: cookie + ) { result in + switch result { + case .success(_): + continuation.resume() + case .failure(let error): + continuation.resume(throwing: error) + } } - expect.fulfill() } - - wait(for: [expect], timeout: 1.0) + #expect(instance!.setCookieArg == cookie) } - @MainActor func testGetCookies() { + @MainActor @Test func getCookies() async throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKHTTPCookieStore(registrar) @@ -52,23 +51,20 @@ class HTTPCookieStoreProxyAPITests: XCTestCase { instance!.allCookies = [cookie1, cookie2] // Test fetching all cookies - let expectAll = expectation(description: "Wait for getAllCookies.") - api.pigeonDelegate.getAllCookies( - pigeonApi: api, - pigeonInstance: instance! - ) { result in - switch result { - case .success(let cookies): - XCTAssertEqual(cookies.count, 2) - XCTAssertTrue(cookies.contains(cookie1)) - XCTAssertTrue(cookies.contains(cookie2)) - case .failure(let error): - XCTFail("\(error)") + let cookies = try await withCheckedThrowingContinuation { continuation in + api.pigeonDelegate.getAllCookies( + pigeonApi: api, + pigeonInstance: instance! + ) { result in + switch result { + case .success(let cookies): + continuation.resume(returning: cookies) + case .failure(let error): + continuation.resume(throwing: error) + } } - expectAll.fulfill() } - - wait(for: [expectAll], timeout: 1.0) + #expect(cookies == [cookie1, cookie2]) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPURLResponseProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPURLResponseProxyAPITests.swift index c6d71551848a..ec0e04569b0e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPURLResponseProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPURLResponseProxyAPITests.swift @@ -2,19 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class HTTPURLResponseProxyAPITests: XCTestCase { - func testStatusCode() { +@Suite struct HTTPURLResponseProxyAPITests { + @Test func statusCode() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiHTTPURLResponse(registrar) let instance = HTTPURLResponse( url: URL(string: "http://google.com")!, statusCode: 400, httpVersion: nil, headerFields: nil)! - let value = try? api.pigeonDelegate.statusCode(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.statusCode(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, Int64(instance.statusCode)) + #expect(value == Int64(instance.statusCode)) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NSObjectProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NSObjectProxyAPITests.swift index 8b0285e88067..25b1ea8d29f3 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NSObjectProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NSObjectProxyAPITests.swift @@ -2,20 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class ObjectProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct ObjectProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiNSObject(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api) - XCTAssertNotNil(instance) + #expect(instance != nil) } - func testAddObserver() { + @Test func addObserver() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiNSObject(registrar) @@ -23,30 +24,30 @@ class ObjectProxyAPITests: XCTestCase { let observer = NSObject() let keyPath = "myString" let options: [KeyValueObservingOptions] = [.newValue] - try? api.pigeonDelegate.addObserver( + try api.pigeonDelegate.addObserver( pigeonApi: api, pigeonInstance: instance, observer: observer, keyPath: keyPath, options: options) var nativeOptions: NSKeyValueObservingOptions = [] nativeOptions.insert(.new) - XCTAssertEqual(instance.addObserverArgs, [observer, keyPath, nativeOptions.rawValue]) + #expect(instance.addObserverArgs == [observer, keyPath, nativeOptions.rawValue]) } - func testRemoveObserver() { + @Test func removeObserver() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiNSObject(registrar) let instance = TestObject() let object = NSObject() let keyPath = "myString" - try? api.pigeonDelegate.removeObserver( + try api.pigeonDelegate.removeObserver( pigeonApi: api, pigeonInstance: instance, observer: object, keyPath: keyPath) - XCTAssertEqual(instance.removeObserverArgs, [object, keyPath]) + #expect(instance.removeObserverArgs == [object, keyPath]) } - func testObserveValue() { + @Test func observeValue() throws { let api = TestObjectApi() let registrar = TestProxyApiRegistrar() @@ -56,7 +57,7 @@ class ObjectProxyAPITests: XCTestCase { let change = [NSKeyValueChangeKey.indexesKey: -1] instance.observeValue(forKeyPath: keyPath, of: object, change: change, context: nil) - XCTAssertEqual(api.observeValueArgs, [keyPath, object, [KeyValueChangeKey.indexes: -1]]) + #expect(api.observeValueArgs == [keyPath, object, [KeyValueChangeKey.indexes: -1]]) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationActionProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationActionProxyAPITests.swift index 3c6d20210cd2..8de004406432 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationActionProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationActionProxyAPITests.swift @@ -2,40 +2,41 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class NavigationActionProxyAPITests: XCTestCase { - @MainActor func testRequest() { +@Suite struct NavigationActionProxyAPITests { + @MainActor @Test func request() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationAction(registrar) let instance: TestNavigationAction? = TestNavigationAction() - let value = try? api.pigeonDelegate.request(pigeonApi: api, pigeonInstance: instance!) + let value = try api.pigeonDelegate.request(pigeonApi: api, pigeonInstance: instance!) - XCTAssertEqual(value?.value, instance!.request) + #expect(value.value == instance!.request) } - @MainActor func testTargetFrame() { + @MainActor @Test func targetFrame() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationAction(registrar) let instance: TestNavigationAction? = TestNavigationAction() - let value = try? api.pigeonDelegate.targetFrame(pigeonApi: api, pigeonInstance: instance!) + let value = try api.pigeonDelegate.targetFrame(pigeonApi: api, pigeonInstance: instance!) - XCTAssertEqual(value, instance!.targetFrame) + #expect(value == instance!.targetFrame) } - @MainActor func testNavigationType() { + @MainActor @Test func navigationType() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationAction(registrar) let instance: TestNavigationAction? = TestNavigationAction() - let value = try? api.pigeonDelegate.navigationType(pigeonApi: api, pigeonInstance: instance!) + let value = try api.pigeonDelegate.navigationType(pigeonApi: api, pigeonInstance: instance!) - XCTAssertEqual(value, .formSubmitted) + #expect(value == .formSubmitted) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift index 9068f818f0b2..a091445e78b5 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift @@ -2,21 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class NavigationDelegateProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct NavigationDelegateProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationDelegate(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testDidFinishNavigation() { + @MainActor @Test func didFinishNavigation() throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) @@ -24,60 +25,54 @@ class NavigationDelegateProxyAPITests: XCTestCase { instance.webView(webView, didFinish: nil) - XCTAssertEqual(api.didFinishNavigationArgs, [webView, webView.url?.absoluteString]) + #expect(api.didFinishNavigationArgs == [webView, webView.url?.absoluteString]) } - @MainActor func testDidStartProvisionalNavigation() { + @MainActor @Test func didStartProvisionalNavigation() throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) let webView = TestWebView(frame: .zero) instance.webView(webView, didStartProvisionalNavigation: nil) - XCTAssertEqual(api.didStartProvisionalNavigationArgs, [webView, webView.url?.absoluteString]) + #expect(api.didStartProvisionalNavigationArgs == [webView, webView.url?.absoluteString]) } - @MainActor func testDecidePolicyForNavigationAction() { + @MainActor @Test func decidePolicyForNavigationAction() async throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) let webView = WKWebView(frame: .zero) let navigationAction = TestNavigationAction() - let callbackExpectation = expectation(description: "Wait for callback.") - var result: WKNavigationActionPolicy? - instance.webView(webView, decidePolicyFor: navigationAction) { policy in - result = policy - callbackExpectation.fulfill() + let result = await withCheckedContinuation { continuation in + instance.webView(webView, decidePolicyFor: navigationAction) { policy in + continuation.resume(returning: policy) + } } - wait(for: [callbackExpectation], timeout: 1.0) - - XCTAssertEqual(api.decidePolicyForNavigationActionArgs, [webView, navigationAction]) - XCTAssertEqual(result, .allow) + #expect(api.decidePolicyForNavigationActionArgs == [webView, navigationAction]) + #expect(result == .allow) } - @MainActor func testDecidePolicyForNavigationResponse() { + @MainActor @Test func decidePolicyForNavigationResponse() async throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) let webView = WKWebView(frame: .zero) let navigationResponse = TestNavigationResponse.instance - var result: WKNavigationResponsePolicy? - let callbackExpectation = expectation(description: "Wait for callback.") - instance.webView(webView, decidePolicyFor: navigationResponse) { policy in - result = policy - callbackExpectation.fulfill() + let result = await withCheckedContinuation { continuation in + instance.webView(webView, decidePolicyFor: navigationResponse) { policy in + continuation.resume(returning: policy) + } } - wait(for: [callbackExpectation], timeout: 1.0) - - XCTAssertEqual(api.decidePolicyForNavigationResponseArgs, [webView, navigationResponse]) - XCTAssertEqual(result, .cancel) + #expect(api.decidePolicyForNavigationResponseArgs == [webView, navigationResponse]) + #expect(result == .cancel) } - @MainActor func testDidFailNavigation() { + @MainActor @Test func didFailNavigation() throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) @@ -85,10 +80,10 @@ class NavigationDelegateProxyAPITests: XCTestCase { let error = NSError(domain: "", code: 12) instance.webView(webView, didFail: nil, withError: error) - XCTAssertEqual(api.didFailNavigationArgs, [webView, error]) + #expect(api.didFailNavigationArgs == [webView, error]) } - @MainActor func testDidFailProvisionalNavigation() { + @MainActor @Test func didFailProvisionalNavigation() throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) @@ -96,20 +91,20 @@ class NavigationDelegateProxyAPITests: XCTestCase { let error = NSError(domain: "", code: 12) instance.webView(webView, didFailProvisionalNavigation: nil, withError: error) - XCTAssertEqual(api.didFailProvisionalNavigationArgs, [webView, error]) + #expect(api.didFailProvisionalNavigationArgs == [webView, error]) } - @MainActor func testWebViewWebContentProcessDidTerminate() { + @MainActor @Test func webViewWebContentProcessDidTerminate() throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) let webView = WKWebView(frame: .zero) instance.webViewWebContentProcessDidTerminate(webView) - XCTAssertEqual(api.webViewWebContentProcessDidTerminateArgs, [webView]) + #expect(api.webViewWebContentProcessDidTerminateArgs == [webView]) } - @MainActor func testDidReceiveAuthenticationChallenge() { + @MainActor @Test func didReceiveAuthenticationChallenge() async throws { let api = TestNavigationDelegateApi() let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) @@ -118,22 +113,17 @@ class NavigationDelegateProxyAPITests: XCTestCase { protectionSpace: URLProtectionSpace(), proposedCredential: nil, previousFailureCount: 3, failureResponse: nil, error: nil, sender: TestURLAuthenticationChallengeSender()) - var dispositionResult: URLSession.AuthChallengeDisposition? - var credentialResult: URLCredential? - let callbackExpectation = expectation(description: "Wait for callback.") - instance.webView(webView, didReceive: challenge) { disposition, credential in - dispositionResult = disposition - credentialResult = credential - callbackExpectation.fulfill() + let (dispositionResult, credentialResult) = await withCheckedContinuation { continuation in + instance.webView(webView, didReceive: challenge) { disposition, credential in + continuation.resume(returning: (disposition, credential)) + } } - wait(for: [callbackExpectation], timeout: 1.0) - - XCTAssertEqual(api.didReceiveAuthenticationChallengeArgs, [webView, challenge]) - XCTAssertEqual(dispositionResult, .useCredential) - XCTAssertEqual(credentialResult?.user, "user1") - XCTAssertEqual(credentialResult?.password, "password1") - XCTAssertEqual(credentialResult?.persistence, URLCredential.Persistence.none) + #expect(api.didReceiveAuthenticationChallengeArgs == [webView, challenge]) + #expect(dispositionResult == .useCredential) + #expect(credentialResult?.user == "user1") + #expect(credentialResult?.password == "password1") + #expect(credentialResult?.persistence == URLCredential.Persistence.none) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift index 1d5bce66ca96..da3b9b802e38 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift @@ -2,30 +2,31 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class NavigationResponseProxyAPITests: XCTestCase { - @MainActor func testResponse() { +@Suite struct NavigationResponseProxyAPITests { + @MainActor @Test func response() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationResponse(registrar) let instance = TestNavigationResponse.instance let value = try? api.pigeonDelegate.response(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.response) + #expect(value == instance.response) } - @MainActor func testIsForMainFrame() { + @MainActor @Test func isForMainFrame() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationResponse(registrar) let instance = TestNavigationResponse.instance - let value = try? api.pigeonDelegate.isForMainFrame(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.isForMainFrame(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.isForMainFrame) + #expect(value == instance.isForMainFrame) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PlatformViewImplTests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PlatformViewImplTests.swift index be9a9ff1b64e..d65317f82f4e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PlatformViewImplTests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PlatformViewImplTests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -10,16 +11,16 @@ import XCTest import UIKit #endif -class PlatformViewImplTests: XCTestCase { +@Suite @MainActor struct PlatformViewImplTests { #if os(iOS) - func testPlatformViewImplStoresViewWithAWeakReference() { + @Test func platformViewImplStoresViewWithAWeakReference() throws { var view: UIView? = UIView() let platformView = PlatformViewImpl(uiView: view!) - XCTAssertNotNil(platformView.uiView) + #expect(platformView.uiView != nil) view = nil - XCTAssertNil(platformView.uiView) + #expect(platformView.uiView == nil) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PreferencesProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PreferencesProxyAPITests.swift index 150f8cd45cb8..08eea4ec933f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PreferencesProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/PreferencesProxyAPITests.swift @@ -2,15 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class PreferencesProxyAPITests: XCTestCase { - @MainActor func testSetJavaScriptEnabled() throws { +@Suite struct PreferencesProxyAPITests { + @MainActor @Test func setJavaScriptEnabled() throws { if #available(iOS 14.0, macOS 11.0, *) { - throw XCTSkip("Required API is not available for this test.") + return } else { let registrar = TestProxyApiRegistrar() @@ -18,14 +19,14 @@ class PreferencesProxyAPITests: XCTestCase { let instance = WKPreferences() let enabled = true - try? api.pigeonDelegate.setJavaScriptEnabled( + try api.pigeonDelegate.setJavaScriptEnabled( pigeonApi: api, pigeonInstance: instance, enabled: enabled) - XCTAssertEqual(instance.javaScriptEnabled, enabled) + #expect(instance.javaScriptEnabled == enabled) } } - @MainActor func testSetJavaScriptCanOpenWindowsAutomatically() throws { + @MainActor @Test func setJavaScriptCanOpenWindowsAutomatically() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKPreferences(registrar) @@ -34,6 +35,6 @@ class PreferencesProxyAPITests: XCTestCase { try api.pigeonDelegate.setJavaScriptCanOpenWindowsAutomatically( pigeonApi: api, pigeonInstance: instance, enabled: enabled) - XCTAssertEqual(instance.javaScriptCanOpenWindowsAutomatically, enabled) + #expect(instance.javaScriptCanOpenWindowsAutomatically == enabled) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift index 984899896d28..54c44109a610 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift @@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class ProxyAPIRegistrarTests: XCTestCase { - func testLogFlutterMethodFailureDoesNotThrowAnError() { +@Suite struct ProxyAPIRegistrarTests { + // Method should log a message and not throw an error. DO NOT add 'throws' to this + // test, as it is here to enforce that the method doesn't throw. + @Test func logFlutterMethodFailureDoesNotThrowAnError() { let registrar = TestProxyApiRegistrar() - XCTExpectFailure("Method should log a message and not throw an error.") { - XCTAssertThrowsError( - registrar.logFlutterMethodFailure( - PigeonError(code: "code", message: "message", details: nil), methodName: "aMethod")) - } + registrar.logFlutterMethodFailure( + PigeonError(code: "code", message: "message", details: nil), methodName: "aMethod") } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageHandlerProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageHandlerProxyAPITests.swift index f12e7e7909ac..4942cd2be465 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageHandlerProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageHandlerProxyAPITests.swift @@ -2,21 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class ScriptMessageHandlerProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct ScriptMessageHandlerProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKScriptMessageHandler(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testDidReceiveScriptMessage() { + @MainActor @Test func didReceiveScriptMessage() throws { let api = TestScriptMessageHandlerApi() let registrar = TestProxyApiRegistrar() let instance = ScriptMessageHandlerImpl(api: api, registrar: registrar) @@ -25,7 +26,7 @@ class ScriptMessageHandlerProxyAPITests: XCTestCase { instance.userContentController(controller, didReceive: message) - XCTAssertEqual(api.didReceiveScriptMessageArgs, [controller, message]) + #expect(api.didReceiveScriptMessageArgs == [controller, message]) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageProxyAPITests.swift index 17d3b7f0560c..d9ce2d033f17 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScriptMessageProxyAPITests.swift @@ -2,30 +2,31 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class ScriptMessageProxyAPITests: XCTestCase { - @MainActor func testName() { +@Suite struct ScriptMessageProxyAPITests { + @MainActor @Test func name() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKScriptMessage(registrar) let instance = TestScriptMessage() let value = try? api.pigeonDelegate.name(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.name) + #expect(value == instance.name) } - @MainActor func testBody() { + @MainActor @Test func body() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKScriptMessage(registrar) let instance = TestScriptMessage() - let value = try? api.pigeonDelegate.body(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.body(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value as! Int, 23) + #expect(value as! Int == 23) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewDelegateProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewDelegateProxyAPITests.swift index 4de3fbedcfcb..328bcb2f62d1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewDelegateProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewDelegateProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -10,17 +11,17 @@ import XCTest import UIKit #endif -class ScrollViewDelegateProxyAPITests: XCTestCase { +@Suite struct ScrollViewDelegateProxyAPITests { #if os(iOS) - func testPigeonDefaultConstructor() { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollViewDelegate(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testScrollViewDidScroll() { + @MainActor @Test func scrollViewDidScroll() throws { let api = TestScrollViewDelegateApi() let registrar = TestProxyApiRegistrar() let instance = ScrollViewDelegateImpl(api: api, registrar: registrar) @@ -30,7 +31,7 @@ class ScrollViewDelegateProxyAPITests: XCTestCase { scrollView.contentOffset = CGPoint(x: x, y: y) instance.scrollViewDidScroll(scrollView) - XCTAssertEqual(api.scrollViewDidScrollArgs, [scrollView, x, y]) + #expect(api.scrollViewDidScrollArgs == [scrollView, x, y]) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift index 91e6c1bffd5f..2df1b783d9a5 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -10,144 +11,144 @@ import XCTest import UIKit #endif -class ScrollViewProxyAPITests: XCTestCase { +@Suite struct ScrollViewProxyAPITests { #if os(iOS) - @MainActor func testGetContentOffset() { + @MainActor @Test func getContentOffset() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView(frame: .zero) - let value = try? api.pigeonDelegate.getContentOffset(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getContentOffset(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, [instance.contentOffset.x, instance.contentOffset.y]) + #expect(value == [instance.contentOffset.x, instance.contentOffset.y] as [Double]) } - @MainActor func testScrollBy() { + @MainActor @Test func scrollBy() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView(frame: .zero) instance.contentOffset = CGPoint(x: 1.0, y: 1.0) - try? api.pigeonDelegate.scrollBy(pigeonApi: api, pigeonInstance: instance, x: 1.0, y: 1.0) + try api.pigeonDelegate.scrollBy(pigeonApi: api, pigeonInstance: instance, x: 1.0, y: 1.0) - XCTAssertEqual(instance.setContentOffsetArgs as? [Double], [2.0, 2.0]) + #expect(instance.setContentOffsetArgs as? [Double] == [2.0, 2.0]) } - @MainActor func testSetContentOffset() { + @MainActor @Test func setContentOffset() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView(frame: .zero) let x = 1.0 let y = 1.0 - try? api.pigeonDelegate.setContentOffset(pigeonApi: api, pigeonInstance: instance, x: x, y: y) + try api.pigeonDelegate.setContentOffset(pigeonApi: api, pigeonInstance: instance, x: x, y: y) - XCTAssertEqual(instance.setContentOffsetArgs as? [Double], [x, y]) + #expect(instance.setContentOffsetArgs as? [Double] == [x, y]) } - @MainActor func testSetDelegate() { + @MainActor @Test func setDelegate() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView(frame: .zero) let delegate = ScrollViewDelegateImpl( api: registrar.apiDelegate.pigeonApiUIScrollViewDelegate(registrar), registrar: registrar) - try? api.pigeonDelegate.setDelegate( + try api.pigeonDelegate.setDelegate( pigeonApi: api, pigeonInstance: instance, delegate: delegate) - XCTAssertEqual(instance.setDelegateArgs, [delegate]) + #expect(instance.setDelegateArgs == [delegate]) } @MainActor - func testSetBounces() { + @Test func setBounces() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setBounces(pigeonApi: api, pigeonInstance: instance, value: value) + try api.pigeonDelegate.setBounces(pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.bounces, value) + #expect(instance.bounces == value) } #if compiler(>=6.0) @available(iOS 17.4, *) @MainActor - func testSetBouncesHorizontally() { + @Test func setBouncesHorizontally() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setBouncesHorizontally( + try api.pigeonDelegate.setBouncesHorizontally( pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.bouncesHorizontally, value) + #expect(instance.bouncesHorizontally == value) } @available(iOS 17.4, *) @MainActor - func testSetBouncesVertically() { + @Test func setBouncesVertically() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setBouncesVertically( + try api.pigeonDelegate.setBouncesVertically( pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.bouncesVertically, value) + #expect(instance.bouncesVertically == value) } #endif @MainActor - func testSetAlwaysBounceVertical() { + @Test func setAlwaysBounceVertical() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setAlwaysBounceVertical( + try api.pigeonDelegate.setAlwaysBounceVertical( pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.alwaysBounceVertical, value) + #expect(instance.alwaysBounceVertical == value) } @MainActor - func testSetAlwaysBounceHorizontal() { + @Test func setAlwaysBounceHorizontal() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setAlwaysBounceHorizontal( + try api.pigeonDelegate.setAlwaysBounceHorizontal( pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.alwaysBounceHorizontal, value) + #expect(instance.alwaysBounceHorizontal == value) } - @MainActor func testSetShowsVerticalScrollIndicator() { + @MainActor @Test func setShowsVerticalScrollIndicator() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setShowsVerticalScrollIndicator( + try api.pigeonDelegate.setShowsVerticalScrollIndicator( pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.showsVerticalScrollIndicator, value) + #expect(instance.showsVerticalScrollIndicator == value) } - @MainActor func testSetShowsHorizontalScrollIndicator() { + @MainActor @Test func setShowsHorizontalScrollIndicator() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) let instance = TestScrollView() let value = true - try? api.pigeonDelegate.setShowsHorizontalScrollIndicator( + try api.pigeonDelegate.setShowsHorizontalScrollIndicator( pigeonApi: api, pigeonInstance: instance, value: value) - XCTAssertEqual(instance.showsHorizontalScrollIndicator, value) + #expect(instance.showsHorizontalScrollIndicator == value) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecCertificateProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecCertificateProxyAPITests.swift index f338ed70b812..0652cf322c3b 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecCertificateProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecCertificateProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -14,7 +15,7 @@ import XCTest #error("Unsupported platform.") #endif -class SecCertificateProxyAPITests: XCTestCase { +@Suite struct SecCertificateProxyAPITests { func createDummyCertificate() -> SecCertificate { let url = FlutterAssetManager().urlForAsset("assets/test_cert.der")! let certificateData = NSData(contentsOf: url) @@ -22,15 +23,15 @@ class SecCertificateProxyAPITests: XCTestCase { return SecCertificateCreateWithData(nil, certificateData!)! } - func testCopyData() { + @Test func copyData() throws { let registrar = TestProxyApiRegistrar() let delegate = TestSecCertificateProxyAPIDelegate() let api = PigeonApiSecCertificate(pigeonRegistrar: registrar, delegate: delegate) - let value = try? api.pigeonDelegate.copyData( + let value = try api.pigeonDelegate.copyData( pigeonApi: api, certificate: SecCertificateWrapper(value: createDummyCertificate())) - XCTAssertEqual(value?.data, delegate.data) + #expect(value.data == delegate.data) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecTrustProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecTrustProxyAPITests.swift index 1088ee522eec..28fdc1814bce 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecTrustProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecTrustProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -14,7 +15,7 @@ import XCTest #error("Unsupported platform.") #endif -class SecTrustProxyAPITests: XCTestCase { +@Suite struct SecTrustProxyAPITests { func createTrust(delegate: TestSecTrustProxyAPIDelegate) -> SecTrustWrapper { var trust: SecTrust? SecTrustCreateWithCertificates( @@ -23,74 +24,70 @@ class SecTrustProxyAPITests: XCTestCase { return SecTrustWrapper(value: trust!) } - func testEvaluateWithError() { + @Test func evaluateWithError() async throws { let registrar = TestProxyApiRegistrar() let delegate = TestSecTrustProxyAPIDelegate() let api = PigeonApiSecTrust(pigeonRegistrar: registrar, delegate: delegate) - let expect = expectation(description: "Wait for setCookie.") - let trust = createTrust(delegate: delegate) - var resultValue: Bool? - - api.pigeonDelegate.evaluateWithError(pigeonApi: api, trust: trust) { result in - switch result { - case .success(let value): - resultValue = value - case .failure(_): - break + let resultValue: Bool = try await withCheckedThrowingContinuation { continuation in + let trust = createTrust(delegate: delegate) + api.pigeonDelegate.evaluateWithError(pigeonApi: api, trust: trust) { result in + switch result { + case .success(let value): + continuation.resume(returning: value) + case .failure(let error): + continuation.resume(throwing: error) + } } - expect.fulfill() } - - wait(for: [expect], timeout: 5.0) - XCTAssertEqual(resultValue, true) + #expect(resultValue == true) } - func testCopyExceptions() { + @Test func copyExceptions() throws { let registrar = TestProxyApiRegistrar() let delegate = TestSecTrustProxyAPIDelegate() let api = PigeonApiSecTrust(pigeonRegistrar: registrar, delegate: delegate) let trust = createTrust(delegate: delegate) - let value = try? api.pigeonDelegate.copyExceptions(pigeonApi: api, trust: trust) + let value = try api.pigeonDelegate.copyExceptions(pigeonApi: api, trust: trust) - XCTAssertEqual(value?.data, Data()) + #expect(value?.data == Data()) } - func testSetExceptions() { + @Test func setExceptions() throws { let registrar = TestProxyApiRegistrar() let delegate = TestSecTrustProxyAPIDelegate() let api = PigeonApiSecTrust(pigeonRegistrar: registrar, delegate: delegate) let trust = createTrust(delegate: delegate) - let value = try? api.pigeonDelegate.setExceptions( + let value = try api.pigeonDelegate.setExceptions( pigeonApi: api, trust: trust, exceptions: FlutterStandardTypedData(bytes: Data())) - XCTAssertEqual(value, false) + #expect(value == false) } - func testGetTrustResult() { + @Test func getTrustResult() throws { let registrar = TestProxyApiRegistrar() let delegate = TestSecTrustProxyAPIDelegate() let api = PigeonApiSecTrust(pigeonRegistrar: registrar, delegate: delegate) let trust = createTrust(delegate: delegate) - let value = try? api.pigeonDelegate.getTrustResult(pigeonApi: api, trust: trust) + let value = try api.pigeonDelegate.getTrustResult(pigeonApi: api, trust: trust) - XCTAssertEqual(value?.result, SecTrustResultType.invalid) - XCTAssertEqual(value?.resultCode, -1) + #expect(value.result == SecTrustResultType.invalid) + #expect(value.resultCode == -1) } - func testCopyCertificateChain() { + @Test func copyCertificateChain() throws { let registrar = TestProxyApiRegistrar() let delegate = TestSecTrustProxyAPIDelegate() let api = PigeonApiSecTrust(pigeonRegistrar: registrar, delegate: delegate) let trust = createTrust(delegate: delegate) - let value = try? api.pigeonDelegate.copyCertificateChain(pigeonApi: api, trust: trust) + let value = try api.pigeonDelegate.copyCertificateChain(pigeonApi: api, trust: trust) - XCTAssertEqual(value?.count, 1) - XCTAssertNotNil(value?.first?.value) + #expect(value?.count == 1) + #expect(value?.first?.value != nil) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecurityOriginProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecurityOriginProxyAPITests.swift index db36838320a7..72403ceb70a4 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecurityOriginProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/SecurityOriginProxyAPITests.swift @@ -2,43 +2,44 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview @MainActor -class SecurityOriginProxyAPITests: XCTestCase { +@Suite struct SecurityOriginProxyAPITests { static let testSecurityOrigin = TestSecurityOrigin.customInit() - @MainActor func testHost() { + @MainActor @Test func host() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKSecurityOrigin(registrar) let instance = SecurityOriginProxyAPITests.testSecurityOrigin let value = try? api.pigeonDelegate.host(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.host) + #expect(value == instance.host) } - @MainActor func testPort() { + @MainActor @Test func port() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKSecurityOrigin(registrar) let instance = SecurityOriginProxyAPITests.testSecurityOrigin - let value = try? api.pigeonDelegate.port(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.port(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, Int64(instance.port)) + #expect(value == Int64(instance.port)) } - @MainActor func testSecurityProtocol() { + @MainActor @Test func securityProtocol() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKSecurityOrigin(registrar) let instance = SecurityOriginProxyAPITests.testSecurityOrigin - let value = try? api.pigeonDelegate.securityProtocol(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.securityProtocol(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.`protocol`) + #expect(value == instance.`protocol`) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIDelegateProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIDelegateProxyAPITests.swift index 3f672fbc5e41..848e96375a93 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIDelegateProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIDelegateProxyAPITests.swift @@ -2,21 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class UIDelegateProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct UIDelegateProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUIDelegate(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testOnCreateWebView() { + @MainActor @Test func onCreateWebView() throws { let api = TestDelegateApi() let registrar = TestProxyApiRegistrar() let instance = UIDelegateImpl(api: api, registrar: registrar) @@ -28,12 +29,12 @@ class UIDelegateProxyAPITests: XCTestCase { webView, createWebViewWith: configuration, for: navigationAction, windowFeatures: WKWindowFeatures()) - XCTAssertEqual(api.onCreateWebViewArgs, [webView, configuration, navigationAction]) - XCTAssertNil(result) + #expect(api.onCreateWebViewArgs == [webView, configuration, navigationAction]) + #expect(result == nil) } @available(iOS 15.0, macOS 12.0, *) - @MainActor func testRequestMediaCapturePermission() { + @MainActor @Test func requestMediaCapturePermission() async throws { let api = TestDelegateApi() let registrar = TestProxyApiRegistrar() let instance = UIDelegateImpl(api: api, registrar: registrar) @@ -42,23 +43,20 @@ class UIDelegateProxyAPITests: XCTestCase { let frame = TestFrameInfo.instance let type: WKMediaCaptureType = .camera - var resultDecision: WKPermissionDecision? - let callbackExpectation = expectation(description: "Wait for callback.") - instance.webView( - webView, requestMediaCapturePermissionFor: origin, initiatedByFrame: frame, type: type - ) { decision in - resultDecision = decision - callbackExpectation.fulfill() + let resultDecision = await withCheckedContinuation { continuation in + instance.webView( + webView, requestMediaCapturePermissionFor: origin, initiatedByFrame: frame, type: type + ) { decision in + continuation.resume(returning: decision) + } } - wait(for: [callbackExpectation], timeout: 1.0) - - XCTAssertEqual( - api.requestMediaCapturePermissionArgs, [webView, origin, frame, MediaCaptureType.camera]) - XCTAssertEqual(resultDecision, .prompt) + #expect( + api.requestMediaCapturePermissionArgs == [webView, origin, frame, MediaCaptureType.camera]) + #expect(resultDecision == .prompt) } - @MainActor func testRunJavaScriptAlertPanel() { + @MainActor @Test func runJavaScriptAlertPanel() throws { let api = TestDelegateApi() let registrar = TestProxyApiRegistrar() let instance = UIDelegateImpl(api: api, registrar: registrar) @@ -70,10 +68,10 @@ class UIDelegateProxyAPITests: XCTestCase { { } - XCTAssertEqual(api.runJavaScriptAlertPanelArgs, [webView, message, frame]) + #expect(api.runJavaScriptAlertPanelArgs == [webView, message, frame]) } - @MainActor func testRunJavaScriptConfirmPanel() { + @MainActor @Test func runJavaScriptConfirmPanel() async throws { let api = TestDelegateApi() let registrar = TestProxyApiRegistrar() let instance = UIDelegateImpl(api: api, registrar: registrar) @@ -81,22 +79,19 @@ class UIDelegateProxyAPITests: XCTestCase { let message = "myString" let frame = TestFrameInfo.instance - var confirmedResult: Bool? - let callbackExpectation = expectation(description: "Wait for callback.") - instance.webView( - webView, runJavaScriptConfirmPanelWithMessage: message, initiatedByFrame: frame - ) { confirmed in - confirmedResult = confirmed - callbackExpectation.fulfill() + let confirmedResult = await withCheckedContinuation { continuation in + instance.webView( + webView, runJavaScriptConfirmPanelWithMessage: message, initiatedByFrame: frame + ) { confirmed in + continuation.resume(returning: confirmed) + } } - wait(for: [callbackExpectation], timeout: 1.0) - - XCTAssertEqual(api.runJavaScriptConfirmPanelArgs, [webView, message, frame]) - XCTAssertEqual(confirmedResult, true) + #expect(api.runJavaScriptConfirmPanelArgs == [webView, message, frame]) + #expect(confirmedResult == true) } - @MainActor func testRunJavaScriptTextInputPanel() { + @MainActor @Test func runJavaScriptTextInputPanel() async throws { let api = TestDelegateApi() let registrar = TestProxyApiRegistrar() let instance = UIDelegateImpl(api: api, registrar: registrar) @@ -105,20 +100,17 @@ class UIDelegateProxyAPITests: XCTestCase { let defaultText = "myString3" let frame = TestFrameInfo.instance - var inputResult: String? - let callbackExpectation = expectation(description: "Wait for callback.") - instance.webView( - webView, runJavaScriptTextInputPanelWithPrompt: prompt, defaultText: defaultText, - initiatedByFrame: frame - ) { input in - inputResult = input - callbackExpectation.fulfill() + let inputResult = await withCheckedContinuation { continuation in + instance.webView( + webView, runJavaScriptTextInputPanelWithPrompt: prompt, defaultText: defaultText, + initiatedByFrame: frame + ) { input in + continuation.resume(returning: input) + } } - wait(for: [callbackExpectation], timeout: 1.0) - - XCTAssertEqual(api.runJavaScriptTextInputPanelArgs, [webView, prompt, defaultText, frame]) - XCTAssertEqual(inputResult, "myString2") + #expect(api.runJavaScriptTextInputPanelArgs == [webView, prompt, defaultText, frame]) + #expect(inputResult == "myString2") } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIViewProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIViewProxyAPITests.swift index 7203b5511ef7..14454c20ed44 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIViewProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UIViewProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -10,9 +11,9 @@ import XCTest import UIKit #endif -class UIViewProxyAPITests: XCTestCase { +@Suite struct UIViewProxyAPITests { #if os(iOS) - @MainActor func testSetBackgroundColor() { + @MainActor @Test func setBackgroundColor() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIView(registrar) @@ -21,23 +22,22 @@ class UIViewProxyAPITests: XCTestCase { let green = 0.2 let blue = 0.3 let alpha = 0.4 - try? api.pigeonDelegate.setBackgroundColor( + try api.pigeonDelegate.setBackgroundColor( pigeonApi: api, pigeonInstance: instance, value: UIColor(red: red, green: green, blue: blue, alpha: alpha)) - XCTAssertEqual( - instance.backgroundColor, UIColor(red: red, green: green, blue: blue, alpha: alpha)) + #expect(instance.backgroundColor == UIColor(red: red, green: green, blue: blue, alpha: alpha)) } - @MainActor func testSetOpaque() { + @MainActor @Test func setOpaque() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiUIView(registrar) let instance = UIView(frame: .zero) let opaque = true - try? api.pigeonDelegate.setOpaque(pigeonApi: api, pigeonInstance: instance, opaque: opaque) + try api.pigeonDelegate.setOpaque(pigeonApi: api, pigeonInstance: instance, opaque: opaque) - XCTAssertEqual(instance.isOpaque, opaque) + #expect(instance.isOpaque == opaque) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLAuthenticationChallengeProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLAuthenticationChallengeProxyAPITests.swift index 9aa34c5611b1..efd2a7aaadab 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLAuthenticationChallengeProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLAuthenticationChallengeProxyAPITests.swift @@ -2,20 +2,24 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class URLAuthenticationChallengeProxyAPITests: XCTestCase { - func testGetProtectionSpace() { +@Suite struct URLAuthenticationChallengeProxyAPITests { + @Test func getProtectionSpace() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLAuthenticationChallenge(registrar) let instance = URLAuthenticationChallenge( protectionSpace: URLProtectionSpace(), proposedCredential: nil, previousFailureCount: 3, failureResponse: nil, error: nil, sender: TestURLAuthenticationChallengeSender()) - let value = try? api.pigeonDelegate.getProtectionSpace(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getProtectionSpace(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.protectionSpace) + #expect(value.port == instance.protectionSpace.port) + #expect(value.protocol == instance.protectionSpace.protocol) + #expect(value.realm == instance.protectionSpace.realm) + #expect(value.authenticationMethod == instance.protectionSpace.authenticationMethod) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLCredentialProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLCredentialProxyAPITests.swift index 86576d3777b2..d86f9d7278c1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLCredentialProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLCredentialProxyAPITests.swift @@ -2,17 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class URLCredentialProxyAPITests: XCTestCase { - func testWithUser() { +@Suite struct URLCredentialProxyAPITests { + @Test func withUser() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLCredential(registrar) let instance = try? api.pigeonDelegate.withUser( pigeonApi: api, user: "myString", password: "myString", persistence: .none) - XCTAssertNotNil(instance) + #expect(instance != nil) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLProtectionSpaceProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLProtectionSpaceProxyAPITests.swift index 1afd930597b6..156208132e9b 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLProtectionSpaceProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLProtectionSpaceProxyAPITests.swift @@ -2,12 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview -class ProtectionSpaceProxyAPITests: XCTestCase { - func testHost() { +@Suite struct ProtectionSpaceProxyAPITests { + @Test func host() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLProtectionSpace(registrar) @@ -16,56 +17,56 @@ class ProtectionSpaceProxyAPITests: XCTestCase { ) let value = try? api.pigeonDelegate.host(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.host) + #expect(value == instance.host) } - func testPort() { + @Test func port() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLProtectionSpace(registrar) let instance = URLProtectionSpace( host: "host", port: 23, protocol: "protocol", realm: "realm", authenticationMethod: "myMethod" ) - let value = try? api.pigeonDelegate.port(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.port(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, Int64(instance.port)) + #expect(value == Int64(instance.port)) } - func testRealm() { + @Test func realm() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLProtectionSpace(registrar) let instance = URLProtectionSpace( host: "host", port: 23, protocol: "protocol", realm: "realm", authenticationMethod: "myMethod" ) - let value = try? api.pigeonDelegate.realm(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.realm(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.realm) + #expect(value == instance.realm) } - func testAuthenticationMethod() { + @Test func authenticationMethod() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLProtectionSpace(registrar) let instance = URLProtectionSpace( host: "host", port: 23, protocol: "protocol", realm: "realm", authenticationMethod: "myMethod" ) - let value = try? api.pigeonDelegate.authenticationMethod( + let value = try api.pigeonDelegate.authenticationMethod( pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.authenticationMethod) + #expect(value == instance.authenticationMethod) } - func testGetServerTrust() { + @Test func getServerTrust() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLProtectionSpace(registrar) let instance = TestProtectionSpace( host: "host", port: 23, protocol: "protocol", realm: "realm", authenticationMethod: "myMethod" ) - let value = try? api.pigeonDelegate.getServerTrust(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getServerTrust(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value!.value, instance.serverTrust) + #expect(value!.value == instance.serverTrust) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLRequestProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLRequestProxyAPITests.swift index 91ab4e4d5bc5..894d6cc6e86c 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLRequestProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/URLRequestProxyAPITests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -14,37 +15,37 @@ import XCTest #error("Unsupported platform.") #endif -class RequestProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct RequestProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, url: "myString") - XCTAssertNotNil(instance) + #expect(instance != nil) } - func testGetUrl() { + @Test func getUrl() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) let instance = URLRequestWrapper(URLRequest(url: URL(string: "http://google.com")!)) - let value = try? api.pigeonDelegate.getUrl(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getUrl(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.value.url?.absoluteString) + #expect(value == instance.value.url?.absoluteString) } - func testSetHttpMethod() { + @Test func setHttpMethod() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) let instance = URLRequestWrapper(URLRequest(url: URL(string: "http://google.com")!)) let method = "GET" - try? api.pigeonDelegate.setHttpMethod(pigeonApi: api, pigeonInstance: instance, method: method) + try api.pigeonDelegate.setHttpMethod(pigeonApi: api, pigeonInstance: instance, method: method) - XCTAssertEqual(instance.value.httpMethod, method) + #expect(instance.value.httpMethod == method) } - func testGetHttpMethod() { + @Test func getHttpMethod() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) @@ -52,47 +53,47 @@ class RequestProxyAPITests: XCTestCase { let method = "POST" instance.value.httpMethod = method - let value = try? api.pigeonDelegate.getHttpMethod(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getHttpMethod(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, method) + #expect(value == method) } - func testSetHttpBody() { + @Test func setHttpBody() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) let instance = URLRequestWrapper(URLRequest(url: URL(string: "http://google.com")!)) let body = FlutterStandardTypedData(bytes: Data()) - try? api.pigeonDelegate.setHttpBody(pigeonApi: api, pigeonInstance: instance, body: body) + try api.pigeonDelegate.setHttpBody(pigeonApi: api, pigeonInstance: instance, body: body) - XCTAssertEqual(instance.value.httpBody, body.data) + #expect(instance.value.httpBody == body.data) } - func testGetHttpBody() { + @Test func getHttpBody() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) let instance = URLRequestWrapper(URLRequest(url: URL(string: "http://google.com")!)) let body = FlutterStandardTypedData(bytes: Data()) instance.value.httpBody = body.data - let value = try? api.pigeonDelegate.getHttpBody(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getHttpBody(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value?.data, body.data) + #expect(value?.data == body.data) } - func testSetAllHttpHeaderFields() { + @Test func setAllHttpHeaderFields() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) let instance = URLRequestWrapper(URLRequest(url: URL(string: "http://google.com")!)) let fields = ["key": "value"] - try? api.pigeonDelegate.setAllHttpHeaderFields( + try api.pigeonDelegate.setAllHttpHeaderFields( pigeonApi: api, pigeonInstance: instance, fields: fields) - XCTAssertEqual(instance.value.allHTTPHeaderFields, fields) + #expect(instance.value.allHTTPHeaderFields == fields) } - func testGetAllHttpHeaderFields() { + @Test func getAllHttpHeaderFields() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiURLRequest(registrar) @@ -100,9 +101,9 @@ class RequestProxyAPITests: XCTestCase { let fields = ["key": "value"] instance.value.allHTTPHeaderFields = fields - let value = try? api.pigeonDelegate.getAllHttpHeaderFields( + let value = try api.pigeonDelegate.getAllHttpHeaderFields( pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, fields) + #expect(value == fields) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserContentControllerProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserContentControllerProxyAPITests.swift index b401c88ceacf..b923042ce1cf 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserContentControllerProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserContentControllerProxyAPITests.swift @@ -2,13 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class UserContentControllerProxyAPITests: XCTestCase { - @MainActor func testAddScriptMessageHandler() { +@Suite struct UserContentControllerProxyAPITests { + @MainActor @Test func addScriptMessageHandler() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserContentController(registrar) @@ -16,54 +17,54 @@ class UserContentControllerProxyAPITests: XCTestCase { let handler = ScriptMessageHandlerImpl( api: registrar.apiDelegate.pigeonApiWKScriptMessageHandler(registrar), registrar: registrar) let name = "myString" - try? api.pigeonDelegate.addScriptMessageHandler( + try api.pigeonDelegate.addScriptMessageHandler( pigeonApi: api, pigeonInstance: instance, handler: handler, name: name) - XCTAssertEqual(instance.addScriptMessageHandlerArgs, [handler, name]) + #expect(instance.addScriptMessageHandlerArgs == [handler, name]) } - @MainActor func testRemoveScriptMessageHandler() { + @MainActor @Test func removeScriptMessageHandler() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserContentController(registrar) let instance = TestUserContentController() let name = "myString" - try? api.pigeonDelegate.removeScriptMessageHandler( + try api.pigeonDelegate.removeScriptMessageHandler( pigeonApi: api, pigeonInstance: instance, name: name) - XCTAssertEqual(instance.removeScriptMessageHandlerArgs, [name]) + #expect(instance.removeScriptMessageHandlerArgs == [name]) } - @MainActor func testRemoveAllScriptMessageHandlers() { + @MainActor @Test func removeAllScriptMessageHandlers() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserContentController(registrar) let instance = TestUserContentController() - try? api.pigeonDelegate.removeAllScriptMessageHandlers(pigeonApi: api, pigeonInstance: instance) + try api.pigeonDelegate.removeAllScriptMessageHandlers(pigeonApi: api, pigeonInstance: instance) - XCTAssertTrue(instance.removeAllScriptMessageHandlersCalled) + #expect(instance.removeAllScriptMessageHandlersCalled) } - @MainActor func testAddUserScript() { + @MainActor @Test func addUserScript() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserContentController(registrar) let instance = TestUserContentController() let userScript = WKUserScript(source: "", injectionTime: .atDocumentEnd, forMainFrameOnly: true) - try? api.pigeonDelegate.addUserScript( + try api.pigeonDelegate.addUserScript( pigeonApi: api, pigeonInstance: instance, userScript: userScript) - XCTAssertEqual(instance.addUserScriptArgs, [userScript]) + #expect(instance.addUserScriptArgs == [userScript]) } - @MainActor func testRemoveAllUserScripts() { + @MainActor @Test func removeAllUserScripts() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserContentController(registrar) let instance = TestUserContentController() - try? api.pigeonDelegate.removeAllUserScripts(pigeonApi: api, pigeonInstance: instance) + try api.pigeonDelegate.removeAllUserScripts(pigeonApi: api, pigeonInstance: instance) - XCTAssertTrue(instance.removeAllUserScriptsCalled) + #expect(instance.removeAllUserScriptsCalled) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserScriptProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserScriptProxyAPITests.swift index 97cec4324e42..0a074a1f3913 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserScriptProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/UserScriptProxyAPITests.swift @@ -2,51 +2,52 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class UserScriptProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct UserScriptProxyAPITests { + @MainActor @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserScript(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor( pigeonApi: api, source: "myString", injectionTime: .atDocumentStart, isForMainFrameOnly: true) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testSource() { + @MainActor @Test func source() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserScript(registrar) let instance = WKUserScript( source: "source", injectionTime: .atDocumentEnd, forMainFrameOnly: false) - let value = try? api.pigeonDelegate.source(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.source(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.source) + #expect(value == instance.source) } - @MainActor func testInjectionTime() { + @MainActor @Test func injectionTime() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserScript(registrar) let instance = WKUserScript( source: "source", injectionTime: .atDocumentEnd, forMainFrameOnly: false) - let value = try? api.pigeonDelegate.injectionTime(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.injectionTime(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, .atDocumentEnd) + #expect(value == .atDocumentEnd) } - @MainActor func testIsMainFrameOnly() { + @MainActor @Test func isMainFrameOnly() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKUserScript(registrar) let instance = WKUserScript( source: "source", injectionTime: .atDocumentEnd, forMainFrameOnly: false) - let value = try? api.pigeonDelegate.isForMainFrameOnly(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.isForMainFrameOnly(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.isForMainFrameOnly) + #expect(value == instance.isForMainFrameOnly) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewConfigurationProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewConfigurationProxyAPITests.swift index d7eb47fe99bd..174e63021004 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewConfigurationProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewConfigurationProxyAPITests.swift @@ -2,136 +2,137 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class WebViewConfigurationProxyAPITests: XCTestCase { - func testPigeonDefaultConstructor() { +@Suite struct WebViewConfigurationProxyAPITests { + @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testSetUserContentController() { + @MainActor @Test func setUserContentController() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() let controller = WKUserContentController() - try? api.pigeonDelegate.setUserContentController( + try api.pigeonDelegate.setUserContentController( pigeonApi: api, pigeonInstance: instance, controller: controller) - XCTAssertEqual(instance.userContentController, controller) + #expect(instance.userContentController == controller) } - @MainActor func testGetUserContentController() { + @MainActor @Test func getUserContentController() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() - let value = try? api.pigeonDelegate.getUserContentController( + let value = try api.pigeonDelegate.getUserContentController( pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.userContentController) + #expect(value == instance.userContentController) } - @MainActor func testSetWebsiteDataStore() { + @MainActor @Test func setWebsiteDataStore() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() let dataStore = WKWebsiteDataStore.default() - try? api.pigeonDelegate.setWebsiteDataStore( + try api.pigeonDelegate.setWebsiteDataStore( pigeonApi: api, pigeonInstance: instance, dataStore: dataStore) - XCTAssertEqual(instance.websiteDataStore, dataStore) + #expect(instance.websiteDataStore == dataStore) } - @MainActor func testGetWebsiteDataStore() { + @MainActor @Test func getWebsiteDataStore() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() - let value = try? api.pigeonDelegate.getWebsiteDataStore( + let value = try api.pigeonDelegate.getWebsiteDataStore( pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.websiteDataStore) + #expect(value == instance.websiteDataStore) } - @MainActor func testSetPreferences() { + @MainActor @Test func setPreferences() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() let preferences = WKPreferences() - try? api.pigeonDelegate.setPreferences( + try api.pigeonDelegate.setPreferences( pigeonApi: api, pigeonInstance: instance, preferences: preferences) - XCTAssertEqual(instance.preferences, preferences) + #expect(instance.preferences == preferences) } - @MainActor func testGetPreferences() { + @MainActor @Test func getPreferences() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() - let value = try? api.pigeonDelegate.getPreferences(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getPreferences(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.preferences) + #expect(value == instance.preferences) } - @MainActor func testSetAllowsInlineMediaPlayback() { + @MainActor @Test func setAllowsInlineMediaPlayback() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() let allow = true - try? api.pigeonDelegate.setAllowsInlineMediaPlayback( + try api.pigeonDelegate.setAllowsInlineMediaPlayback( pigeonApi: api, pigeonInstance: instance, allow: allow) // setAllowsInlineMediaPlayback does not existing on macOS; the call above should no-op for macOS. #if !os(macOS) - XCTAssertEqual(instance.allowsInlineMediaPlayback, allow) + #expect(instance.allowsInlineMediaPlayback == allow) #endif } @available(iOS 14.0, macOS 11.0, *) - @MainActor func testSetLimitsNavigationsToAppBoundDomains() { + @MainActor @Test func setLimitsNavigationsToAppBoundDomains() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() let limit = true - try? api.pigeonDelegate.setLimitsNavigationsToAppBoundDomains( + try api.pigeonDelegate.setLimitsNavigationsToAppBoundDomains( pigeonApi: api, pigeonInstance: instance, limit: limit) - XCTAssertEqual(instance.limitsNavigationsToAppBoundDomains, limit) + #expect(instance.limitsNavigationsToAppBoundDomains == limit) } - @MainActor func testSetMediaTypesRequiringUserActionForPlayback() { + @MainActor @Test func setMediaTypesRequiringUserActionForPlayback() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() let type: AudiovisualMediaType = .none - try? api.pigeonDelegate.setMediaTypesRequiringUserActionForPlayback( + try api.pigeonDelegate.setMediaTypesRequiringUserActionForPlayback( pigeonApi: api, pigeonInstance: instance, type: type) - XCTAssertEqual(instance.mediaTypesRequiringUserActionForPlayback, []) + #expect(instance.mediaTypesRequiringUserActionForPlayback == []) } - @MainActor func testGetDefaultWebpagePreferences() { + @MainActor @Test func getDefaultWebpagePreferences() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar) let instance = WKWebViewConfiguration() - let value = try? api.pigeonDelegate.getDefaultWebpagePreferences( + let value = try api.pigeonDelegate.getDefaultWebpagePreferences( pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.defaultWebpagePreferences) + #expect(value == instance.defaultWebpagePreferences) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewFlutterPluginTests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewFlutterPluginTests.swift index 2a9ae0617c94..6e7629038480 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewFlutterPluginTests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewFlutterPluginTests.swift @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import XCTest +import Foundation +import Testing @testable import webview_flutter_wkwebview @@ -11,9 +12,9 @@ import XCTest import UIKit #endif -class WebViewFlutterPluginTests: XCTestCase { +@Suite struct WebViewFlutterPluginTests { #if os(iOS) - func testInstanceManagerIsDeallocatedInApplicationWillTerminate() { + @MainActor @Test func instanceManagerIsDeallocatedInApplicationWillTerminate() async throws { let plugin = WebViewFlutterPlugin(binaryMessenger: TestBinaryMessenger()) plugin.proxyApiRegistrar!.setUp() @@ -29,21 +30,22 @@ class WebViewFlutterPluginTests: XCTestCase { } objc_setAssociatedObject( plugin.proxyApiRegistrar!.instanceManager, key, finalizer, .OBJC_ASSOCIATION_RETAIN) - let expectation = self.expectation(description: "Wait for InstanceManager to be deallocated.") - TestFinalizer.onDeinit = { - expectation.fulfill() - } - // Ensure method is from `FlutterApplicationLifeCycleDelegate`. - (plugin as FlutterApplicationLifeCycleDelegate).applicationWillTerminate!( - UIApplication.shared) - XCTAssertNil(plugin.proxyApiRegistrar) + await confirmation("Wait for InstanceManager to be deallocated.") { confirm in + TestFinalizer.onDeinit = { + confirm() + } + + // Ensure method is from `FlutterApplicationLifeCycleDelegate`. + (plugin as FlutterApplicationLifeCycleDelegate).applicationWillTerminate!( + UIApplication.shared) + #expect(plugin.proxyApiRegistrar == nil) - finalizer = nil - waitForExpectations(timeout: 5.0) + finalizer = nil + } } - func testInstanceManagerIsDeallocatedInSceneDidDisconnect() { + @MainActor @Test func instanceManagerIsDeallocatedInSceneDidDisconnect() async throws { let plugin = WebViewFlutterPlugin(binaryMessenger: TestBinaryMessenger()) plugin.proxyApiRegistrar!.setUp() @@ -59,19 +61,20 @@ class WebViewFlutterPluginTests: XCTestCase { } objc_setAssociatedObject( plugin.proxyApiRegistrar!.instanceManager, key, finalizer, .OBJC_ASSOCIATION_RETAIN) - let expectation = self.expectation(description: "Wait for InstanceManager to be deallocated.") - TestFinalizer.onDeinit = { - expectation.fulfill() - } - let scene = UIApplication.shared.connectedScenes.first! + await confirmation("Wait for InstanceManager to be deallocated.") { confirm in + TestFinalizer.onDeinit = { + confirm() + } + + let scene = UIApplication.shared.connectedScenes.first! - // Ensure method is from `FlutterSceneLifeCycleDelegate`. - (plugin as FlutterSceneLifeCycleDelegate).sceneDidDisconnect?(scene) - XCTAssertNil(plugin.proxyApiRegistrar) + // Ensure method is from `FlutterSceneLifeCycleDelegate`. + (plugin as FlutterSceneLifeCycleDelegate).sceneDidDisconnect?(scene) + #expect(plugin.proxyApiRegistrar == nil) - finalizer = nil - waitForExpectations(timeout: 5.0) + finalizer = nil + } } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewProxyAPITests.swift index 2e55c00835d3..c9f6df7b7333 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebViewProxyAPITests.swift @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview @@ -11,7 +12,7 @@ import XCTest import UIKit #endif -class WebViewProxyAPITests: XCTestCase { +@Suite struct WebViewProxyAPITests { #if os(iOS) func webViewProxyAPI(forRegistrar registrar: ProxyAPIRegistrar) -> PigeonApiUIViewWKWebView { return registrar.apiDelegate.pigeonApiUIViewWKWebView(registrar) @@ -22,227 +23,226 @@ class WebViewProxyAPITests: XCTestCase { } #endif - @MainActor func testPigeonDefaultConstructor() { + @MainActor @Test func pigeonDefaultConstructor() { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = try? api.pigeonDelegate.pigeonDefaultConstructor( pigeonApi: api, initialConfiguration: WKWebViewConfiguration()) - XCTAssertNotNil(instance) + #expect(instance != nil) } - @MainActor func testConfiguration() { + @MainActor @Test func configuration() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.configuration(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.configuration(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.configuration) + #expect(value == instance.configuration) } #if os(iOS) - @MainActor func testScrollView() { + @MainActor @Test func scrollView() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.scrollView(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.scrollView(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.scrollView) + #expect(value == instance.scrollView) } #endif - @MainActor func testSetUIDelegate() { + @MainActor @Test func setUIDelegate() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let delegate = UIDelegateImpl( api: registrar.apiDelegate.pigeonApiWKUIDelegate(registrar), registrar: registrar) - try? api.pigeonDelegate.setUIDelegate( + try api.pigeonDelegate.setUIDelegate( pigeonApi: api, pigeonInstance: instance, delegate: delegate) - XCTAssertEqual(instance.uiDelegate as! UIDelegateImpl, delegate) + #expect(instance.uiDelegate as! UIDelegateImpl == delegate) } - @MainActor func testSetNavigationDelegate() { + @MainActor @Test func setNavigationDelegate() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let delegate = NavigationDelegateImpl( api: registrar.apiDelegate.pigeonApiWKNavigationDelegate(registrar), registrar: registrar) - try? api.pigeonDelegate.setNavigationDelegate( + try api.pigeonDelegate.setNavigationDelegate( pigeonApi: api, pigeonInstance: instance, delegate: delegate) - XCTAssertEqual(instance.navigationDelegate as! NavigationDelegateImpl, delegate) + #expect(instance.navigationDelegate as! NavigationDelegateImpl == delegate) } - @MainActor func testGetUrl() { + @MainActor @Test func getUrl() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.getUrl(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getUrl(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.url?.absoluteString) + #expect(value == instance.url?.absoluteString) } - @MainActor func testGetEstimatedProgress() { + @MainActor @Test func getEstimatedProgress() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.getEstimatedProgress( + let value = try api.pigeonDelegate.getEstimatedProgress( pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.estimatedProgress) + #expect(value == instance.estimatedProgress) } - @MainActor func testLoad() { + @MainActor @Test func load() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let request = URLRequestWrapper(URLRequest(url: URL(string: "http://google.com")!)) - try? api.pigeonDelegate.load(pigeonApi: api, pigeonInstance: instance, request: request) + try api.pigeonDelegate.load(pigeonApi: api, pigeonInstance: instance, request: request) - XCTAssertEqual(instance.loadArgs, [request.value]) + #expect(instance.loadArgs == [request.value]) } - @MainActor func testLoadHtmlString() { + @MainActor @Test func loadHtmlString() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let string = "myString" let baseUrl = "http://google.com" - try? api.pigeonDelegate.loadHtmlString( + try api.pigeonDelegate.loadHtmlString( pigeonApi: api, pigeonInstance: instance, string: string, baseUrl: baseUrl) - XCTAssertEqual(instance.loadHtmlStringArgs, [string, URL(string: baseUrl)]) + #expect(instance.loadHtmlStringArgs == [string, URL(string: baseUrl)]) } - @MainActor func testLoadFileUrl() { + @MainActor @Test func loadFileUrl() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let url = "myDirectory/myFile.txt" let readAccessUrl = "myDirectory/" - try? api.pigeonDelegate.loadFileUrl( + try api.pigeonDelegate.loadFileUrl( pigeonApi: api, pigeonInstance: instance, url: url, readAccessUrl: readAccessUrl) - XCTAssertEqual( - instance.loadFileUrlArgs, - [ + #expect( + instance.loadFileUrlArgs == [ URL(fileURLWithPath: url, isDirectory: false), URL(fileURLWithPath: readAccessUrl, isDirectory: true), ]) } - @MainActor func testLoadFlutterAsset() { + @MainActor @Test func loadFlutterAsset() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let key = "assets/www/index.html" - try? api.pigeonDelegate.loadFlutterAsset(pigeonApi: api, pigeonInstance: instance, key: key) + try api.pigeonDelegate.loadFlutterAsset(pigeonApi: api, pigeonInstance: instance, key: key) - XCTAssertEqual(instance.loadFileUrlArgs?.count, 2) - let url = try! XCTUnwrap(instance.loadFileUrlArgs![0]) - let readAccessURL = try! XCTUnwrap(instance.loadFileUrlArgs![1]) + #expect(instance.loadFileUrlArgs?.count == 2) + let url = instance.loadFileUrlArgs![0] + let readAccessURL = instance.loadFileUrlArgs![1] - XCTAssertTrue(url.absoluteString.contains("index.html")) - XCTAssertTrue(readAccessURL.absoluteString.contains("assets/www/")) + #expect(url.absoluteString.contains("index.html")) + #expect(readAccessURL.absoluteString.contains("assets/www/")) } - @MainActor func testCanGoBack() { + @MainActor @Test func canGoBack() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.canGoBack(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.canGoBack(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.canGoBack) + #expect(value == instance.canGoBack) } - @MainActor func testCanGoForward() { + @MainActor @Test func canGoForward() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.canGoForward(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.canGoForward(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.canGoForward) + #expect(value == instance.canGoForward) } - @MainActor func testGoBack() { + @MainActor @Test func goBack() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - try? api.pigeonDelegate.goBack(pigeonApi: api, pigeonInstance: instance) + try api.pigeonDelegate.goBack(pigeonApi: api, pigeonInstance: instance) - XCTAssertTrue(instance.goBackCalled) + #expect(instance.goBackCalled) } - @MainActor func testGoForward() { + @MainActor @Test func goForward() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - try? api.pigeonDelegate.goForward(pigeonApi: api, pigeonInstance: instance) + try api.pigeonDelegate.goForward(pigeonApi: api, pigeonInstance: instance) - XCTAssertTrue(instance.goForwardCalled) + #expect(instance.goForwardCalled) } - @MainActor func testReload() { + @MainActor @Test func reload() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - try? api.pigeonDelegate.reload(pigeonApi: api, pigeonInstance: instance) + try api.pigeonDelegate.reload(pigeonApi: api, pigeonInstance: instance) - XCTAssertTrue(instance.reloadCalled) + #expect(instance.reloadCalled) } - @MainActor func testGetTitle() { + @MainActor @Test func getTitle() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.getTitle(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getTitle(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.title) + #expect(value == instance.title) } - @MainActor func testSetAllowsBackForwardNavigationGestures() { + @MainActor @Test func setAllowsBackForwardNavigationGestures() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let allow = true - try? api.pigeonDelegate.setAllowsBackForwardNavigationGestures( + try api.pigeonDelegate.setAllowsBackForwardNavigationGestures( pigeonApi: api, pigeonInstance: instance, allow: allow) - XCTAssertEqual(instance.setAllowsBackForwardNavigationGesturesArgs, [allow]) + #expect(instance.setAllowsBackForwardNavigationGesturesArgs == [allow]) } - @MainActor func testSetCustomUserAgent() { + @MainActor @Test func setCustomUserAgent() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let userAgent = "myString" - try? api.pigeonDelegate.setCustomUserAgent( + try api.pigeonDelegate.setCustomUserAgent( pigeonApi: api, pigeonInstance: instance, userAgent: userAgent) - XCTAssertEqual(instance.setCustomUserAgentArgs, [userAgent]) + #expect(instance.setCustomUserAgentArgs == [userAgent]) } - @MainActor func testEvaluateJavaScript() { + @MainActor @Test func evaluateJavaScript() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) @@ -261,68 +261,68 @@ class WebViewProxyAPITests: XCTestCase { } }) - XCTAssertEqual(instance.evaluateJavaScriptArgs, [javaScriptString]) - XCTAssertEqual(resultValue as! String, "returnValue") + #expect(instance.evaluateJavaScriptArgs == [javaScriptString]) + #expect(resultValue as! String == "returnValue") } - @MainActor func testSetInspectable() { + @MainActor @Test func setInspectable() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let inspectable = true - try? api.pigeonDelegate.setInspectable( + try api.pigeonDelegate.setInspectable( pigeonApi: api, pigeonInstance: instance, inspectable: inspectable) - XCTAssertEqual(instance.setInspectableArgs, [inspectable]) - XCTAssertFalse(instance.isInspectable) + #expect(instance.setInspectableArgs == [inspectable]) + #expect(!(instance.isInspectable)) } - @MainActor func testSetAllowsLinkPreview() { + @MainActor @Test func setAllowsLinkPreview() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() let allow: Bool = true - try? api.pigeonDelegate.setAllowsLinkPreview( + try api.pigeonDelegate.setAllowsLinkPreview( pigeonApi: api, pigeonInstance: instance, allow: allow) - XCTAssertEqual(instance.allowsLinkPreview, allow) + #expect(instance.allowsLinkPreview == allow) } - @MainActor func testGetCustomUserAgent() { + @MainActor @Test func getCustomUserAgent() throws { let registrar = TestProxyApiRegistrar() let api = webViewProxyAPI(forRegistrar: registrar) let instance = TestViewWKWebView() - let value = try? api.pigeonDelegate.getCustomUserAgent(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.getCustomUserAgent(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.customUserAgent) + #expect(value == instance.customUserAgent) } #if os(iOS) - @MainActor func testWebViewContentInsetBehaviorShouldBeNever() { + @MainActor @Test func webViewContentInsetBehaviorShouldBeNever() throws { let registrar = TestProxyApiRegistrar() let api = PigeonApiWKWebView(pigeonRegistrar: registrar, delegate: WebViewProxyAPIDelegate()) let webView = WebViewImpl( api: api, registrar: registrar, frame: .zero, configuration: WKWebViewConfiguration()) - XCTAssertEqual(webView.scrollView.contentInsetAdjustmentBehavior, .never) + #expect(webView.scrollView.contentInsetAdjustmentBehavior == .never) } @MainActor - func testScrollViewsAutomaticallyAdjustsScrollIndicatorInsetsShouldbeFalse() { + @Test func scrollViewsAutomaticallyAdjustsScrollIndicatorInsetsShouldbeFalse() throws { let registrar = TestProxyApiRegistrar() let api = PigeonApiWKWebView(pigeonRegistrar: registrar, delegate: WebViewProxyAPIDelegate()) let webView = WebViewImpl( api: api, registrar: registrar, frame: .zero, configuration: WKWebViewConfiguration()) - XCTAssertFalse(webView.scrollView.automaticallyAdjustsScrollIndicatorInsets) + #expect(!(webView.scrollView.automaticallyAdjustsScrollIndicatorInsets)) } - @MainActor func testContentInsetsSumAlwaysZeroAfterSetFrame() { + @MainActor @Test func contentInsetsSumAlwaysZeroAfterSetFrame() throws { let registrar = TestProxyApiRegistrar() let api = PigeonApiWKWebView(pigeonRegistrar: registrar, delegate: WebViewProxyAPIDelegate()) @@ -332,10 +332,10 @@ class WebViewProxyAPITests: XCTestCase { webView.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 300, right: 300) webView.frame = .zero - XCTAssertEqual(webView.scrollView.contentInset, .zero) + #expect(webView.scrollView.contentInset == .zero) } - @MainActor func testContentInsetsIsOppositeOfScrollViewAdjustedInset() { + @MainActor @Test func contentInsetsIsOppositeOfScrollViewAdjustedInset() throws { let registrar = TestProxyApiRegistrar() let api = PigeonApiWKWebView(pigeonRegistrar: registrar, delegate: WebViewProxyAPIDelegate()) @@ -346,10 +346,10 @@ class WebViewProxyAPITests: XCTestCase { webView.frame = .zero let contentInset: UIEdgeInsets = webView.scrollView.contentInset - XCTAssertEqual(contentInset.left, -webView.scrollView.adjustedContentInset.left) - XCTAssertEqual(contentInset.top, -webView.scrollView.adjustedContentInset.top) - XCTAssertEqual(contentInset.right, -webView.scrollView.adjustedContentInset.right) - XCTAssertEqual(contentInset.bottom, -webView.scrollView.adjustedContentInset.bottom) + #expect(contentInset.left == -webView.scrollView.adjustedContentInset.left) + #expect(contentInset.top == -webView.scrollView.adjustedContentInset.top) + #expect(contentInset.right == -webView.scrollView.adjustedContentInset.right) + #expect(contentInset.bottom == -webView.scrollView.adjustedContentInset.bottom) } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebpagePreferencesProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebpagePreferencesProxyAPITests.swift index 941ed1254833..e3376baf2ed9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebpagePreferencesProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebpagePreferencesProxyAPITests.swift @@ -2,22 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class WebpagePreferencesProxyAPITests: XCTestCase { +@Suite struct WebpagePreferencesProxyAPITests { @available(iOS 14.0, macOS 11.0, *) - @MainActor func testSetAllowsContentJavaScript() { + @MainActor @Test func setAllowsContentJavaScript() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebpagePreferences(registrar) let instance = WKWebpagePreferences() let allow = true - try? api.pigeonDelegate.setAllowsContentJavaScript( + try api.pigeonDelegate.setAllowsContentJavaScript( pigeonApi: api, pigeonInstance: instance, allow: allow) - XCTAssertEqual(instance.allowsContentJavaScript, allow) + #expect(instance.allowsContentJavaScript == allow) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebsiteDataStoreProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebsiteDataStoreProxyAPITests.swift index c6c8a761a63a..6a4f6aa4c8e2 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebsiteDataStoreProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/WebsiteDataStoreProxyAPITests.swift @@ -2,25 +2,26 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Foundation +import Testing import WebKit -import XCTest @testable import webview_flutter_wkwebview -class WebsiteDataStoreProxyAPITests: XCTestCase { +@Suite struct WebsiteDataStoreProxyAPITests { @available(iOS 17.0, *) - @MainActor func testHttpCookieStore() { + @MainActor @Test func httpCookieStore() throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebsiteDataStore(registrar) let instance = WKWebsiteDataStore.default() - let value = try? api.pigeonDelegate.httpCookieStore(pigeonApi: api, pigeonInstance: instance) + let value = try api.pigeonDelegate.httpCookieStore(pigeonApi: api, pigeonInstance: instance) - XCTAssertEqual(value, instance.httpCookieStore) + #expect(value == instance.httpCookieStore) } @available(iOS 17.0, *) - @MainActor func testRemoveDataOfTypes() { + @MainActor @Test func removeDataOfTypes() async throws { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKWebsiteDataStore(registrar) @@ -28,24 +29,19 @@ class WebsiteDataStoreProxyAPITests: XCTestCase { let dataTypes: [WebsiteDataType] = [.localStorage] let modificationTimeInSecondsSinceEpoch = 0.0 - let removeDataOfTypesExpectation = expectation( - description: "Wait for result of removeDataOfTypes.") - - var removeDataOfTypesResult: Bool? - api.pigeonDelegate.removeDataOfTypes( - pigeonApi: api, pigeonInstance: instance, dataTypes: dataTypes, - modificationTimeInSecondsSinceEpoch: modificationTimeInSecondsSinceEpoch, - completion: { result in - switch result { - case .success(let hasRecords): - removeDataOfTypesResult = hasRecords - case .failure(_): break - } - - removeDataOfTypesExpectation.fulfill() - }) - - wait(for: [removeDataOfTypesExpectation], timeout: 10.0) - XCTAssertNotNil(removeDataOfTypesResult) + try await withCheckedThrowingContinuation { continuation in + api.pigeonDelegate.removeDataOfTypes( + pigeonApi: api, pigeonInstance: instance, dataTypes: dataTypes, + modificationTimeInSecondsSinceEpoch: modificationTimeInSecondsSinceEpoch, + completion: { result in + switch result { + case .success: + continuation.resume() + case .failure(let error): + continuation.resume(throwing: error) + } + }) + } + // If the test doesn't throw, it has succeeded. } }