The Swift Package Index logo.Swift Package Index

Build Information

Failed to build Playwright, reference v0.1.1 (27fd48), with Swift 6.4 for iOS using Xcode 27.0 on 24 Sep 2026 18:37:58 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun xcodebuild -IDEClonedSourcePackagesDirPathOverride=$PWD/.dependencies -skipMacroValidation -skipPackagePluginValidation -derivedDataPath $PWD/.derivedData build -scheme Playwright-Package -destination generic/platform=iOS

Build Log

/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:52:15: error: 'withLock' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
 36 | 	}
 37 |
 38 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |           `- note: add '@available' attribute to enclosing initializer
 39 | 		browser = parent as? Browser
 40 | 		super.init(connection: connection, parent: parent, type: type, guid: guid, initializer: initializer)
    :
 50 | 		on("page") { [weak self] params in
 51 | 			guard let self, let page = params["page"] as? Page else { return }
 52 | 			self.state.withLock { $0.pages.append(page) }
    |               |- error: 'withLock' is only available in iOS 18.0 or newer
    |               `- note: add 'if #available' version check
 53 | 		}
 54 |
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:77:24: error: 'withLock' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
 74 | 	///
 75 | 	/// See: https://playwright.dev/docs/api/class-browsercontext#browser-context-new-page
 76 | 	public func newPage() async throws -> Page {
    |              `- note: add '@available' attribute to enclosing instance method
 77 | 		let hasOwner = state.withLock { $0.isOwnedContext }
    |                        |- error: 'withLock' is only available in iOS 18.0 or newer
    |                        `- note: add 'if #available' version check
 78 | 		if hasOwner {
 79 | 			throw PlaywrightError.serverError(
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:102:23: error: 'withLock' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
 99 | 	///
100 | 	/// See: https://playwright.dev/docs/api/class-browsercontext#browser-context-event-console
101 | 	public func onConsole(_ handler: @escaping @Sendable (ConsoleMessage) -> Void) async {
    |              `- note: add '@available' attribute to enclosing instance method
102 | 		let isFirst = state.withLock { state in
    |                       |- error: 'withLock' is only available in iOS 18.0 or newer
    |                       `- note: add 'if #available' version check
103 | 			let wasEmpty = state.consoleHandlers.isEmpty
104 | 			state.consoleHandlers.append(handler)
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:113:24: error: 'withLock' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
110 |
111 | 	/// Called when a console event is received in this context.
112 | 	func dispatchConsole(_ message: ConsoleMessage) {
    |       `- note: add '@available' attribute to enclosing instance method
113 | 		let handlers = state.withLock { $0.consoleHandlers }
    |                        |- error: 'withLock' is only available in iOS 18.0 or newer
    |                        `- note: add 'if #available' version check
114 |
115 | 		for handler in handlers {
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:122:9: error: 'withLock' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
119 |
120 | 	/// Removes a page from this context's page list.
121 | 	func removePage(_ page: Page) {
    |       `- note: add '@available' attribute to enclosing instance method
122 | 		state.withLock { $0.pages.removeByIdentity(page) }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
123 | 	}
124 |
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:51:12: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 45 | 	///
 46 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch
 47 | 	public func launch(
    |              `- note: add '@available' attribute to enclosing instance method
 48 | 		headless: Bool? = nil,
 49 | 		channel: String? = nil,
 50 | 		args: [String]? = nil,
 51 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
 52 | 		executablePath: String? = nil,
 53 | 		env: [String: String]? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:54:11: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 45 | 	///
 46 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch
 47 | 	public func launch(
    |              `- note: add '@available' attribute to enclosing instance method
 48 | 		headless: Bool? = nil,
 49 | 		channel: String? = nil,
    :
 52 | 		executablePath: String? = nil,
 53 | 		env: [String: String]? = nil,
 54 | 		slowMo: Duration? = nil
    |           `- error: 'Duration' is only available in iOS 16.0 or newer
 55 | 	) async throws -> Browser {
 56 | 		var params: [String: Any] = [
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:98:11: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 93 | 	///
 94 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp
 95 | 	public func connectOverCDP(
    |              `- note: add '@available' attribute to enclosing instance method
 96 | 		_ endpointURL: String,
 97 | 		headers: [String: String]? = nil,
 98 | 		slowMo: Duration? = nil,
    |           `- error: 'Duration' is only available in iOS 16.0 or newer
 99 | 		timeout: Duration? = nil
100 | 	) async throws -> Browser {
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:99:12: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 93 | 	///
 94 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp
 95 | 	public func connectOverCDP(
    |              `- note: add '@available' attribute to enclosing instance method
 96 | 		_ endpointURL: String,
 97 | 		headers: [String: String]? = nil,
 98 | 		slowMo: Duration? = nil,
 99 | 		timeout: Duration? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
100 | 	) async throws -> Browser {
101 | 		guard name == "chromium" else {
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:152:12: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
145 | 	///
146 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
147 | 	public func launchPersistentContext(
    |              `- note: add '@available' attribute to enclosing instance method
148 | 		userDataDir: String,
149 | 		headless: Bool? = nil,
150 | 		channel: String? = nil,
151 | 		args: [String]? = nil,
152 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
153 | 		executablePath: String? = nil,
154 | 		env: [String: String]? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:155:11: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
145 | 	///
146 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
147 | 	public func launchPersistentContext(
    |              `- note: add '@available' attribute to enclosing instance method
148 | 		userDataDir: String,
149 | 		headless: Bool? = nil,
    :
153 | 		executablePath: String? = nil,
154 | 		env: [String: String]? = nil,
155 | 		slowMo: Duration? = nil,
    |           `- error: 'Duration' is only available in iOS 16.0 or newer
156 | 		acceptDownloads: Bool? = nil,
157 | 		locale: String? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:57:28: error: 'seconds' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 45 | 	///
 46 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch
 47 | 	public func launch(
    |              `- note: add '@available' attribute to enclosing instance method
 48 | 		headless: Bool? = nil,
 49 | 		channel: String? = nil,
    :
 55 | 	) async throws -> Browser {
 56 | 		var params: [String: Any] = [
 57 | 			"timeout": (timeout ?? .seconds(180)).milliseconds,
    |                            |- error: 'seconds' is only available in iOS 16.0 or newer
    |                            `- note: add 'if #available' version check
 58 | 		]
 59 |
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:107:28: error: 'seconds' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 93 | 	///
 94 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp
 95 | 	public func connectOverCDP(
    |              `- note: add '@available' attribute to enclosing instance method
 96 | 		_ endpointURL: String,
 97 | 		headers: [String: String]? = nil,
    :
105 | 		var params: [String: Any] = [
106 | 			"endpointURL": endpointURL,
107 | 			"timeout": (timeout ?? .seconds(30)).milliseconds,
    |                            |- error: 'seconds' is only available in iOS 16.0 or newer
    |                            `- note: add 'if #available' version check
108 | 		]
109 |
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile BrowserContext.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContextOptions.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile BrowserContextOptions.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile BrowserType.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/ConsoleMessage.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile ConsoleMessage.swift
SwiftCompile normal arm64 Compiling\ Frame.swift,\ Keyboard.swift,\ Locator.swift,\ LocatorFactory.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift /Users/admin/builder/spi-builder-workspace/src/core/API/LocatorFactory.swift (in target 'Playwright' from project 'Playwright')
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:21:21: error: 'Mutex' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 19 | 	}
 20 |
 21 | 	private let state: Mutex<State>
    |                     `- error: 'Mutex' is only available in iOS 18.0 or newer
 22 |
 23 | 	/// The frame's name attribute.
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:156:43: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
154 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-goto
155 | 	@discardableResult
156 | 	public func goto(_ url: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil, referer: String? = nil) async throws -> Response? {
    |              |                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
157 | 		var params: [String: Any] = [
158 | 			"url": url,
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:190:50: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
188 | 	///
189 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-set-content
190 | 	public func setContent(_ html: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws {
    |              |                                   `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
191 | 		var params: [String: Any] = [
192 | 			"html": html,
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:202:80: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
200 | 	// MARK: - Helpers
201 |
202 | 	private func selectorParams(_ selector: String, strict: Bool = true, timeout: Duration? = nil) -> [String: Any] {
    |               |                                                                `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
203 | 		["selector": selector, "strict": strict, "timeout": timeoutMs(timeout)]
204 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:207:98: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
205 |
206 | 	/// Sends a simple action that only needs selector params (no extra parameters).
207 | 	private func selectorAction(_ method: String, _ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |               |                                                                                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
208 | 		_ = try await send(method, params: selectorParams(selector, strict: strict, timeout: timeout))
209 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:212:97: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
210 |
211 | 	/// Sends a query and returns `result["value"]` cast to `T`, or `fallback` if missing.
212 | 	private func queryValue<T>(_ method: String, _ selector: String, strict: Bool = true, timeout: Duration? = nil, fallback: T) async throws -> T {
    |               |                                                                                 `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
213 | 		let result = try await send(method, params: selectorParams(selector, strict: strict, timeout: timeout))
214 | 		return result["value"] as? T ?? fallback
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:225:10: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
217 | 	// MARK: - Actions (internal, called by Locator)
218 |
219 | 	private func clickAction(
    |               `- note: add '@available' attribute to enclosing instance method
220 | 		_ method: String,
221 | 		_ selector: String,
    :
223 | 		button: MouseButton? = nil,
224 | 		clickCount: Int? = nil,
225 | 		delay: Duration? = nil,
    |          `- error: 'Duration' is only available in iOS 16.0 or newer
226 | 		force: Bool? = nil,
227 | 		modifiers: [KeyboardModifier]? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:229:12: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
217 | 	// MARK: - Actions (internal, called by Locator)
218 |
219 | 	private func clickAction(
    |               `- note: add '@available' attribute to enclosing instance method
220 | 		_ method: String,
221 | 		_ selector: String,
    :
227 | 		modifiers: [KeyboardModifier]? = nil,
228 | 		position: Position? = nil,
229 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
230 | 		trial: Bool? = nil
231 | 	) async throws {
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:247:10: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
242 | 	}
243 |
244 | 	func click(
    |       `- note: add '@available' attribute to enclosing instance method
245 | 		_ selector: String, strict: Bool = true,
246 | 		button: MouseButton? = nil, clickCount: Int? = nil,
247 | 		delay: Duration? = nil, force: Bool? = nil,
    |          `- error: 'Duration' is only available in iOS 16.0 or newer
248 | 		modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
249 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:249:12: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
242 | 	}
243 |
244 | 	func click(
    |       `- note: add '@available' attribute to enclosing instance method
245 | 		_ selector: String, strict: Bool = true,
246 | 		button: MouseButton? = nil, clickCount: Int? = nil,
247 | 		delay: Duration? = nil, force: Bool? = nil,
248 | 		modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
249 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
250 | 	) async throws {
251 | 		try await clickAction("click", selector, strict: strict, button: button, clickCount: clickCount, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:256:38: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
252 | 	}
253 |
254 | 	func dblclick(
    |       `- note: add '@available' attribute to enclosing instance method
255 | 		_ selector: String, strict: Bool = true,
256 | 		button: MouseButton? = nil, delay: Duration? = nil,
    |                                      `- error: 'Duration' is only available in iOS 16.0 or newer
257 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
258 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:258:12: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
252 | 	}
253 |
254 | 	func dblclick(
    |       `- note: add '@available' attribute to enclosing instance method
255 | 		_ selector: String, strict: Bool = true,
256 | 		button: MouseButton? = nil, delay: Duration? = nil,
257 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
258 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
259 | 	) async throws {
260 | 		try await clickAction("dblclick", selector, strict: strict, button: button, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:263:97: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
261 | 	}
262 |
263 | 	func fill(_ selector: String, value: String, strict: Bool = true, force: Bool? = nil, timeout: Duration? = nil) async throws {
    |       |                                                                                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
264 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
265 | 		params["value"] = value
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:271:76: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
269 | 	}
270 |
271 | 	func press(_ selector: String, key: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                    `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
272 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
273 | 		params["key"] = key
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:278:89: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
276 | 	}
277 |
278 | 	func pressSequentially(_ selector: String, text: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                                 `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
279 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
280 | 		params["text"] = text
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:285:63: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
283 | 	}
284 |
285 | 	func check(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                       `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
286 | 		try await selectorAction("check", selector, strict: strict, timeout: timeout)
287 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:289:65: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
287 | 	}
288 |
289 | 	func uncheck(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
290 | 		try await selectorAction("uncheck", selector, strict: strict, timeout: timeout)
291 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:293:83: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
291 | 	}
292 |
293 | 	func setChecked(_ selector: String, checked: Bool, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
294 | 		if checked { try await check(selector, strict: strict, timeout: timeout) }
295 | 		else { try await uncheck(selector, strict: strict, timeout: timeout) }
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:298:63: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
296 | 	}
297 |
298 | 	func hover(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                       `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
299 | 		try await selectorAction("hover", selector, strict: strict, timeout: timeout)
300 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:302:63: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
300 | 	}
301 |
302 | 	func focus(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                       `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
303 | 		try await selectorAction("focus", selector, strict: strict, timeout: timeout)
304 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:306:62: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
304 | 	}
305 |
306 | 	func blur(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                      `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
307 | 		try await selectorAction("blur", selector, strict: strict, timeout: timeout)
308 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:310:88: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
308 | 	}
309 |
310 | 	func selectOption(_ selector: String, values: [String], strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                                `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
311 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
312 | 		params["options"] = values.map { ["valueOrLabel": $0] }
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:317:61: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
315 | 	}
316 |
317 | 	func tap(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                     `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
318 | 		try await selectorAction("tap", selector, strict: strict, timeout: timeout)
319 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:323:69: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
321 | 	// MARK: - Queries (internal, called by Locator)
322 |
323 | 	func textContent(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String? {
    |       |                                                             `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
324 | 		let result = try await send("textContent", params: selectorParams(selector, strict: strict, timeout: timeout))
325 | 		return result["value"] as? String
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:328:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
326 | 	}
327 |
328 | 	func innerText(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
329 | 		try await queryValue("innerText", selector, strict: strict, timeout: timeout, fallback: "")
330 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:332:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
330 | 	}
331 |
332 | 	func innerHTML(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
333 | 		try await queryValue("innerHTML", selector, strict: strict, timeout: timeout, fallback: "")
334 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:336:84: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
334 | 	}
335 |
336 | 	func getAttribute(_ selector: String, name: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String? {
    |       |                                                                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
337 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
338 | 		params["name"] = name
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:344:68: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
342 | 	}
343 |
344 | 	func inputValue(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String {
    |       |                                                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
345 | 		try await queryValue("inputValue", selector, strict: strict, timeout: timeout, fallback: "")
346 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:358:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
356 | 	}
357 |
358 | 	func isEnabled(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> Bool {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
359 | 		try await queryValue("isEnabled", selector, strict: strict, timeout: timeout, fallback: false)
360 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:362:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
360 | 	}
361 |
362 | 	func isChecked(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> Bool {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
363 | 		try await queryValue("isChecked", selector, strict: strict, timeout: timeout, fallback: false)
364 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:366:68: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
364 | 	}
365 |
366 | 	func isEditable(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> Bool {
    |       |                                                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
367 | 		try await queryValue("isEditable", selector, strict: strict, timeout: timeout, fallback: false)
368 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:373:121: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
371 | 	///
372 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-wait-for-selector
373 | 	public func waitForSelector(_ selector: String, state: WaitForSelectorState = .visible, strict: Bool = false, timeout: Duration? = nil) async throws -> ElementHandle? {
    |              |                                                                                                          `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
374 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
375 | 		params["state"] = state.rawValue
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:401:40: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
399 | 	///
400 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-wait-for-timeout
401 | 	public func waitForTimeout(_ timeout: Duration) async throws {
    |              |                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
402 | 		_ = try await send("waitForTimeout", params: ["waitTimeout": timeout.milliseconds])
403 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:25:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 22 |
 23 | 	/// The frame's name attribute.
 24 | 	public var name: String {
    |             `- note: add '@available' attribute to enclosing property
 25 | 		state.withLock { $0.name }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 26 | 	}
 27 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:30:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 27 |
 28 | 	/// The current URL of the frame.
 29 | 	public var url: String {
    |             `- note: add '@available' attribute to enclosing property
 30 | 		state.withLock { $0.url }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 31 | 	}
 32 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:35:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 32 |
 33 | 	/// The current load states of the frame.
 34 | 	var loadStates: Set<String> {
    |      `- note: add '@available' attribute to enclosing property
 35 | 		state.withLock { $0.loadStates }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 36 | 	}
 37 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:40:15: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 37 |
 38 | 	/// Back-reference to the owning page (set by Page after creation).
 39 | 	public internal(set) var page: Page? {
    |                           `- note: add '@available' attribute to enclosing property
 40 | 		get { state.withLock { $0.page } }
    |               |- error: 'withLock' is only available in iOS 18.0 or newer
    |               `- note: add 'if #available' version check
 41 | 		set { state.withLock { $0.page = newValue } }
 42 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:41:15: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 37 |
 38 | 	/// Back-reference to the owning page (set by Page after creation).
 39 | 	public internal(set) var page: Page? {
    |                           `- note: add '@available' attribute to enclosing property
 40 | 		get { state.withLock { $0.page } }
 41 | 		set { state.withLock { $0.page = newValue } }
    |               |- error: 'withLock' is only available in iOS 18.0 or newer
    |               `- note: add 'if #available' version check
 42 | 	}
 43 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:50:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 47 | 	///
 48 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-parent-frame
 49 | 	public var parentFrame: Frame? {
    |             `- note: add '@available' attribute to enclosing property
 50 | 		state.withLock { $0.parentFrame }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 51 | 	}
 52 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:57:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 54 | 	///
 55 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-child-frames
 56 | 	public var childFrames: [Frame] {
    |             `- note: add '@available' attribute to enclosing property
 57 | 		state.withLock { $0.childFrames }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 58 | 	}
 59 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:64:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 61 | 	///
 62 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-is-detached
 63 | 	public var isDetached: Bool {
    |             `- note: add '@available' attribute to enclosing property
 64 | 		state.withLock { $0.isDetached }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 65 | 	}
 66 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:69:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 66 |
 67 | 	/// Marks this frame as detached (called when `frameDetached` event fires on the page).
 68 | 	func markDetached() {
    |       `- note: add '@available' attribute to enclosing instance method
 69 | 		state.withLock { $0.isDetached = true }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 70 | 	}
 71 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:74:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 71 |
 72 | 	/// Adds a child frame to this frame's child list.
 73 | 	func addChildFrame(_ frame: Frame) {
    |       `- note: add '@available' attribute to enclosing instance method
 74 | 		state.withLock { $0.childFrames.append(frame) }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 75 | 	}
 76 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:79:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 76 |
 77 | 	/// Removes a child frame from this frame's child list.
 78 | 	func removeChildFrame(_ frame: Frame) {
    |       `- note: add '@available' attribute to enclosing instance method
 79 | 		state.withLock { $0.childFrames.removeAll { $0 === frame } }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 80 | 	}
 81 |
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:85:11: error: 'Mutex' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 80 | 	}
 81 |
 82 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |           `- note: add '@available' attribute to enclosing initializer
 83 | 		let initialLoadStates = (initializer["loadStates"] as? [String]).map(Set.init) ?? []
 84 |
 85 | 		state = Mutex(State(
    |           |- error: 'Mutex' is only available in iOS 18.0 or newer
    |           `- note: add 'if #available' version check
 86 | 			url: initializer["url"] as? String ?? "",
 87 | 			name: initializer["name"] as? String ?? "",
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:85:11: error: 'init(_:)' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 80 | 	}
 81 |
 82 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |           `- note: add '@available' attribute to enclosing initializer
 83 | 		let initialLoadStates = (initializer["loadStates"] as? [String]).map(Set.init) ?? []
 84 |
 85 | 		state = Mutex(State(
    |           |- error: 'init(_:)' is only available in iOS 18.0 or newer
    |           `- note: add 'if #available' version check
 86 | 			url: initializer["url"] as? String ?? "",
 87 | 			name: initializer["name"] as? String ?? "",
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:95:15: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 80 | 	}
 81 |
 82 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |           `- note: add '@available' attribute to enclosing initializer
 83 | 		let initialLoadStates = (initializer["loadStates"] as? [String]).map(Set.init) ?? []
 84 |
    :
 93 | 		on("navigated") { [weak self] params in
 94 | 			guard let self else { return }
 95 | 			self.state.withLock { state in
    |               |- error: 'withLock' is only available in iOS 18.0 or newer
    |               `- note: add 'if #available' version check
 96 | 				if let url = params["url"] as? String { state.url = url }
 97 | 				if let name = params["name"] as? String { state.name = name }
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:106:26: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 80 | 	}
 81 |
 82 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |           `- note: add '@available' attribute to enclosing initializer
 83 | 		let initialLoadStates = (initializer["loadStates"] as? [String]).map(Set.init) ?? []
 84 |
    :
104 | 			let remove = params["remove"] as? String
105 |
106 | 			let page = self.state.withLock { state -> Page? in
    |                          |- error: 'withLock' is only available in iOS 18.0 or newer
    |                          `- note: add 'if #available' version check
107 | 				if let add { state.loadStates.insert(add) }
108 | 				if let remove { state.loadStates.remove(remove) }
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:130:9: error: 'withLock' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
121 | 	/// Child iframes have a `parentFrame` GUID in their initializer. We resolve
122 | 	/// the parent here and register ourselves as a child of that parent.
123 | 	override func didCreate(resolve: (String) -> ChannelOwner?) {
    |                `- note: add '@available' attribute to enclosing instance method
124 | 		guard
125 | 			let parentRef = initializer["parentFrame"] as? [String: Any],
    :
128 | 		else { return }
129 |
130 | 		state.withLock { $0.parentFrame = parent }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
131 | 		parent.addChildFrame(self)
132 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:481:9: error: 'withLock' is only available in iOS 18.0 or newer
477 | }
478 |
479 | extension Frame: CustomStringConvertible {
    | `- note: add '@available' attribute to enclosing extension
480 | 	public var description: String {
    |             `- note: add '@available' attribute to enclosing property
481 | 		state.withLock { $0.name.isEmpty ? "Frame(\($0.url))" : "Frame(\($0.name))" }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
482 | 	}
483 | }
/Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift:21:42: error: 'Duration' is only available in iOS 16.0 or newer
 6 | ///
 7 | /// See: https://playwright.dev/docs/api/class-keyboard
 8 | public final class Keyboard: Sendable {
   |                    `- note: add '@available' attribute to enclosing class
 9 | 	private let page: Page
10 |
   :
19 | 	///
20 | 	/// See: https://playwright.dev/docs/api/class-keyboard#keyboard-type
21 | 	public func type(_ text: String, delay: Duration? = nil) async throws {
   |              |                           `- error: 'Duration' is only available in iOS 16.0 or newer
   |              `- note: add '@available' attribute to enclosing instance method
22 | 		var params: [String: Any] = ["text": text]
23 | 		if let delay { params["delay"] = delay.milliseconds }
/Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift:34:42: error: 'Duration' is only available in iOS 16.0 or newer
 6 | ///
 7 | /// See: https://playwright.dev/docs/api/class-keyboard
 8 | public final class Keyboard: Sendable {
   |                    `- note: add '@available' attribute to enclosing class
 9 | 	private let page: Page
10 |
   :
32 | 	///
33 | 	/// See: https://playwright.dev/docs/api/class-keyboard#keyboard-press
34 | 	public func press(_ key: String, delay: Duration? = nil) async throws {
   |              |                           `- error: 'Duration' is only available in iOS 16.0 or newer
   |              `- note: add '@available' attribute to enclosing instance method
35 | 		var params: [String: Any] = ["key": key]
36 | 		if let delay { params["delay"] = delay.milliseconds }
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:172:62: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
169 | 	///
170 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-click
171 | 	public func click(
    |              `- note: add '@available' attribute to enclosing instance method
172 | 		button: MouseButton? = nil, clickCount: Int? = nil, delay: Duration? = nil,
    |                                                              `- error: 'Duration' is only available in iOS 16.0 or newer
173 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
174 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:174:12: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
169 | 	///
170 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-click
171 | 	public func click(
    |              `- note: add '@available' attribute to enclosing instance method
172 | 		button: MouseButton? = nil, clickCount: Int? = nil, delay: Duration? = nil,
173 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
174 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
175 | 	) async throws {
176 | 		try await frame.click(selector, button: button, clickCount: clickCount, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:183:38: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
180 | 	///
181 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-dblclick
182 | 	public func dblclick(
    |              `- note: add '@available' attribute to enclosing instance method
183 | 		button: MouseButton? = nil, delay: Duration? = nil,
    |                                      `- error: 'Duration' is only available in iOS 16.0 or newer
184 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
185 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:185:12: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
180 | 	///
181 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-dblclick
182 | 	public func dblclick(
    |              `- note: add '@available' attribute to enclosing instance method
183 | 		button: MouseButton? = nil, delay: Duration? = nil,
184 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
185 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
186 | 	) async throws {
187 | 		try await frame.dblclick(selector, button: button, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:193:65: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
191 | 	///
192 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-fill
193 | 	public func fill(_ value: String, force: Bool? = nil, timeout: Duration? = nil) async throws {
    |              |                                                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
194 | 		try await frame.fill(selector, value: value, force: force, timeout: timeout)
195 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:200:29: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
198 | 	///
199 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-clear
200 | 	public func clear(timeout: Duration? = nil) async throws {
    |              |              `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
201 | 		try await frame.fill(selector, value: "", timeout: timeout)
202 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:207:44: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
205 | 	///
206 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-press
207 | 	public func press(_ key: String, timeout: Duration? = nil) async throws {
    |              |                             `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
208 | 		try await frame.press(selector, key: key, timeout: timeout)
209 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:214:57: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
212 | 	///
213 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-press-sequentially
214 | 	public func pressSequentially(_ text: String, timeout: Duration? = nil) async throws {
    |              |                                          `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
215 | 		try await frame.pressSequentially(selector, text: text, timeout: timeout)
216 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:221:29: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
219 | 	///
220 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-check
221 | 	public func check(timeout: Duration? = nil) async throws {
    |              |              `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
222 | 		try await frame.check(selector, timeout: timeout)
223 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:228:31: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
226 | 	///
227 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-uncheck
228 | 	public func uncheck(timeout: Duration? = nil) async throws {
    |              |                `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
229 | 		try await frame.uncheck(selector, timeout: timeout)
230 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:235:51: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
233 | 	///
234 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-set-checked
235 | 	public func setChecked(_ checked: Bool, timeout: Duration? = nil) async throws {
    |              |                                    `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
236 | 		try await frame.setChecked(selector, checked: checked, timeout: timeout)
237 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:242:29: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
240 | 	///
241 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-hover
242 | 	public func hover(timeout: Duration? = nil) async throws {
    |              |              `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
243 | 		try await frame.hover(selector, timeout: timeout)
244 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:263:53: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
261 | 	///
262 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-select-option
263 | 	public func selectOption(_ value: String, timeout: Duration? = nil) async throws {
    |              |                                      `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
264 | 		try await frame.selectOption(selector, values: [value], timeout: timeout)
265 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:268:56: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
266 |
267 | 	/// Selects multiple options in a `<select>` element by value.
268 | 	public func selectOption(_ values: [String], timeout: Duration? = nil) async throws {
    |              |                                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
269 | 		try await frame.selectOption(selector, values: values, timeout: timeout)
270 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:275:27: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
273 | 	///
274 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-tap
275 | 	public func tap(timeout: Duration? = nil) async throws {
    |              |            `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
276 | 		try await frame.tap(selector, timeout: timeout)
277 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:284:35: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
282 | 	///
283 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-text-content
284 | 	public func textContent(timeout: Duration? = nil) async throws -> String? {
    |              |                    `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
285 | 		try await frame.textContent(selector, timeout: timeout)
286 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:291:33: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
289 | 	///
290 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-inner-text
291 | 	public func innerText(timeout: Duration? = nil) async throws -> String {
    |              |                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
292 | 		try await frame.innerText(selector, timeout: timeout)
293 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:298:33: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
296 | 	///
297 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-inner-html
298 | 	public func innerHTML(timeout: Duration? = nil) async throws -> String {
    |              |                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
299 | 		try await frame.innerHTML(selector, timeout: timeout)
300 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:305:52: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
303 | 	///
304 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-get-attribute
305 | 	public func getAttribute(_ name: String, timeout: Duration? = nil) async throws -> String? {
    |              |                                     `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
306 | 		try await frame.getAttribute(selector, name: name, timeout: timeout)
307 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:312:34: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
310 | 	///
311 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-input-value
312 | 	public func inputValue(timeout: Duration? = nil) async throws -> String {
    |              |                   `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
313 | 		try await frame.inputValue(selector, timeout: timeout)
314 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:334:74: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
332 | 	///
333 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-evaluate
334 | 	public func evaluate<T>(_ expression: String, arg: Any? = nil, timeout: Duration? = nil) async throws -> T {
    |              |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
335 | 		guard let result = try await evaluate(expression, arg: arg, timeout: timeout) as? T else {
336 | 			throw PlaywrightError.invalidArgument("Expected evaluate result of type \(T.self)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:355:71: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
353 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-evaluate
354 | 	@_disfavoredOverload
355 | 	public func evaluate(_ expression: String, arg: Any? = nil, timeout: Duration? = nil) async throws -> Any? {
    |              |                                                        `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
356 | 		guard let handle = try await frame.waitForSelector(selector, state: .attached, strict: true, timeout: timeout) else {
357 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:449:12: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
450 | 	) async throws -> Data {
451 | 		let deadline = ContinuousClock.now + (timeout ?? defaultTimeout)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:451:38: error: '+' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
450 | 	) async throws -> Data {
451 | 		let deadline = ContinuousClock.now + (timeout ?? defaultTimeout)
    |                                      |- error: '+' is only available in iOS 16.0 or newer
    |                                      `- note: add 'if #available' version check
452 | 		guard let handle = try await frame.waitForSelector(selector, state: .attached, strict: true, timeout: timeout) else {
453 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:451:18: error: 'ContinuousClock' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
450 | 	) async throws -> Data {
451 | 		let deadline = ContinuousClock.now + (timeout ?? defaultTimeout)
    |                  |- error: 'ContinuousClock' is only available in iOS 16.0 or newer
    |                  `- note: add 'if #available' version check
452 | 		guard let handle = try await frame.waitForSelector(selector, state: .attached, strict: true, timeout: timeout) else {
453 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:451:34: error: 'now' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
450 | 	) async throws -> Data {
451 | 		let deadline = ContinuousClock.now + (timeout ?? defaultTimeout)
    |                                  |- error: 'now' is only available in iOS 16.0 or newer
    |                                  `- note: add 'if #available' version check
452 | 		guard let handle = try await frame.waitForSelector(selector, state: .attached, strict: true, timeout: timeout) else {
453 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:455:19: error: conformance of 'Duration' to 'Comparable' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
    :
453 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
454 | 		}
455 | 		let remaining = max(deadline - .now, .zero)
    |                   |- error: conformance of 'Duration' to 'Comparable' is only available in iOS 16.0 or newer
    |                   `- note: add 'if #available' version check
456 |
457 | 		let result = try await handle.screenshot(type: type, quality: quality, omitBackground: omitBackground, timeout: remaining, path: path)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:455:32: error: '-' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
    :
453 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
454 | 		}
455 | 		let remaining = max(deadline - .now, .zero)
    |                                |- error: '-' is only available in iOS 16.0 or newer
    |                                `- note: add 'if #available' version check
456 |
457 | 		let result = try await handle.screenshot(type: type, quality: quality, omitBackground: omitBackground, timeout: remaining, path: path)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:455:35: error: 'now' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
    :
453 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
454 | 		}
455 | 		let remaining = max(deadline - .now, .zero)
    |                                   |- error: 'now' is only available in iOS 16.0 or newer
    |                                   `- note: add 'if #available' version check
456 |
457 | 		let result = try await handle.screenshot(type: type, quality: quality, omitBackground: omitBackground, timeout: remaining, path: path)
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile Frame.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile Keyboard.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile Locator.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/API/LocatorFactory.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile LocatorFactory.swift
SwiftCompile normal arm64 Compiling\ PlaywrightServer.swift,\ Transport.swift,\ helpers.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/Transport.swift /Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift (in target 'Playwright' from project 'Playwright')
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:17:23: error: cannot find type 'Process' in scope
 15 | 	let messages: AsyncStream<Data>
 16 |
 17 | 	private let process: Process
    |                       `- error: cannot find type 'Process' in scope
 18 | 	private let stdinHandle: FileHandle
 19 | 	private let stdoutHandle: FileHandle
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:25:12: error: cannot find type 'Process' in scope
 23 |
 24 | 	private init(
 25 | 		process: Process,
    |            `- error: cannot find type 'Process' in scope
 26 | 		stdinHandle: FileHandle,
 27 | 		stdoutHandle: FileHandle,
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:55:14: error: cannot find 'Process' in scope
 53 | 		let executable = try Driver.find()
 54 |
 55 | 		let proc = Process()
    |              `- error: cannot find 'Process' in scope
 56 | 		if executable.program.contains("/") {
 57 | 			proc.arguments = executable.arguments
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:94:18: error: 'sleep(for:tolerance:clock:)' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-playwright
 13 | final class PlaywrightServer: Sendable {
    |             `- note: add '@available' attribute to enclosing class
 14 | 	/// Raw data chunks from the server's stdout, delivered via dispatch.
 15 | 	let messages: AsyncStream<Data>
    :
 50 | 	/// - Throws: ``PlaywrightError/driverNotFound(_:)`` if the driver cannot be located.
 51 | 	/// - Returns: A running server instance with valid stdin/stdout handles.
 52 | 	static func launch() async throws -> PlaywrightServer {
    |              `- note: add '@available' attribute to enclosing static method
 53 | 		let executable = try Driver.find()
 54 |
    :
 92 |
 93 | 		// brief pause to catch immediate failures (broken cli.js, missing deps, etc.)
 94 | 		try await Task.sleep(for: .milliseconds(50))
    |                  |- error: 'sleep(for:tolerance:clock:)' is only available in iOS 16.0 or newer
    |                  `- note: add 'if #available' version check
 95 | 		guard proc.isRunning else {
 96 | 			let stderrData = stderrPipe.fileHandleForReading.availableData
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:94:30: error: 'milliseconds' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-playwright
 13 | final class PlaywrightServer: Sendable {
    |             `- note: add '@available' attribute to enclosing class
 14 | 	/// Raw data chunks from the server's stdout, delivered via dispatch.
 15 | 	let messages: AsyncStream<Data>
    :
 50 | 	/// - Throws: ``PlaywrightError/driverNotFound(_:)`` if the driver cannot be located.
 51 | 	/// - Returns: A running server instance with valid stdin/stdout handles.
 52 | 	static func launch() async throws -> PlaywrightServer {
    |              `- note: add '@available' attribute to enclosing static method
 53 | 		let executable = try Driver.find()
 54 |
    :
 92 |
 93 | 		// brief pause to catch immediate failures (broken cli.js, missing deps, etc.)
 94 | 		try await Task.sleep(for: .milliseconds(50))
    |                              |- error: 'milliseconds' is only available in iOS 16.0 or newer
    |                              `- note: add 'if #available' version check
 95 | 		guard proc.isRunning else {
 96 | 			let stderrData = stderrPipe.fileHandleForReading.availableData
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:154:35: error: cannot infer type of closure parameter '_' without a type annotation
152 | 			// If the process already exited between our check and setting the handler,
153 | 			// Foundation still calls the handler immediately.
154 | 			process.terminationHandler = { _ in
    |                                   `- error: cannot infer type of closure parameter '_' without a type annotation
155 | 				cont.resume()
156 | 			}
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:4:21: error: 'Duration' is only available in iOS 16.0 or newer
 2 |
 3 | /// Default timeout for Playwright operations (30 seconds).
 4 | let defaultTimeout: Duration = .seconds(30)
   |     |               `- error: 'Duration' is only available in iOS 16.0 or newer
   |     `- note: add '@available' attribute to enclosing let
 5 |
 6 | /// Returns the timeout in milliseconds, falling back to the default timeout.
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:4:33: error: 'seconds' is only available in iOS 16.0 or newer
 2 |
 3 | /// Default timeout for Playwright operations (30 seconds).
 4 | let defaultTimeout: Duration = .seconds(30)
   |     |                           `- error: 'seconds' is only available in iOS 16.0 or newer
   |     `- note: add '@available' attribute to enclosing let
 5 |
 6 | /// Returns the timeout in milliseconds, falling back to the default timeout.
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:7:27: error: 'Duration' is only available in iOS 16.0 or newer
 5 |
 6 | /// Returns the timeout in milliseconds, falling back to the default timeout.
 7 | func timeoutMs(_ timeout: Duration? = nil) -> Double {
   |      |                    `- error: 'Duration' is only available in iOS 16.0 or newer
   |      `- note: add '@available' attribute to enclosing global function
 8 | 	(timeout ?? defaultTimeout).milliseconds
 9 | }
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile PlaywrightServer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/Protocol/Transport.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile Transport.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile helpers.swift
SwiftEmitModule normal arm64 Emitting\ module\ for\ Playwright (in target 'Playwright' from project 'Playwright')
/Users/admin/builder/spi-builder-workspace/src/core/API/Browser.swift:31:22: error: 'Mutex' is only available in iOS 18.0 or newer
 15 | ///
 16 | /// See: https://playwright.dev/docs/api/class-browser
 17 | public final class Browser: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 18 | 	/// The browser version string (e.g. `"131.0.6778.33"`).
 19 | 	public let version: String
    :
 29 | 	}
 30 |
 31 | 	private let state = Mutex(State())
    |                      `- error: 'Mutex' is only available in iOS 18.0 or newer
 32 |
 33 | 	/// Whether the browser is still connected to the server.
/Users/admin/builder/spi-builder-workspace/src/core/API/Browser.swift:31:22: error: 'init(_:)' is only available in iOS 18.0 or newer
 15 | ///
 16 | /// See: https://playwright.dev/docs/api/class-browser
 17 | public final class Browser: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 18 | 	/// The browser version string (e.g. `"131.0.6778.33"`).
 19 | 	public let version: String
    :
 29 | 	}
 30 |
 31 | 	private let state = Mutex(State())
    |                      `- error: 'init(_:)' is only available in iOS 18.0 or newer
 32 |
 33 | 	/// Whether the browser is still connected to the server.
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:21:22: error: 'Mutex' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
 19 | 	}
 20 |
 21 | 	private let state = Mutex(State())
    |                      `- error: 'Mutex' is only available in iOS 18.0 or newer
 22 |
 23 | 	/// The pages open in this context.
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift:21:22: error: 'init(_:)' is only available in iOS 18.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsercontext
 14 | public final class BrowserContext: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	private struct State: ~Copyable {
 16 | 		var pages: [Page] = []
    :
 19 | 	}
 20 |
 21 | 	private let state = Mutex(State())
    |                      `- error: 'init(_:)' is only available in iOS 18.0 or newer
 22 |
 23 | 	/// The pages open in this context.
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:51:12: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 45 | 	///
 46 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch
 47 | 	public func launch(
    |              `- note: add '@available' attribute to enclosing instance method
 48 | 		headless: Bool? = nil,
 49 | 		channel: String? = nil,
 50 | 		args: [String]? = nil,
 51 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
 52 | 		executablePath: String? = nil,
 53 | 		env: [String: String]? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:54:11: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 45 | 	///
 46 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch
 47 | 	public func launch(
    |              `- note: add '@available' attribute to enclosing instance method
 48 | 		headless: Bool? = nil,
 49 | 		channel: String? = nil,
    :
 52 | 		executablePath: String? = nil,
 53 | 		env: [String: String]? = nil,
 54 | 		slowMo: Duration? = nil
    |           `- error: 'Duration' is only available in iOS 16.0 or newer
 55 | 	) async throws -> Browser {
 56 | 		var params: [String: Any] = [
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:98:11: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 93 | 	///
 94 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp
 95 | 	public func connectOverCDP(
    |              `- note: add '@available' attribute to enclosing instance method
 96 | 		_ endpointURL: String,
 97 | 		headers: [String: String]? = nil,
 98 | 		slowMo: Duration? = nil,
    |           `- error: 'Duration' is only available in iOS 16.0 or newer
 99 | 		timeout: Duration? = nil
100 | 	) async throws -> Browser {
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:99:12: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
 93 | 	///
 94 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp
 95 | 	public func connectOverCDP(
    |              `- note: add '@available' attribute to enclosing instance method
 96 | 		_ endpointURL: String,
 97 | 		headers: [String: String]? = nil,
 98 | 		slowMo: Duration? = nil,
 99 | 		timeout: Duration? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
100 | 	) async throws -> Browser {
101 | 		guard name == "chromium" else {
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:152:12: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
145 | 	///
146 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
147 | 	public func launchPersistentContext(
    |              `- note: add '@available' attribute to enclosing instance method
148 | 		userDataDir: String,
149 | 		headless: Bool? = nil,
150 | 		channel: String? = nil,
151 | 		args: [String]? = nil,
152 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
153 | 		executablePath: String? = nil,
154 | 		env: [String: String]? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift:155:11: error: 'Duration' is only available in iOS 16.0 or newer
 12 | ///
 13 | /// See: https://playwright.dev/docs/api/class-browsertype
 14 | public final class BrowserType: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 15 | 	/// The browser engine name: `"chromium"`, `"firefox"`, or `"webkit"`.
 16 | 	public let name: String
    :
145 | 	///
146 | 	/// See: https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
147 | 	public func launchPersistentContext(
    |              `- note: add '@available' attribute to enclosing instance method
148 | 		userDataDir: String,
149 | 		headless: Bool? = nil,
    :
153 | 		executablePath: String? = nil,
154 | 		env: [String: String]? = nil,
155 | 		slowMo: Duration? = nil,
    |           `- error: 'Duration' is only available in iOS 16.0 or newer
156 | 		acceptDownloads: Bool? = nil,
157 | 		locale: String? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/ElementHandle.swift:23:12: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-elementhandle
 13 | public final class ElementHandle: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// Captures a screenshot of this element.
 15 | 	///
    :
 17 | 	///
 18 | 	/// See: https://playwright.dev/docs/api/class-elementhandle#element-handle-screenshot
 19 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
 20 | 		type: ImageType? = nil,
 21 | 		quality: Int? = nil,
 22 | 		omitBackground: Bool? = nil,
 23 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
 24 | 		path: String? = nil
 25 | 	) async throws -> Data {
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:21:21: error: 'Mutex' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
 19 | 	}
 20 |
 21 | 	private let state: Mutex<State>
    |                     `- error: 'Mutex' is only available in iOS 18.0 or newer
 22 |
 23 | 	/// The frame's name attribute.
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:156:43: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
154 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-goto
155 | 	@discardableResult
156 | 	public func goto(_ url: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil, referer: String? = nil) async throws -> Response? {
    |              |                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
157 | 		var params: [String: Any] = [
158 | 			"url": url,
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:190:50: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
188 | 	///
189 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-set-content
190 | 	public func setContent(_ html: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws {
    |              |                                   `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
191 | 		var params: [String: Any] = [
192 | 			"html": html,
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:202:80: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
200 | 	// MARK: - Helpers
201 |
202 | 	private func selectorParams(_ selector: String, strict: Bool = true, timeout: Duration? = nil) -> [String: Any] {
    |               |                                                                `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
203 | 		["selector": selector, "strict": strict, "timeout": timeoutMs(timeout)]
204 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:207:98: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
205 |
206 | 	/// Sends a simple action that only needs selector params (no extra parameters).
207 | 	private func selectorAction(_ method: String, _ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |               |                                                                                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
208 | 		_ = try await send(method, params: selectorParams(selector, strict: strict, timeout: timeout))
209 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:212:97: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
210 |
211 | 	/// Sends a query and returns `result["value"]` cast to `T`, or `fallback` if missing.
212 | 	private func queryValue<T>(_ method: String, _ selector: String, strict: Bool = true, timeout: Duration? = nil, fallback: T) async throws -> T {
    |               |                                                                                 `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
213 | 		let result = try await send(method, params: selectorParams(selector, strict: strict, timeout: timeout))
214 | 		return result["value"] as? T ?? fallback
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:225:10: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
217 | 	// MARK: - Actions (internal, called by Locator)
218 |
219 | 	private func clickAction(
    |               `- note: add '@available' attribute to enclosing instance method
220 | 		_ method: String,
221 | 		_ selector: String,
    :
223 | 		button: MouseButton? = nil,
224 | 		clickCount: Int? = nil,
225 | 		delay: Duration? = nil,
    |          `- error: 'Duration' is only available in iOS 16.0 or newer
226 | 		force: Bool? = nil,
227 | 		modifiers: [KeyboardModifier]? = nil,
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:229:12: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
217 | 	// MARK: - Actions (internal, called by Locator)
218 |
219 | 	private func clickAction(
    |               `- note: add '@available' attribute to enclosing instance method
220 | 		_ method: String,
221 | 		_ selector: String,
    :
227 | 		modifiers: [KeyboardModifier]? = nil,
228 | 		position: Position? = nil,
229 | 		timeout: Duration? = nil,
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
230 | 		trial: Bool? = nil
231 | 	) async throws {
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:247:10: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
242 | 	}
243 |
244 | 	func click(
    |       `- note: add '@available' attribute to enclosing instance method
245 | 		_ selector: String, strict: Bool = true,
246 | 		button: MouseButton? = nil, clickCount: Int? = nil,
247 | 		delay: Duration? = nil, force: Bool? = nil,
    |          `- error: 'Duration' is only available in iOS 16.0 or newer
248 | 		modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
249 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:249:12: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
242 | 	}
243 |
244 | 	func click(
    |       `- note: add '@available' attribute to enclosing instance method
245 | 		_ selector: String, strict: Bool = true,
246 | 		button: MouseButton? = nil, clickCount: Int? = nil,
247 | 		delay: Duration? = nil, force: Bool? = nil,
248 | 		modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
249 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
250 | 	) async throws {
251 | 		try await clickAction("click", selector, strict: strict, button: button, clickCount: clickCount, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:256:38: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
252 | 	}
253 |
254 | 	func dblclick(
    |       `- note: add '@available' attribute to enclosing instance method
255 | 		_ selector: String, strict: Bool = true,
256 | 		button: MouseButton? = nil, delay: Duration? = nil,
    |                                      `- error: 'Duration' is only available in iOS 16.0 or newer
257 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
258 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:258:12: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
252 | 	}
253 |
254 | 	func dblclick(
    |       `- note: add '@available' attribute to enclosing instance method
255 | 		_ selector: String, strict: Bool = true,
256 | 		button: MouseButton? = nil, delay: Duration? = nil,
257 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
258 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
259 | 	) async throws {
260 | 		try await clickAction("dblclick", selector, strict: strict, button: button, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:263:97: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
261 | 	}
262 |
263 | 	func fill(_ selector: String, value: String, strict: Bool = true, force: Bool? = nil, timeout: Duration? = nil) async throws {
    |       |                                                                                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
264 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
265 | 		params["value"] = value
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:271:76: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
269 | 	}
270 |
271 | 	func press(_ selector: String, key: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                    `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
272 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
273 | 		params["key"] = key
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:278:89: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
276 | 	}
277 |
278 | 	func pressSequentially(_ selector: String, text: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                                 `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
279 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
280 | 		params["text"] = text
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:285:63: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
283 | 	}
284 |
285 | 	func check(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                       `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
286 | 		try await selectorAction("check", selector, strict: strict, timeout: timeout)
287 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:289:65: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
287 | 	}
288 |
289 | 	func uncheck(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
290 | 		try await selectorAction("uncheck", selector, strict: strict, timeout: timeout)
291 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:293:83: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
291 | 	}
292 |
293 | 	func setChecked(_ selector: String, checked: Bool, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
294 | 		if checked { try await check(selector, strict: strict, timeout: timeout) }
295 | 		else { try await uncheck(selector, strict: strict, timeout: timeout) }
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:298:63: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
296 | 	}
297 |
298 | 	func hover(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                       `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
299 | 		try await selectorAction("hover", selector, strict: strict, timeout: timeout)
300 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:302:63: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
300 | 	}
301 |
302 | 	func focus(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                       `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
303 | 		try await selectorAction("focus", selector, strict: strict, timeout: timeout)
304 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:306:62: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
304 | 	}
305 |
306 | 	func blur(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                      `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
307 | 		try await selectorAction("blur", selector, strict: strict, timeout: timeout)
308 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:310:88: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
308 | 	}
309 |
310 | 	func selectOption(_ selector: String, values: [String], strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                                                `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
311 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
312 | 		params["options"] = values.map { ["valueOrLabel": $0] }
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:317:61: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
315 | 	}
316 |
317 | 	func tap(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws {
    |       |                                                     `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
318 | 		try await selectorAction("tap", selector, strict: strict, timeout: timeout)
319 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:323:69: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
321 | 	// MARK: - Queries (internal, called by Locator)
322 |
323 | 	func textContent(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String? {
    |       |                                                             `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
324 | 		let result = try await send("textContent", params: selectorParams(selector, strict: strict, timeout: timeout))
325 | 		return result["value"] as? String
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:328:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
326 | 	}
327 |
328 | 	func innerText(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
329 | 		try await queryValue("innerText", selector, strict: strict, timeout: timeout, fallback: "")
330 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:332:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
330 | 	}
331 |
332 | 	func innerHTML(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
333 | 		try await queryValue("innerHTML", selector, strict: strict, timeout: timeout, fallback: "")
334 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:336:84: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
334 | 	}
335 |
336 | 	func getAttribute(_ selector: String, name: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String? {
    |       |                                                                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
337 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
338 | 		params["name"] = name
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:344:68: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
342 | 	}
343 |
344 | 	func inputValue(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> String {
    |       |                                                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
345 | 		try await queryValue("inputValue", selector, strict: strict, timeout: timeout, fallback: "")
346 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:358:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
356 | 	}
357 |
358 | 	func isEnabled(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> Bool {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
359 | 		try await queryValue("isEnabled", selector, strict: strict, timeout: timeout, fallback: false)
360 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:362:67: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
360 | 	}
361 |
362 | 	func isChecked(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> Bool {
    |       |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
363 | 		try await queryValue("isChecked", selector, strict: strict, timeout: timeout, fallback: false)
364 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:366:68: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
364 | 	}
365 |
366 | 	func isEditable(_ selector: String, strict: Bool = true, timeout: Duration? = nil) async throws -> Bool {
    |       |                                                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |       `- note: add '@available' attribute to enclosing instance method
367 | 		try await queryValue("isEditable", selector, strict: strict, timeout: timeout, fallback: false)
368 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:373:121: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
371 | 	///
372 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-wait-for-selector
373 | 	public func waitForSelector(_ selector: String, state: WaitForSelectorState = .visible, strict: Bool = false, timeout: Duration? = nil) async throws -> ElementHandle? {
    |              |                                                                                                          `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
374 | 		var params = selectorParams(selector, strict: strict, timeout: timeout)
375 | 		params["state"] = state.rawValue
/Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift:401:40: error: 'Duration' is only available in iOS 16.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-frame
 10 | public final class Frame: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	private struct State: ~Copyable {
 12 | 		var url: String
    :
399 | 	///
400 | 	/// See: https://playwright.dev/docs/api/class-frame#frame-wait-for-timeout
401 | 	public func waitForTimeout(_ timeout: Duration) async throws {
    |              |                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
402 | 		_ = try await send("waitForTimeout", params: ["waitTimeout": timeout.milliseconds])
403 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift:21:42: error: 'Duration' is only available in iOS 16.0 or newer
 6 | ///
 7 | /// See: https://playwright.dev/docs/api/class-keyboard
 8 | public final class Keyboard: Sendable {
   |                    `- note: add '@available' attribute to enclosing class
 9 | 	private let page: Page
10 |
   :
19 | 	///
20 | 	/// See: https://playwright.dev/docs/api/class-keyboard#keyboard-type
21 | 	public func type(_ text: String, delay: Duration? = nil) async throws {
   |              |                           `- error: 'Duration' is only available in iOS 16.0 or newer
   |              `- note: add '@available' attribute to enclosing instance method
22 | 		var params: [String: Any] = ["text": text]
23 | 		if let delay { params["delay"] = delay.milliseconds }
/Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift:34:42: error: 'Duration' is only available in iOS 16.0 or newer
 6 | ///
 7 | /// See: https://playwright.dev/docs/api/class-keyboard
 8 | public final class Keyboard: Sendable {
   |                    `- note: add '@available' attribute to enclosing class
 9 | 	private let page: Page
10 |
   :
32 | 	///
33 | 	/// See: https://playwright.dev/docs/api/class-keyboard#keyboard-press
34 | 	public func press(_ key: String, delay: Duration? = nil) async throws {
   |              |                           `- error: 'Duration' is only available in iOS 16.0 or newer
   |              `- note: add '@available' attribute to enclosing instance method
35 | 		var params: [String: Any] = ["key": key]
36 | 		if let delay { params["delay"] = delay.milliseconds }
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:172:62: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
169 | 	///
170 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-click
171 | 	public func click(
    |              `- note: add '@available' attribute to enclosing instance method
172 | 		button: MouseButton? = nil, clickCount: Int? = nil, delay: Duration? = nil,
    |                                                              `- error: 'Duration' is only available in iOS 16.0 or newer
173 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
174 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:174:12: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
169 | 	///
170 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-click
171 | 	public func click(
    |              `- note: add '@available' attribute to enclosing instance method
172 | 		button: MouseButton? = nil, clickCount: Int? = nil, delay: Duration? = nil,
173 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
174 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
175 | 	) async throws {
176 | 		try await frame.click(selector, button: button, clickCount: clickCount, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:183:38: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
180 | 	///
181 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-dblclick
182 | 	public func dblclick(
    |              `- note: add '@available' attribute to enclosing instance method
183 | 		button: MouseButton? = nil, delay: Duration? = nil,
    |                                      `- error: 'Duration' is only available in iOS 16.0 or newer
184 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
185 | 		timeout: Duration? = nil, trial: Bool? = nil
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:185:12: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
180 | 	///
181 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-dblclick
182 | 	public func dblclick(
    |              `- note: add '@available' attribute to enclosing instance method
183 | 		button: MouseButton? = nil, delay: Duration? = nil,
184 | 		force: Bool? = nil, modifiers: [KeyboardModifier]? = nil, position: Position? = nil,
185 | 		timeout: Duration? = nil, trial: Bool? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
186 | 	) async throws {
187 | 		try await frame.dblclick(selector, button: button, delay: delay, force: force, modifiers: modifiers, position: position, timeout: timeout, trial: trial)
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:193:65: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
191 | 	///
192 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-fill
193 | 	public func fill(_ value: String, force: Bool? = nil, timeout: Duration? = nil) async throws {
    |              |                                                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
194 | 		try await frame.fill(selector, value: value, force: force, timeout: timeout)
195 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:200:29: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
198 | 	///
199 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-clear
200 | 	public func clear(timeout: Duration? = nil) async throws {
    |              |              `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
201 | 		try await frame.fill(selector, value: "", timeout: timeout)
202 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:207:44: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
205 | 	///
206 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-press
207 | 	public func press(_ key: String, timeout: Duration? = nil) async throws {
    |              |                             `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
208 | 		try await frame.press(selector, key: key, timeout: timeout)
209 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:214:57: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
212 | 	///
213 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-press-sequentially
214 | 	public func pressSequentially(_ text: String, timeout: Duration? = nil) async throws {
    |              |                                          `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
215 | 		try await frame.pressSequentially(selector, text: text, timeout: timeout)
216 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:221:29: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
219 | 	///
220 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-check
221 | 	public func check(timeout: Duration? = nil) async throws {
    |              |              `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
222 | 		try await frame.check(selector, timeout: timeout)
223 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:228:31: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
226 | 	///
227 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-uncheck
228 | 	public func uncheck(timeout: Duration? = nil) async throws {
    |              |                `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
229 | 		try await frame.uncheck(selector, timeout: timeout)
230 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:235:51: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
233 | 	///
234 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-set-checked
235 | 	public func setChecked(_ checked: Bool, timeout: Duration? = nil) async throws {
    |              |                                    `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
236 | 		try await frame.setChecked(selector, checked: checked, timeout: timeout)
237 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:242:29: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
240 | 	///
241 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-hover
242 | 	public func hover(timeout: Duration? = nil) async throws {
    |              |              `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
243 | 		try await frame.hover(selector, timeout: timeout)
244 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:263:53: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
261 | 	///
262 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-select-option
263 | 	public func selectOption(_ value: String, timeout: Duration? = nil) async throws {
    |              |                                      `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
264 | 		try await frame.selectOption(selector, values: [value], timeout: timeout)
265 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:268:56: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
266 |
267 | 	/// Selects multiple options in a `<select>` element by value.
268 | 	public func selectOption(_ values: [String], timeout: Duration? = nil) async throws {
    |              |                                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
269 | 		try await frame.selectOption(selector, values: values, timeout: timeout)
270 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:275:27: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
273 | 	///
274 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-tap
275 | 	public func tap(timeout: Duration? = nil) async throws {
    |              |            `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
276 | 		try await frame.tap(selector, timeout: timeout)
277 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:284:35: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
282 | 	///
283 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-text-content
284 | 	public func textContent(timeout: Duration? = nil) async throws -> String? {
    |              |                    `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
285 | 		try await frame.textContent(selector, timeout: timeout)
286 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:291:33: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
289 | 	///
290 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-inner-text
291 | 	public func innerText(timeout: Duration? = nil) async throws -> String {
    |              |                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
292 | 		try await frame.innerText(selector, timeout: timeout)
293 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:298:33: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
296 | 	///
297 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-inner-html
298 | 	public func innerHTML(timeout: Duration? = nil) async throws -> String {
    |              |                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
299 | 		try await frame.innerHTML(selector, timeout: timeout)
300 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:305:52: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
303 | 	///
304 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-get-attribute
305 | 	public func getAttribute(_ name: String, timeout: Duration? = nil) async throws -> String? {
    |              |                                     `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
306 | 		try await frame.getAttribute(selector, name: name, timeout: timeout)
307 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:312:34: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
310 | 	///
311 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-input-value
312 | 	public func inputValue(timeout: Duration? = nil) async throws -> String {
    |              |                   `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
313 | 		try await frame.inputValue(selector, timeout: timeout)
314 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:334:74: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
332 | 	///
333 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-evaluate
334 | 	public func evaluate<T>(_ expression: String, arg: Any? = nil, timeout: Duration? = nil) async throws -> T {
    |              |                                                           `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
335 | 		guard let result = try await evaluate(expression, arg: arg, timeout: timeout) as? T else {
336 | 			throw PlaywrightError.invalidArgument("Expected evaluate result of type \(T.self)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:355:71: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
353 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-evaluate
354 | 	@_disfavoredOverload
355 | 	public func evaluate(_ expression: String, arg: Any? = nil, timeout: Duration? = nil) async throws -> Any? {
    |              |                                                        `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
356 | 		guard let handle = try await frame.waitForSelector(selector, state: .attached, strict: true, timeout: timeout) else {
357 | 			throw PlaywrightError.serverError("Element not found for selector: \(selector)")
/Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift:449:12: error: 'Duration' is only available in iOS 16.0 or newer
 19 | ///
 20 | /// See: https://playwright.dev/docs/api/class-locator
 21 | public struct Locator: LocatorFactory, Sendable {
    |               `- note: add '@available' attribute to enclosing struct
 22 | 	package let frame: Frame
 23 | 	package let selector: String
    :
445 | 	///
446 | 	/// See: https://playwright.dev/docs/api/class-locator#locator-screenshot
447 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
448 | 		type: ImageType? = nil, quality: Int? = nil, omitBackground: Bool? = nil,
449 | 		timeout: Duration? = nil, path: String? = nil
    |            `- error: 'Duration' is only available in iOS 16.0 or newer
450 | 	) async throws -> Data {
451 | 		let deadline = ContinuousClock.now + (timeout ?? defaultTimeout)
/Users/admin/builder/spi-builder-workspace/src/core/API/Mouse.swift:18:101: error: 'Duration' is only available in iOS 16.0 or newer
 6 | ///
 7 | /// See: https://playwright.dev/docs/api/class-mouse
 8 | public final class Mouse: Sendable {
   |                    `- note: add '@available' attribute to enclosing class
 9 | 	private let page: Page
10 |
   :
16 | 	///
17 | 	/// See: https://playwright.dev/docs/api/class-mouse#mouse-click
18 | 	public func click(x: Double, y: Double, button: MouseButton? = nil, clickCount: Int? = nil, delay: Duration? = nil) async throws {
   |              |                                                                                      `- error: 'Duration' is only available in iOS 16.0 or newer
   |              `- note: add '@available' attribute to enclosing instance method
19 | 		var params: [String: Any] = ["x": x, "y": y]
20 | 		if let button { params["button"] = button.rawValue }
/Users/admin/builder/spi-builder-workspace/src/core/API/Mouse.swift:30:80: error: 'Duration' is only available in iOS 16.0 or newer
 6 | ///
 7 | /// See: https://playwright.dev/docs/api/class-mouse
 8 | public final class Mouse: Sendable {
   |                    `- note: add '@available' attribute to enclosing class
 9 | 	private let page: Page
10 |
   :
28 | 	///
29 | 	/// See: https://playwright.dev/docs/api/class-mouse#mouse-dblclick
30 | 	public func dblclick(x: Double, y: Double, button: MouseButton? = nil, delay: Duration? = nil) async throws {
   |              |                                                                 `- error: 'Duration' is only available in iOS 16.0 or newer
   |              `- note: add '@available' attribute to enclosing instance method
31 | 		try await click(x: x, y: y, button: button, clickCount: 2, delay: delay)
32 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:51:22: error: 'Mutex' is only available in iOS 18.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
 49 | 	}
 50 |
 51 | 	private let state = Mutex(State())
    |                      `- error: 'Mutex' is only available in iOS 18.0 or newer
 52 |
 53 | 	/// The current URL of the page (delegates to main frame).
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:51:22: error: 'init(_:)' is only available in iOS 18.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
 49 | 	}
 50 |
 51 | 	private let state = Mutex(State())
    |                      `- error: 'init(_:)' is only available in iOS 18.0 or newer
 52 |
 53 | 	/// The current URL of the page (delegates to main frame).
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:189:43: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
187 | 	/// See: https://playwright.dev/docs/api/class-page#page-goto
188 | 	@discardableResult
189 | 	public func goto(_ url: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil, referer: String? = nil) async throws -> Response? {
    |              |                            `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
190 | 		try await mainFrame.goto(url, timeout: timeout, waitUntil: waitUntil, referer: referer)
191 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:200:30: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
198 | 	///
199 | 	/// See: https://playwright.dev/docs/api/class-page#page-reload
200 | 	public func reload(timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws -> Response? {
    |              |               `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
201 | 		try await navigateWithResponse("reload", timeout: timeout, waitUntil: waitUntil)
202 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:211:30: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
209 | 	///
210 | 	/// See: https://playwright.dev/docs/api/class-page#page-go-back
211 | 	public func goBack(timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws -> Response? {
    |              |               `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
212 | 		try await navigateWithResponse("goBack", timeout: timeout, waitUntil: waitUntil)
213 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:222:33: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
220 | 	///
221 | 	/// See: https://playwright.dev/docs/api/class-page#page-go-forward
222 | 	public func goForward(timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws -> Response? {
    |              |                  `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
223 | 		try await navigateWithResponse("goForward", timeout: timeout, waitUntil: waitUntil)
224 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:226:63: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
224 | 	}
225 |
226 | 	private func navigateWithResponse(_ method: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws -> Response? {
    |               |                                               `- error: 'Duration' is only available in iOS 16.0 or newer
    |               `- note: add '@available' attribute to enclosing instance method
227 | 		var params: [String: Any] = ["timeout": timeoutMs(timeout)]
228 | 		if let waitUntil { params["waitUntil"] = waitUntil.rawValue }
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:254:50: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
252 | 	///
253 | 	/// See: https://playwright.dev/docs/api/class-page#page-set-content
254 | 	public func setContent(_ html: String, timeout: Duration? = nil, waitUntil: WaitUntilState? = nil) async throws {
    |              |                                   `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
255 | 		try await mainFrame.setContent(html, timeout: timeout, waitUntil: waitUntil)
256 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:508:121: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
506 | 	/// See: https://playwright.dev/docs/api/class-page#page-wait-for-selector
507 | 	@discardableResult
508 | 	public func waitForSelector(_ selector: String, state: WaitForSelectorState = .visible, strict: Bool = false, timeout: Duration? = nil) async throws -> ElementHandle? {
    |              |                                                                                                          `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
509 | 		try await mainFrame.waitForSelector(selector, state: state, strict: strict, timeout: timeout)
510 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:515:40: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
513 | 	///
514 | 	/// See: https://playwright.dev/docs/api/class-page#page-wait-for-timeout
515 | 	public func waitForTimeout(_ timeout: Duration) async throws {
    |              |                         `- error: 'Duration' is only available in iOS 16.0 or newer
    |              `- note: add '@available' attribute to enclosing instance method
516 | 		try await mainFrame.waitForTimeout(timeout)
517 | 	}
/Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift:569:41: error: 'Duration' is only available in iOS 16.0 or newer
 11 | ///
 12 | /// See: https://playwright.dev/docs/api/class-page
 13 | public final class Page: ChannelOwner, LocatorFactory, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 14 | 	/// The main frame of the page.
 15 | 	package let mainFrame: Frame
    :
565 | 	///
566 | 	/// See: https://playwright.dev/docs/api/class-page#page-screenshot
567 | 	public func screenshot(
    |              `- note: add '@available' attribute to enclosing instance method
568 | 		fullPage: Bool = false, type: ImageType? = nil, quality: Int? = nil,
569 | 		omitBackground: Bool? = nil, timeout: Duration? = nil, path: String? = nil
    |                                         `- error: 'Duration' is only available in iOS 16.0 or newer
570 | 	) async throws -> Data {
571 | 		var params = try screenshotParams(type: type, quality: quality, omitBackground: omitBackground, timeout: timeout, path: path)
/Users/admin/builder/spi-builder-workspace/src/core/API/Response.swift:38:22: error: 'Mutex' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-response
 10 | public final class Response: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	/// The URL of the response.
 12 | 	public let url: String
    :
 36 | 	}
 37 |
 38 | 	private let state = Mutex(State())
    |                      `- error: 'Mutex' is only available in iOS 18.0 or newer
 39 |
 40 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
/Users/admin/builder/spi-builder-workspace/src/core/API/Response.swift:38:22: error: 'init(_:)' is only available in iOS 18.0 or newer
  8 | ///
  9 | /// See: https://playwright.dev/docs/api/class-response
 10 | public final class Response: ChannelOwner, @unchecked Sendable {
    |                    `- note: add '@available' attribute to enclosing class
 11 | 	/// The URL of the response.
 12 | 	public let url: String
    :
 36 | 	}
 37 |
 38 | 	private let state = Mutex(State())
    |                      `- error: 'init(_:)' is only available in iOS 18.0 or newer
 39 |
 40 | 	override init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
/Users/admin/builder/spi-builder-workspace/src/core/Extensions/Duration+milliseconds.swift:3:11: error: 'Duration' is only available in iOS 16.0 or newer
 1 | import Foundation
 2 |
 3 | extension Duration {
   | |         `- error: 'Duration' is only available in iOS 16.0 or newer
   | `- note: add '@available' attribute to enclosing extension
 4 | 	/// The total number of milliseconds represented by this duration, as a `Double`.
 5 | 	package var milliseconds: Double {
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:41:21: error: 'Mutex' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 39 | 	}
 40 |
 41 | 	private let state: Mutex<State>
    |                     `- error: 'Mutex' is only available in iOS 18.0 or newer
 42 |
 43 | 	init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:17:23: error: cannot find type 'Process' in scope
 15 | 	let messages: AsyncStream<Data>
 16 |
 17 | 	private let process: Process
    |                       `- error: cannot find type 'Process' in scope
 18 | 	private let stdinHandle: FileHandle
 19 | 	private let stdoutHandle: FileHandle
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift:25:12: error: cannot find type 'Process' in scope
 23 |
 24 | 	private init(
 25 | 		process: Process,
    |            `- error: cannot find type 'Process' in scope
 26 | 		stdinHandle: FileHandle,
 27 | 		stdoutHandle: FileHandle,
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:4:21: error: 'Duration' is only available in iOS 16.0 or newer
 2 |
 3 | /// Default timeout for Playwright operations (30 seconds).
 4 | let defaultTimeout: Duration = .seconds(30)
   |     |               `- error: 'Duration' is only available in iOS 16.0 or newer
   |     `- note: add '@available' attribute to enclosing let
 5 |
 6 | /// Returns the timeout in milliseconds, falling back to the default timeout.
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:4:33: error: 'seconds' is only available in iOS 16.0 or newer
 2 |
 3 | /// Default timeout for Playwright operations (30 seconds).
 4 | let defaultTimeout: Duration = .seconds(30)
   |     |                           `- error: 'seconds' is only available in iOS 16.0 or newer
   |     `- note: add '@available' attribute to enclosing let
 5 |
 6 | /// Returns the timeout in milliseconds, falling back to the default timeout.
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:7:27: error: 'Duration' is only available in iOS 16.0 or newer
 5 |
 6 | /// Returns the timeout in milliseconds, falling back to the default timeout.
 7 | func timeoutMs(_ timeout: Duration? = nil) -> Double {
   |      |                    `- error: 'Duration' is only available in iOS 16.0 or newer
   |      `- note: add '@available' attribute to enclosing global function
 8 | 	(timeout ?? defaultTimeout).milliseconds
 9 | }
/Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift:57:40: error: 'Duration' is only available in iOS 16.0 or newer
53 | ///
54 | /// When `type` is nil, infers the format from `path` (if provided), defaulting to PNG.
55 | func screenshotParams(
   |      `- note: add '@available' attribute to enclosing global function
56 | 	type explicitType: ImageType? = nil, quality: Int? = nil,
57 | 	omitBackground: Bool? = nil, timeout: Duration? = nil, path: String? = nil
   |                                        `- error: 'Duration' is only available in iOS 16.0 or newer
58 | ) throws -> [String: Any] {
59 | 	let type: ImageType
Failed frontend command:
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/DerivedSources/resource_bundle_accessor.swift /Users/admin/builder/spi-builder-workspace/src/core/API/ActionOptions.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Artifact.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Browser.swift /Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContext.swift /Users/admin/builder/spi-builder-workspace/src/core/API/BrowserContextOptions.swift /Users/admin/builder/spi-builder-workspace/src/core/API/BrowserType.swift /Users/admin/builder/spi-builder-workspace/src/core/API/ConsoleMessage.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Dialog.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Download.swift /Users/admin/builder/spi-builder-workspace/src/core/API/ElementHandle.swift /Users/admin/builder/spi-builder-workspace/src/core/API/EvaluateSerializer.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Frame.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Keyboard.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Locator.swift /Users/admin/builder/spi-builder-workspace/src/core/API/LocatorFactory.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Mouse.swift /Users/admin/builder/spi-builder-workspace/src/core/API/NavigationOptions.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Page.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Request.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Response.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Route.swift /Users/admin/builder/spi-builder-workspace/src/core/API/Selectors.swift /Users/admin/builder/spi-builder-workspace/src/core/Error.swift /Users/admin/builder/spi-builder-workspace/src/core/Extensions/Array+RemoveByIdentity.swift /Users/admin/builder/spi-builder-workspace/src/core/Extensions/Duration+milliseconds.swift /Users/admin/builder/spi-builder-workspace/src/core/Playwright.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/CloseGuard.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/Connection.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/Driver.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/ObjectFactory.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/PlaywrightServer.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/Transport.swift /Users/admin/builder/spi-builder-workspace/src/core/Support/helpers.swift -target arm64-apple-ios15.0 -module-can-import-version Darwin 428.0.10 0 -disable-cross-import-overlay-search -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/swift/host/plugins/libFoundationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/swift-plugin-server\#FoundationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/swift/host/plugins/libObservationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/swift-plugin-server\#ObservationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/swift-plugin-server\#SwiftMacros -disable-implicit-swift-modules -Xcc -fno-implicit-modules -Xcc -fno-implicit-module-maps -explicit-swift-module-map-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright-dependencies-1.json -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS27.0.sdk -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-iphoneos -Isystem /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-iphoneos -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS27.0.sdk/Developer/Library/Frameworks -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -no-color-diagnostics -Xcc -fno-color-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -profile-generate -profile-coverage-mapping -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_AVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -validate-clang-modules-once -clang-build-session-file /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -enable-anonymous-context-mangled-names -file-compilation-dir /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/iphoneos27.0-24A430-e829b21a6f8c9b70876ba0858053c04440ceaa042ed91876912b2eeea4e3aa14.sdkstatcache -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-iphoneos/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name Playwright -package-name spi_builder_workspace -const-gather-protocols-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright_const_extract_protocols.json -disable-clang-spi -clang-target arm64-apple-ios27.0 -target-sdk-version 27.0 -target-sdk-name iphoneos27.0 -in-process-plugin-server-path /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/libSwiftInProcPluginServer.dylib -emit-module-doc-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright.swiftdoc -emit-module-source-info-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright.swiftsourceinfo -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright-Swift.h -serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright-primary-emit-module.dia -emit-dependencies-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright-primary-emit-module.d -parse-as-library -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright.swiftmodule -emit-abi-descriptor-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Playwright.build/Debug-iphoneos/Playwright-t.build/Objects-normal/arm64/Playwright.abi.json
SwiftCompile normal arm64 (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode

SwiftCompile normal arm64 Compiling\ Playwright.swift,\ ChannelOwner.swift,\ CloseGuard.swift /Users/admin/builder/spi-builder-workspace/src/core/Playwright.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift /Users/admin/builder/spi-builder-workspace/src/core/Protocol/CloseGuard.swift (in target 'Playwright' from project 'Playwright')
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:41:21: error: 'Mutex' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 39 | 	}
 40 |
 41 | 	private let state: Mutex<State>
    |                     `- error: 'Mutex' is only available in iOS 18.0 or newer
 42 |
 43 | 	init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:48:11: error: 'Mutex' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 41 | 	private let state: Mutex<State>
 42 |
 43 | 	init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |  `- note: add '@available' attribute to enclosing initializer
 44 | 		self.guid = guid
 45 | 		self.type = type
 46 | 		self.connection = connection
 47 | 		self.initializer = initializer
 48 | 		state = Mutex(State(parent: parent))
    |           |- error: 'Mutex' is only available in iOS 18.0 or newer
    |           `- note: add 'if #available' version check
 49 | 	}
 50 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:48:11: error: 'init(_:)' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 41 | 	private let state: Mutex<State>
 42 |
 43 | 	init(connection: Connection, parent: ChannelOwner?, type: String, guid: String, initializer: [String: Any]) {
    |  `- note: add '@available' attribute to enclosing initializer
 44 | 		self.guid = guid
 45 | 		self.type = type
 46 | 		self.connection = connection
 47 | 		self.initializer = initializer
 48 | 		state = Mutex(State(parent: parent))
    |           |- error: 'init(_:)' is only available in iOS 18.0 or newer
    |           `- note: add 'if #available' version check
 49 | 	}
 50 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:64:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 61 |
 62 | 	/// Parent in the object hierarchy.
 63 | 	var parent: ChannelOwner? {
    |      `- note: add '@available' attribute to enclosing property
 64 | 		state.withLock { $0.parent }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 65 | 	}
 66 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:69:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 66 |
 67 | 	/// Children in the object hierarchy, keyed by GUID.
 68 | 	var children: [String: ChannelOwner] {
    |      `- note: add '@available' attribute to enclosing property
 69 | 		state.withLock { $0.children }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 70 | 	}
 71 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:74:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 71 |
 72 | 	/// Looks up a single child by GUID.
 73 | 	func child(forGuid guid: String) -> ChannelOwner? {
    |       `- note: add '@available' attribute to enclosing instance method
 74 | 		state.withLock { $0.children[guid] }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 75 | 	}
 76 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:78:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 75 | 	}
 76 |
 77 | 	func setParent(_ newParent: ChannelOwner?) {
    |       `- note: add '@available' attribute to enclosing instance method
 78 | 		state.withLock { $0.parent = newParent }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 79 | 	}
 80 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:89:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 86 | 	/// - Parameter event: The event name (e.g. `"close"`, `"page"`).
 87 | 	/// - Parameter handler: The closure to invoke when the event is received.
 88 | 	func on(_ event: String, handler: @escaping @Sendable ([String: Any]) -> Void) {
    |       `- note: add '@available' attribute to enclosing instance method
 89 | 		state.withLock { $0.eventHandlers[event, default: []].append(handler) }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
 90 | 	}
 91 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:102:24: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
 99 | 	/// no-ops. This prevents double-firing when `Connection.close()` emits
100 | 	/// on objects that already received a server-side close event.
101 | 	func emit(_ event: String, params: [String: Any]) {
    |       `- note: add '@available' attribute to enclosing instance method
102 | 		let handlers = state.withLock { state in
    |                        |- error: 'withLock' is only available in iOS 18.0 or newer
    |                        `- note: add 'if #available' version check
103 | 			if event == "close" {
104 | 				guard !state.closeEmitted else {
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:118:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
115 | 	}
116 |
117 | 	func addChild(_ child: ChannelOwner) {
    |       `- note: add '@available' attribute to enclosing instance method
118 | 		state.withLock { $0.children[child.guid] = child }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
119 | 	}
120 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:122:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
119 | 	}
120 |
121 | 	func removeChild(_ child: ChannelOwner) {
    |       `- note: add '@available' attribute to enclosing instance method
122 | 		state.withLock { _ = $0.children.removeValue(forKey: child.guid) }
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
123 | 	}
124 |
/Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift:130:9: error: 'withLock' is only available in iOS 18.0 or newer
 17 | ///
 18 | /// See: https://github.com/microsoft/playwright-python/blob/main/playwright/_impl/_connection.py
 19 | public class ChannelOwner: @unchecked Sendable {
    |              `- note: add '@available' attribute to enclosing class
 20 | 	/// The protocol type name (e.g. "Browser", "Page", "BrowserType").
 21 | 	let type: String
    :
127 | 	/// Called by the connection during shutdown to break strong reference
128 | 	/// cycles between parent ↔ child maps.
129 | 	func dispose() {
    |       `- note: add '@available' attribute to enclosing instance method
130 | 		state.withLock { state in
    |         |- error: 'withLock' is only available in iOS 18.0 or newer
    |         `- note: add 'if #available' version check
131 | 			state.parent = nil
132 | 			state.children.removeAll()
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/Playwright.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile Playwright.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/Protocol/ChannelOwner.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile ChannelOwner.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/src/core/Protocol/CloseGuard.swift (in target 'Playwright' from project 'Playwright')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile CloseGuard.swift
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
2026-09-24 14:37:56.643 xcodebuild[832:5151] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
** BUILD FAILED **
The following build commands failed:
	SwiftEmitModule normal arm64 Emitting\ module\ for\ Playwright (in target 'Playwright' from project 'Playwright')
	SwiftCompile normal arm64 (in target 'Playwright' from project 'Playwright')
	Building workspace Playwright with scheme Playwright-Package
(3 failures)
BUILD FAILURE 6.4 iOS