@@ -2,9 +2,10 @@ import XCTest
22import WebKit
33@testable import McpApps
44
5- @available ( iOS 15 . 0 , macOS 12 . 0 , tvOS 15 . 0 , watchOS 8 . 0 , * )
5+ @available ( iOS 16 . 0 , macOS 13 . 0 , tvOS 16 . 0 , watchOS 9 . 0 , * )
66final class WKWebViewTransportTests : XCTestCase {
77
8+ @MainActor
89 func testTransportCreation( ) async throws {
910 let webView = WKWebView ( )
1011 let transport = WKWebViewTransport ( webView: webView)
@@ -13,6 +14,7 @@ final class WKWebViewTransportTests: XCTestCase {
1314 XCTAssertNotNil ( transport)
1415 }
1516
17+ @MainActor
1618 func testTransportStartAndClose( ) async throws {
1719 let webView = WKWebView ( )
1820 let transport = WKWebViewTransport ( webView: webView)
@@ -24,6 +26,7 @@ final class WKWebViewTransportTests: XCTestCase {
2426 await transport. close ( )
2527 }
2628
29+ @MainActor
2730 func testTransportSendRequest( ) async throws {
2831 let webView = WKWebView ( )
2932 let transport = WKWebViewTransport ( webView: webView)
@@ -43,6 +46,7 @@ final class WKWebViewTransportTests: XCTestCase {
4346 await transport. close ( )
4447 }
4548
49+ @MainActor
4650 func testTransportSendNotification( ) async throws {
4751 let webView = WKWebView ( )
4852 let transport = WKWebViewTransport ( webView: webView)
@@ -61,6 +65,7 @@ final class WKWebViewTransportTests: XCTestCase {
6165 await transport. close ( )
6266 }
6367
68+ @MainActor
6469 func testTransportSendResponse( ) async throws {
6570 let webView = WKWebView ( )
6671 let transport = WKWebViewTransport ( webView: webView)
@@ -79,6 +84,7 @@ final class WKWebViewTransportTests: XCTestCase {
7984 await transport. close ( )
8085 }
8186
87+ @MainActor
8288 func testTransportSendError( ) async throws {
8389 let webView = WKWebView ( )
8490 let transport = WKWebViewTransport ( webView: webView)
@@ -100,6 +106,7 @@ final class WKWebViewTransportTests: XCTestCase {
100106 await transport. close ( )
101107 }
102108
109+ @MainActor
103110 func testCustomHandlerName( ) async throws {
104111 let webView = WKWebView ( )
105112 let customHandlerName = " customBridge "
@@ -115,6 +122,7 @@ final class WKWebViewTransportTests: XCTestCase {
115122 await transport. close ( )
116123 }
117124
125+ @MainActor
118126 func testMultipleStartCallsAreIdempotent( ) async throws {
119127 let webView = WKWebView ( )
120128 let transport = WKWebViewTransport ( webView: webView)
@@ -127,6 +135,7 @@ final class WKWebViewTransportTests: XCTestCase {
127135 await transport. close ( )
128136 }
129137
138+ @MainActor
130139 func testSendWithoutStartThrows( ) async throws {
131140 let webView = WKWebView ( )
132141 let transport = WKWebViewTransport ( webView: webView)
@@ -149,6 +158,7 @@ final class WKWebViewTransportTests: XCTestCase {
149158 }
150159 }
151160
161+ @MainActor
152162 func testJSONEncodingWithSpecialCharacters( ) async throws {
153163 let webView = WKWebView ( )
154164 let transport = WKWebViewTransport ( webView: webView)
@@ -171,6 +181,7 @@ final class WKWebViewTransportTests: XCTestCase {
171181 await transport. close ( )
172182 }
173183
184+ @MainActor
174185 func testMessageReception( ) async throws {
175186 let webView = WKWebView ( )
176187 let transport = WKWebViewTransport ( webView: webView)
@@ -199,6 +210,7 @@ final class WKWebViewTransportTests: XCTestCase {
199210 await transport. close ( )
200211 }
201212
213+ @MainActor
202214 func testTransportWithNilWebView( ) async throws {
203215 // Create a weak reference to test behavior with deallocated webView
204216 var webView : WKWebView ? = WKWebView ( )
@@ -224,6 +236,7 @@ final class WKWebViewTransportTests: XCTestCase {
224236 await transport. close ( )
225237 }
226238
239+ @MainActor
227240 func testConcurrentSends( ) async throws {
228241 let webView = WKWebView ( )
229242 let transport = WKWebViewTransport ( webView: webView)
@@ -249,6 +262,7 @@ final class WKWebViewTransportTests: XCTestCase {
249262 await transport. close ( )
250263 }
251264
265+ @MainActor
252266 func testMessageWithDifferentIdTypes( ) async throws {
253267 let webView = WKWebView ( )
254268 let transport = WKWebViewTransport ( webView: webView)
@@ -274,6 +288,7 @@ final class WKWebViewTransportTests: XCTestCase {
274288 await transport. close ( )
275289 }
276290
291+ @MainActor
277292 func testComplexNestedParams( ) async throws {
278293 let webView = WKWebView ( )
279294 let transport = WKWebViewTransport ( webView: webView)
@@ -305,6 +320,7 @@ final class WKWebViewTransportTests: XCTestCase {
305320 await transport. close ( )
306321 }
307322
323+ @MainActor
308324 func testMessageEventFormat( ) async throws {
309325 let webView = WKWebView ( )
310326 let transport = WKWebViewTransport ( webView: webView)
@@ -334,9 +350,7 @@ final class WKWebViewTransportTests: XCTestCase {
334350 </html>
335351 """
336352
337- await MainActor . run {
338- webView. loadHTMLString ( html, baseURL: nil )
339- }
353+ webView. loadHTMLString ( html, baseURL: nil )
340354
341355 // Wait for page to load
342356 try await Task . sleep ( nanoseconds: 500_000_000 ) // 0.5 seconds
@@ -354,18 +368,14 @@ final class WKWebViewTransportTests: XCTestCase {
354368 try await Task . sleep ( nanoseconds: 100_000_000 ) // 0.1 seconds
355369
356370 // Verify the event was captured correctly
357- let result = try await MainActor . run {
358- try await webView. evaluateJavaScript ( " window.capturedEvents.length " )
359- }
371+ let result = try await webView. evaluateJavaScript ( " window.capturedEvents.length " )
360372
361373 // Should have captured at least one event
362374 if let count = result as? Int {
363375 XCTAssertGreaterThan ( count, 0 , " Should have captured at least one message event " )
364376
365377 // Check the format of the first event
366- let firstEvent = try await MainActor . run {
367- try await webView. evaluateJavaScript ( " JSON.stringify(window.capturedEvents[0]) " )
368- }
378+ let firstEvent = try await webView. evaluateJavaScript ( " JSON.stringify(window.capturedEvents[0]) " )
369379
370380 if let eventJson = firstEvent as? String {
371381 // Parse and verify the event structure
@@ -382,6 +392,7 @@ final class WKWebViewTransportTests: XCTestCase {
382392 await transport. close ( )
383393 }
384394
395+ @MainActor
385396 func testBridgeScriptPostMessage( ) async throws {
386397 let webView = WKWebView ( )
387398 let transport = WKWebViewTransport ( webView: webView)
@@ -422,9 +433,7 @@ final class WKWebViewTransportTests: XCTestCase {
422433 }
423434 }
424435
425- await MainActor . run {
426- webView. loadHTMLString ( html, baseURL: nil )
427- }
436+ webView. loadHTMLString ( html, baseURL: nil )
428437
429438 await fulfillment ( of: [ expectation] , timeout: 2.0 )
430439
0 commit comments