@devicelab/maestro-runner-darwin-arm64 1.1.27 → 1.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/README.md +31 -19
  2. package/bin/maestro-runner +0 -0
  3. package/drivers/LICENSE-BINARIES.md +38 -0
  4. package/drivers/android/devicelab-android-driver.apk +0 -0
  5. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner.xcodeproj/project.pbxproj +38 -14
  6. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/Bridging-Header.h +3 -0
  7. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerAXSnapshotBridge.h +51 -0
  8. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerAXSnapshotBridge.m +439 -0
  9. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerDefaults.h +12 -0
  10. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerDefaults.m +59 -0
  11. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+AXSnapshotFallback.swift +128 -0
  12. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+CommandExecution.swift +68 -14
  13. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Interaction.swift +256 -48
  14. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Lifecycle.swift +102 -6
  15. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Models.swift +74 -1
  16. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Settle.swift +89 -0
  17. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Snapshot.swift +279 -82
  18. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+SystemModal.swift +1 -1
  19. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Transport.swift +7 -2
  20. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests.swift +44 -10
  21. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerXCTestTimeouts.h +87 -0
  22. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerXCTestTimeouts.m +207 -0
  23. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SnapshotParams.m +22 -6
  24. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.h +23 -0
  25. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.m +77 -30
  26. package/drivers/ios/DevicelabIOSRunner/PROTOCOL.md +26 -3
  27. package/drivers/ios/WebDriverAgent/.editorconfig +11 -0
  28. package/drivers/ios/WebDriverAgent/.github/dependabot.yml +1 -1
  29. package/drivers/ios/WebDriverAgent/.github/workflows/functional-test.yml +65 -24
  30. package/drivers/ios/WebDriverAgent/.github/workflows/publish.js.yml +15 -8
  31. package/drivers/ios/WebDriverAgent/.github/workflows/unit-test.yml +4 -2
  32. package/drivers/ios/WebDriverAgent/.github/workflows/wda-package.yml +9 -2
  33. package/drivers/ios/WebDriverAgent/.github/workflows/wda-tests.yml +54 -29
  34. package/drivers/ios/WebDriverAgent/CHANGELOG.md +546 -0
  35. package/drivers/ios/WebDriverAgent/Fastlane/Fastfile +8 -1
  36. package/drivers/ios/WebDriverAgent/Gemfile +1 -0
  37. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/CDStructures.h +5 -26
  38. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSFastEnumeration-Protocol.h +23 -0
  39. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCAXClient_iOS.h +80 -44
  40. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationQuery.h +18 -11
  41. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDebugLogDelegate-Protocol.h +17 -5
  42. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEvent.h +52 -19
  43. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEventPath.h +55 -33
  44. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSynthesizedEventRecord.h +44 -21
  45. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAggregateSuiteRunStatistics.h +38 -0
  46. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAttachmentManager.h +33 -0
  47. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTCapabilities.h +35 -0
  48. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTCapabilitiesProviding-Protocol.h +23 -0
  49. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSetTransformer-Protocol.h +30 -13
  50. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSnapshotAttributeDataSource-Protocol.h +33 -0
  51. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSnapshotProvider-Protocol.h +23 -0
  52. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTExpectedFailureContextManager.h +35 -0
  53. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTFuture.h +45 -0
  54. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTHarnessEventReporting-Protocol.h +29 -0
  55. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTIssue.h +49 -0
  56. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTIssueHandling-Protocol.h +26 -0
  57. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMacCatalystStatusProviding-Protocol.h +23 -0
  58. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMeasureOptions.h +48 -0
  59. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMemoryChecker.h +50 -0
  60. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMemoryCheckerDelegate-Protocol.h +26 -0
  61. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingChannel_IDEToRunner-Protocol.h +27 -0
  62. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingChannel_RunnerToDaemon-Protocol.h +39 -0
  63. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingChannel_RunnerToIDE-Protocol.h +32 -0
  64. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ActivityReporting-Protocol.h +24 -0
  65. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_AttachmentFutureResultStatusUpdating-Protocol.h +23 -0
  66. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_BundleRequesting-Protocol.h +24 -0
  67. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_CapabilityExchange-Protocol.h +56 -0
  68. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_DebugLogging-Protocol.h +23 -0
  69. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_EventSynthesis-Protocol.h +34 -0
  70. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ForcePressureSupportQuerying-Protocol.h +25 -0
  71. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_HIDEventRecording-Protocol.h +25 -0
  72. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_MemoryTesting-Protocol.h +23 -0
  73. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_PerformanceMeasurementReporting-Protocol.h +23 -0
  74. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ProcessMonitoring-Protocol.h +25 -0
  75. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ProtectedResourceAuthorization-Protocol.h +22 -0
  76. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_ScreenRecording-Protocol.h +24 -0
  77. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SelfDiagnosisIssueReporting-Protocol.h +23 -0
  78. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SignpostRequesting-Protocol.h +24 -0
  79. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SiriAutomation-Protocol.h +27 -0
  80. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_SystemConfiguration-Protocol.h +27 -0
  81. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_TelemetrySending-Protocol.h +23 -0
  82. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_TestExecution-Protocol.h +28 -0
  83. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_TestReporting-Protocol.h +40 -0
  84. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_UIAutomation-Protocol.h +29 -0
  85. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_UIAutomationRunnerEventReporting-Protocol.h +27 -0
  86. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMessagingRole_UserPresence-Protocol.h +24 -0
  87. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMetricDiagnosticHelper.h +49 -0
  88. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectationObject-Protocol.h +15 -7
  89. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTPromise.h +30 -0
  90. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRemoteSignpostListenerProxy-Protocol.h +29 -0
  91. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRepetitionPolicy.h +43 -0
  92. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSession.h +50 -0
  93. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionConfiguration-Protocol.h +27 -0
  94. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionIssueReporter-Protocol.h +23 -0
  95. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionTestContainer-Protocol.h +26 -0
  96. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTReportingSessionTestReporter.h +51 -0
  97. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerAutomationSession-Protocol.h +38 -0
  98. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerDaemonSession.h +76 -78
  99. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerDaemonSessionUIAutomationDelegate-Protocol.h +33 -0
  100. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerIDESession.h +87 -53
  101. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerIDESessionDelegate-Protocol.h +24 -0
  102. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRuntimeDiagnosticsPolicy.h +36 -0
  103. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRuntimeIssueDetectionPolicy.h +39 -0
  104. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTScreenCapturePolicy.h +35 -0
  105. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSignpostListener-Protocol.h +25 -0
  106. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSkippedTestContext.h +37 -0
  107. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSourceCodeContext.h +39 -0
  108. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTSourceCodeLocation.h +31 -0
  109. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTagSelection.h +41 -0
  110. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestIdentifier.h +81 -0
  111. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestIdentifierSet.h +54 -0
  112. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestSelection.h +35 -0
  113. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiter.h +45 -46
  114. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManagement-Protocol.h +17 -6
  115. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManager-Protocol.h +25 -0
  116. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterWait.h +40 -0
  117. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTest.h +47 -28
  118. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCase.h +165 -87
  119. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseDiscoveryUIAutomationDelegate-Protocol.h +20 -0
  120. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseRun.h +19 -9
  121. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseUIAutomationDelegate-Protocol.h +25 -0
  122. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCastMethodNamesUIAutomationDelegate-Protocol.h +24 -0
  123. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestConfiguration.h +83 -55
  124. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriver.h +54 -28
  125. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectation.h +37 -26
  126. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationDelegate-Protocol.h +15 -6
  127. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservationCenter.h +49 -25
  128. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestRun.h +33 -28
  129. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIAXNotificationHandling-Protocol.h +25 -0
  130. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIAccessibilityInterface-Protocol.h +58 -0
  131. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIAlertMonitoring-Protocol.h +27 -0
  132. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplication.h +87 -49
  133. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationAutomationSessionProviding-Protocol.h +26 -0
  134. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationImpl.h +78 -26
  135. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationImplReporter-Protocol.h +26 -0
  136. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationManaging-Protocol.h +23 -0
  137. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationMonitor-Protocol.h +43 -0
  138. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationOpenRequest.h +34 -0
  139. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationPlatformServicesProviderDelegate-Protocol.h +25 -0
  140. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcess.h +89 -69
  141. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcessDelegate-Protocol.h +25 -0
  142. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcessManaging-Protocol.h +26 -0
  143. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcessTracker-Protocol.h +28 -0
  144. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationRegistry.h +32 -0
  145. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIButtonConsole.h +26 -0
  146. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUICoordinate.h +37 -32
  147. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDevice.h +121 -17
  148. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDeviceAutomationModeInterface-Protocol.h +25 -0
  149. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDeviceDelayedAttachmentTransferSupportInterface-Protocol.h +22 -0
  150. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDeviceEventAndStateInterface-Protocol.h +40 -0
  151. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElement.h +192 -59
  152. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementAttributesPrivate-Protocol.h +26 -0
  153. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementEventTarget-Protocol.h +38 -0
  154. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementQuery.h +154 -58
  155. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementTypeQueryProvider_Private-Protocol.h +24 -0
  156. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIEventRecording-Protocol.h +37 -0
  157. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIHitPointResult.h +16 -11
  158. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIInterruptionMonitoring-Protocol.h +27 -0
  159. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIIssueDiagnosticsProviding-Protocol.h +23 -0
  160. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIKnobControl.h +26 -0
  161. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUILocation.h +24 -0
  162. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIPlatformApplicationServicesProviding-Protocol.h +33 -0
  163. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRemoteAccessibilityInterface-Protocol.h +45 -0
  164. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRemoteDeviceRunner-Protocol.h +24 -0
  165. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRemoteSiriInterface-Protocol.h +30 -0
  166. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIResetAuthorizationStatusOfProtectedResourcesInterface-Protocol.h +22 -0
  167. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreen.h +45 -19
  168. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreenDataSource-Protocol.h +28 -12
  169. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUISiriService.h +39 -0
  170. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUISystem.h +26 -0
  171. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIXcodeApplicationManaging-Protocol.h +27 -0
  172. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_TtC10XCTestCore19XCTReportingContext.h +26 -0
  173. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTMessaging_VoidProtocol-Protocol.h +20 -0
  174. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationInternal-Protocol.h +26 -0
  175. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationPrivate-Protocol.h +27 -0
  176. package/drivers/ios/WebDriverAgent/README.md +0 -10
  177. package/drivers/ios/WebDriverAgent/Scripts/build-webdriveragent.mjs +30 -22
  178. package/drivers/ios/WebDriverAgent/Scripts/build.sh +14 -1
  179. package/drivers/ios/WebDriverAgent/Scripts/embed-runner-icon.sh +118 -0
  180. package/drivers/ios/WebDriverAgent/Scripts/fetch-prebuilt-wda.mjs +34 -22
  181. package/drivers/ios/WebDriverAgent/Scripts/update-wda-version.mjs +12 -10
  182. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.pbxproj +2583 -659
  183. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp.xcscheme +1 -1
  184. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp_tvOS.xcscheme +78 -0
  185. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp_watchOS.xcscheme +78 -0
  186. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_1.xcscheme +8 -1
  187. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_2.xcscheme +8 -1
  188. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_3.xcscheme +8 -1
  189. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_tvOS.xcscheme +93 -0
  190. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_watchOS.xcscheme +93 -0
  191. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib.xcscheme +1 -1
  192. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib_tvOS.xcscheme +1 -1
  193. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib_watchOS.xcscheme +85 -0
  194. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner-nodebug.xcscheme +1 -1
  195. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner.xcscheme +20 -2
  196. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner_tvOS.xcscheme +1 -1
  197. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner_watchOS.xcscheme +128 -0
  198. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSDictionary+FBUtf8SafeDictionary.m +45 -27
  199. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.h +1 -0
  200. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.m +91 -0
  201. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.h +27 -3
  202. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.m +125 -55
  203. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.h +15 -0
  204. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.m +32 -3
  205. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.m +2 -3
  206. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.m +9 -16
  207. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.h +47 -4
  208. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.m +173 -83
  209. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.h +9 -1
  210. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.m +45 -5
  211. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBVoiceOver.h +66 -0
  212. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBVoiceOver.m +218 -0
  213. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBClassChain.m +144 -3
  214. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.m +1 -1
  215. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBForceTouch.m +5 -2
  216. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBPickerWheel.m +4 -3
  217. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.m +113 -50
  218. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTVFocuse.m +5 -5
  219. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.h +33 -0
  220. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.m +39 -5
  221. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.m +9 -7
  222. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBVisibleFrame.m +12 -3
  223. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.m +6 -1
  224. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.m +1 -0
  225. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBAlertViewCommands.m +10 -36
  226. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.m +155 -8
  227. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.m +45 -19
  228. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBFindElementCommands.m +7 -7
  229. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBOrientationCommands.m +9 -2
  230. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBScreenshotCommands.m +3 -3
  231. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.m +220 -296
  232. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.h +43 -30
  233. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.m +273 -93
  234. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Info.plist +2 -2
  235. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElement.h +3 -0
  236. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptionHandler.m +8 -1
  237. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.h +9 -0
  238. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.m +3 -0
  239. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPServer.h +97 -0
  240. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPServer.m +932 -0
  241. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponseJSONPayload.m +2 -3
  242. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponsePayload.m +1 -1
  243. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.h +9 -0
  244. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.m +9 -0
  245. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.h +9 -0
  246. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.m +28 -12
  247. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.m +1 -1
  248. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.h +16 -0
  249. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.m +252 -42
  250. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.h +57 -9
  251. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.m +183 -33
  252. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.h +18 -2
  253. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m +92 -37
  254. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshot.h +1 -1
  255. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteRequest.h +28 -0
  256. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteRequest.m +25 -0
  257. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteResponse.h +30 -0
  258. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/RouteResponse.m +54 -0
  259. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.m +10 -2
  260. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAlertsMonitor.m +21 -5
  261. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.h +2 -1
  262. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.m +3 -3
  263. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.h +1 -3
  264. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.m +0 -1
  265. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBClassChainQueryParser.m +1 -1
  266. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.h +106 -136
  267. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.m +150 -386
  268. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m +6 -0
  269. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.m +54 -29
  270. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBLogger.m +2 -2
  271. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMacros.h +14 -5
  272. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.h +54 -1
  273. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.m +48 -2
  274. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.h +12 -0
  275. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.m +119 -24
  276. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.h +1 -1
  277. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.m +9 -5
  278. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.h +10 -0
  279. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.m +32 -0
  280. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.m +3 -3
  281. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.h +3 -1
  282. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.m +3 -1
  283. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettingsHandler.h +35 -0
  284. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettingsHandler.m +374 -0
  285. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker-Private.h +10 -0
  286. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.h +29 -4
  287. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.m +62 -27
  288. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.h +1 -1
  289. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.m +28 -10
  290. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.h +124 -2
  291. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.m +142 -21
  292. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.h +2 -2
  293. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m +22 -19
  294. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.h +1 -8
  295. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.m +57 -27
  296. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath-Private.h +5 -0
  297. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.m +69 -14
  298. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPathExtensions.h +40 -0
  299. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPathExtensions.m +418 -0
  300. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.h +2 -2
  301. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.m +54 -34
  302. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/WebDriverAgentLib.h +1 -0
  303. package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
  304. package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Assets.xcassets/AppIcon.appiconset/icon-1024.png +0 -0
  305. package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Assets.xcassets/Contents.json +6 -0
  306. package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/UITestingUITests.m +7 -7
  307. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/COORDINATE_PROBE.md +50 -0
  308. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBCoordinateProbeViewController.h +4 -0
  309. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBCoordinateProbeViewController.m +176 -0
  310. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBScrollViewController.m +15 -2
  311. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchViewController.h +1 -1
  312. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.h +2 -1
  313. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.m +14 -3
  314. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.m +44 -3
  315. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Info.plist +2 -2
  316. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Resources/Base.lproj/Main.storyboard +52 -22
  317. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/AppDelegate.h +13 -0
  318. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/AppDelegate.m +26 -0
  319. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/Info.plist +41 -0
  320. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/SceneDelegate.h +15 -0
  321. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/SceneDelegate.m +22 -0
  322. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/ViewController.h +13 -0
  323. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/ViewController.m +79 -0
  324. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_tvOS/main.m +17 -0
  325. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_watchOS/ContentView.swift +31 -0
  326. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp_watchOS/WatchSpikeApp.swift +18 -0
  327. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAlertTests.m +37 -56
  328. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAutoAlertsHandlerTests.m +10 -4
  329. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBConfigurationTests.m +41 -8
  330. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementAttributeTests.m +10 -1
  331. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementSwipingTests.m +4 -4
  332. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementVisibilityTests.m +14 -19
  333. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBForceTouchTests.m +6 -3
  334. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationAppTests.m +87 -0
  335. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.h +30 -5
  336. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.m +51 -15
  337. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBPasteboardTests.m +3 -2
  338. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSafariAlertTests.m +6 -2
  339. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScreenTests.m +28 -1
  340. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScrollingTests.m +3 -6
  341. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTapTest.m +83 -0
  342. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBVideoRecordingTests.m +1 -2
  343. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBVoiceOverTests.m +103 -0
  344. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CMultiTouchActionsIntegrationTests.m +35 -0
  345. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTouchActionsIntegrationTests.m +96 -13
  346. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTypeActionsTests.m +3 -3
  347. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBXPathIntegrationTests.m +108 -5
  348. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCElementSnapshotHelperTests.m +1 -7
  349. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIApplicationHelperTests.m +1 -1
  350. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m +21 -5
  351. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceRotationTests.m +21 -0
  352. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementAttributesTests.m +5 -5
  353. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementFBFindTests.m +98 -10
  354. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_tvOS/FBTVFocusIntegrationTests.m +84 -0
  355. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_tvOS/Info.plist +24 -0
  356. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/IntegrationTests_watchOS-Bridging-Header.h +23 -0
  357. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAAlertIntegrationTests.swift +25 -0
  358. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAAppLifecycleIntegrationTests.swift +37 -0
  359. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAClickIntegrationTests.swift +25 -0
  360. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDADeviceIntegrationTests.swift +92 -0
  361. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAElementAttributeIntegrationTests.swift +39 -0
  362. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAFindIntegrationTests.swift +101 -0
  363. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAMjpegStreamingIntegrationTests.swift +81 -0
  364. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAScreenshotAndSourceIntegrationTests.swift +54 -0
  365. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDATypingIntegrationTests.swift +73 -0
  366. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests_watchOS/WDAWatchInProcessTestCase.swift +51 -0
  367. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.h +4 -0
  368. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.m +10 -0
  369. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBConfigurationTests.m +18 -6
  370. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBCustomCommandsTests.m +83 -0
  371. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBHTTPServerSessionTests.m +133 -0
  372. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBHTTPServerTests.m +264 -0
  373. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBMathUtilsTests.m +38 -0
  374. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBResponseJSONPayloadTests.m +76 -0
  375. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSessionTests.m +3 -3
  376. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBTouchableViewTests.m +121 -0
  377. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXCAXClientProxyTests.m +90 -0
  378. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXPathTests.m +127 -2
  379. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSDictionaryFBUtf8SafeTests.m +43 -0
  380. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCAccessibilityElementDouble.h +27 -0
  381. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCAccessibilityElementDouble.m +23 -0
  382. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCElementSnapshotDouble.h +43 -0
  383. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/FBXCElementSnapshotDouble.m +24 -0
  384. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.h +1 -0
  385. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.m +1 -0
  386. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/FBTVNavigationTrackerTests.m +48 -0
  387. package/drivers/ios/WebDriverAgent/lib/check-dependencies.ts +42 -21
  388. package/drivers/ios/WebDriverAgent/lib/constants.ts +12 -2
  389. package/drivers/ios/WebDriverAgent/lib/index.ts +7 -0
  390. package/drivers/ios/WebDriverAgent/lib/logger.ts +1 -1
  391. package/drivers/ios/WebDriverAgent/lib/no-session-proxy.ts +8 -14
  392. package/drivers/ios/WebDriverAgent/lib/types.ts +108 -8
  393. package/drivers/ios/WebDriverAgent/lib/utils/index.ts +15 -0
  394. package/drivers/ios/WebDriverAgent/lib/utils/module.ts +24 -0
  395. package/drivers/ios/WebDriverAgent/lib/utils/platform.ts +34 -0
  396. package/drivers/ios/WebDriverAgent/lib/utils/processes.ts +166 -0
  397. package/drivers/ios/WebDriverAgent/lib/utils/security.ts +13 -0
  398. package/drivers/ios/WebDriverAgent/lib/utils/xctestrun.ts +173 -0
  399. package/drivers/ios/WebDriverAgent/lib/wda-strategies.ts +333 -0
  400. package/drivers/ios/WebDriverAgent/lib/webdriveragent.ts +336 -428
  401. package/drivers/ios/WebDriverAgent/lib/xcodebuild.ts +232 -127
  402. package/drivers/ios/WebDriverAgent/oxfmt.config.mjs +6 -0
  403. package/drivers/ios/WebDriverAgent/oxlint.config.mjs +6 -0
  404. package/drivers/ios/WebDriverAgent/package.json +70 -79
  405. package/drivers/ios/WebDriverAgent/release.config.mjs +14 -0
  406. package/drivers/ios/WebDriverAgent/test/functional/desired.ts +10 -6
  407. package/drivers/ios/WebDriverAgent/test/functional/helpers/simulator.ts +39 -28
  408. package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e.spec.ts +100 -0
  409. package/drivers/ios/WebDriverAgent/test/unit/processes.spec.ts +99 -0
  410. package/drivers/ios/WebDriverAgent/test/unit/utils.spec.ts +235 -0
  411. package/drivers/ios/WebDriverAgent/test/unit/wda-cleanup.spec.ts +136 -0
  412. package/drivers/ios/WebDriverAgent/test/unit/webdriveragent.spec.ts +562 -0
  413. package/drivers/ios/WebDriverAgent/tsconfig.json +6 -8
  414. package/drivers/ios/devicelab-ios-agent/README.md +51 -0
  415. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/DevicelabIOSAgent +0 -0
  416. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/Info.plist +0 -0
  417. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgent.app/PkgInfo +1 -0
  418. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/DevicelabIOSAgentUITests-Runner +0 -0
  419. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/Info.plist +302 -0
  420. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PkgInfo +1 -0
  421. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/DevicelabIOSAgentUITests +0 -0
  422. package/drivers/ios/devicelab-ios-agent/device/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/Info.plist +0 -0
  423. package/drivers/ios/devicelab-ios-agent/device/agent.xctestrun +120 -0
  424. package/drivers/ios/devicelab-ios-agent/device/manifest.json +18 -0
  425. package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub/StubApp.swift +10 -0
  426. package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub.xcodeproj/project.pbxproj +394 -0
  427. package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  428. package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStub.xcodeproj/xcshareddata/xcschemes/SigningStubUITests.xcscheme +100 -0
  429. package/drivers/ios/devicelab-ios-agent/signing-stub/SigningStubUITests/StubUITests.swift +8 -0
  430. package/drivers/ios/devicelab-ios-agent/signing-stub/project.yml +64 -0
  431. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/DevicelabIOSAgent +0 -0
  432. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/Info.plist +0 -0
  433. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgent.app/PkgInfo +1 -0
  434. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/DevicelabIOSAgentUITests-Runner +0 -0
  435. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Info.plist +0 -0
  436. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/CoreGraphics.swiftoverlay +3 -0
  437. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/CoreImage.swiftoverlay +3 -0
  438. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/CoreTransferable.swiftoverlay +3 -0
  439. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/Foundation.swiftoverlay +3 -0
  440. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftcrossimport/UIKit.swiftoverlay +3 -0
  441. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  442. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/arm64-apple-ios-simulator.swiftinterface +1431 -0
  443. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  444. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Modules/Testing.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +1431 -0
  445. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/Testing +0 -0
  446. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/_CodeSignature/CodeResources +212 -0
  447. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/Testing.framework/version.plist +18 -0
  448. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/Info.plist +0 -0
  449. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/XCTAutomationSupport +0 -0
  450. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/_CodeSignature/CodeResources +113 -0
  451. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTAutomationSupport.framework/version.plist +18 -0
  452. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCAbstractTest.h +140 -0
  453. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTActivity.h +33 -0
  454. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTAttachment+XCUIScreenshot.h +32 -0
  455. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTAttachment.h +219 -0
  456. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTAttachmentLifetime.h +28 -0
  457. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTContext.h +65 -0
  458. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTDarwinNotificationExpectation.h +60 -0
  459. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTExpectedFailure.h +134 -0
  460. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTIssue.h +143 -0
  461. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTKVOExpectation.h +110 -0
  462. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTMeasureOptions.h +57 -0
  463. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTMetric+UIAutomation.h +77 -0
  464. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTMetric.h +390 -0
  465. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTNSNotificationExpectation.h +92 -0
  466. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTNSPredicateExpectation.h +74 -0
  467. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTSourceCodeContext.h +109 -0
  468. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTWaiter.h +304 -0
  469. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTest.apinotes +182 -0
  470. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTest.h +41 -0
  471. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestAssertions.h +277 -0
  472. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestAssertionsImpl.h +503 -0
  473. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase+AsynchronousTesting.h +276 -0
  474. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase+XCUIApplicationLaunchTesting.h +36 -0
  475. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase+XCUIInterruptionMonitoring.h +95 -0
  476. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCase.h +443 -0
  477. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCaseRun.h +50 -0
  478. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestCore.h +42 -0
  479. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestDefines.h +135 -0
  480. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestErrors.h +33 -0
  481. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestExpectation.h +73 -0
  482. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestLog.h +56 -0
  483. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestObservation.h +195 -0
  484. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestObservationCenter.h +60 -0
  485. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestObserver.h +61 -0
  486. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestProbe.h +55 -0
  487. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestRun.h +223 -0
  488. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSkipping.h +41 -0
  489. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSkippingImpl.h +46 -0
  490. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSuite.h +92 -0
  491. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCTestSuiteRun.h +50 -0
  492. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAccessibilityAuditIssue.h +9 -0
  493. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAccessibilityAuditTypes.h +9 -0
  494. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIApplication.h +9 -0
  495. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAutomation.h +9 -0
  496. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIAutomationDefines.h +9 -0
  497. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUICoordinate.h +9 -0
  498. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIDevice.h +9 -0
  499. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIDeviceButton.h +9 -0
  500. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIDeviceHandGesture.h +9 -0
  501. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElement.h +9 -0
  502. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementAttributes.h +9 -0
  503. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementQuery.h +9 -0
  504. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementTypeQueryProvider.h +9 -0
  505. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIElementTypes.h +9 -0
  506. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIKeyboardKeys.h +9 -0
  507. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUILocation.h +9 -0
  508. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIProtectedResource.h +9 -0
  509. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIRemote.h +9 -0
  510. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIScreen.h +9 -0
  511. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIScreenshot.h +9 -0
  512. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUIScreenshotProviding.h +9 -0
  513. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUISiriService.h +9 -0
  514. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Headers/XCUISystem.h +9 -0
  515. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Info.plist +0 -0
  516. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/Modules/module.modulemap +30 -0
  517. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/XCTest +0 -0
  518. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/_CodeSignature/CodeResources +817 -0
  519. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTest.framework/version.plist +18 -0
  520. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/Info.plist +0 -0
  521. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/XCTestCore +0 -0
  522. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/_CodeSignature/CodeResources +113 -0
  523. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestCore.framework/version.plist +18 -0
  524. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/Info.plist +0 -0
  525. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/XCTestSupport +0 -0
  526. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/_CodeSignature/CodeResources +113 -0
  527. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCTestSupport.framework/version.plist +18 -0
  528. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAccessibilityAuditIssue.h +33 -0
  529. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAccessibilityAuditTypes.h +36 -0
  530. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIApplication.h +154 -0
  531. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAutomation.apinotes +88 -0
  532. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAutomation.h +30 -0
  533. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIAutomationDefines.h +62 -0
  534. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUICoordinate.h +99 -0
  535. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIDevice.h +133 -0
  536. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIDeviceButton.h +40 -0
  537. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIDeviceHandGesture.h +24 -0
  538. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElement.h +366 -0
  539. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementAttributes.h +106 -0
  540. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementQuery.h +81 -0
  541. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementTypeQueryProvider.h +109 -0
  542. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIElementTypes.h +95 -0
  543. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIKeyboardKeys.h +68 -0
  544. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUILocation.h +35 -0
  545. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIProtectedResource.h +52 -0
  546. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIRemote.h +77 -0
  547. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIScreen.h +36 -0
  548. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIScreenshot.h +42 -0
  549. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIScreenshotProviding.h +26 -0
  550. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUISiriService.h +45 -0
  551. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUISystem.h +26 -0
  552. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIVoiceOverOutput.h +26 -0
  553. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIVoiceOverService.h +72 -0
  554. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Headers/XCUIVoiceOverServiceError.h +25 -0
  555. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Info.plist +0 -0
  556. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  557. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/arm64-apple-ios-simulator.swiftinterface +30 -0
  558. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  559. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/XCUIAutomation.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +30 -0
  560. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/Modules/module.modulemap +4 -0
  561. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/XCUIAutomation +0 -0
  562. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/_CodeSignature/CodeResources +465 -0
  563. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUIAutomation.framework/version.plist +18 -0
  564. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/Info.plist +0 -0
  565. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/XCUnit +0 -0
  566. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/_CodeSignature/CodeResources +113 -0
  567. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/XCUnit.framework/version.plist +18 -0
  568. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Info.plist +0 -0
  569. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  570. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/arm64-apple-ios-simulator.swiftinterface +41 -0
  571. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  572. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/Modules/_Testing_Foundation.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +41 -0
  573. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/_CodeSignature/CodeResources +157 -0
  574. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/_Testing_Foundation +0 -0
  575. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/_Testing_Foundation.framework/version.plist +18 -0
  576. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/libXCTestBundleInject.dylib +0 -0
  577. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/libXCTestSwiftSupport.dylib +0 -0
  578. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Frameworks/lib_TestingInterop.dylib +0 -0
  579. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/Info.plist +302 -0
  580. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PkgInfo +1 -0
  581. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/DevicelabIOSAgentUITests +0 -0
  582. package/drivers/ios/devicelab-ios-agent/simulator/DevicelabIOSAgentUITests-Runner.app/PlugIns/DevicelabIOSAgentUITests.xctest/Info.plist +0 -0
  583. package/drivers/ios/devicelab-ios-agent/simulator/agent.xctestrun +140 -0
  584. package/drivers/ios/devicelab-ios-agent/simulator/manifest.json +162 -0
  585. package/package.json +1 -1
  586. package/drivers/ios/WebDriverAgent/.mocharc.js +0 -4
  587. package/drivers/ios/WebDriverAgent/.releaserc +0 -45
  588. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSString-XCTAdditions.h +0 -11
  589. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSValue-XCTestAdditions.h +0 -11
  590. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIGestureRecognizer-RecordingAdditions.h +0 -11
  591. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UILongPressGestureRecognizer-RecordingAdditions.h +0 -11
  592. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPanGestureRecognizer-RecordingAdditions.h +0 -11
  593. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPinchGestureRecognizer-RecordingAdditions.h +0 -11
  594. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UISwipeGestureRecognizer-RecordingAdditions.h +0 -11
  595. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UITapGestureRecognizer-RecordingAdditions.h +0 -11
  596. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCActivityRecord.h +0 -39
  597. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor.h +0 -44
  598. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor_iOS.h +0 -18
  599. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDeviceEvent.h +0 -27
  600. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCEventGenerator.h +0 -73
  601. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyMappingPath.h +0 -36
  602. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardInputSolver.h +0 -41
  603. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardKeyMap.h +0 -101
  604. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardLayout.h +0 -35
  605. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeRecording.h +0 -42
  606. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNode.h +0 -84
  607. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNodeEnumerator.h +0 -18
  608. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicationRecord.h +0 -29
  609. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicatorHolder.h +0 -14
  610. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAXClient-Protocol.h +0 -14
  611. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity-Protocol.h +0 -16
  612. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity.h +0 -23
  613. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAutomationTarget-Protocol.h +0 -12
  614. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTDarwinNotificationExpectation.h +0 -23
  615. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTKVOExpectation.h +0 -28
  616. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMetric.h +0 -29
  617. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSNotificationExpectation.h +0 -27
  618. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectation.h +0 -24
  619. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerAutomationSession.h +0 -21
  620. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSession.h +0 -25
  621. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSessionDelegate-Protocol.h +0 -17
  622. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTUIApplicationMonitor-Protocol.h +0 -17
  623. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegate-Protocol.h +0 -16
  624. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegatePrivate-Protocol.h +0 -12
  625. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManager.h +0 -28
  626. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseSuite.h +0 -19
  627. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContext.h +0 -26
  628. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContextScope.h +0 -19
  629. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriverInterface-Protocol.h +0 -14
  630. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationWaiter.h +0 -17
  631. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestLog.h +0 -32
  632. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_IDEInterface-Protocol.h +0 -36
  633. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_ManagerInterface-Protocol.h +0 -54
  634. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_TestsInterface-Protocol.h +0 -12
  635. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestMisuseObserver.h +0 -37
  636. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservation-Protocol.h +0 -20
  637. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObserver.h +0 -20
  638. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestProbe.h +0 -13
  639. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuite.h +0 -48
  640. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuiteRun.h +0 -28
  641. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestWaiter.h +0 -14
  642. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementAsynchronousHandlerWrapper.h +0 -19
  643. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementHitPointCoordinate.h +0 -24
  644. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinder.h +0 -65
  645. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinderMatch.h +0 -25
  646. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderTimingMessage.h +0 -20
  647. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderUtilities.h +0 -45
  648. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCInternalTestRun.h +0 -43
  649. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCKVOExpectationImplementation.h +0 -32
  650. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTDarwinNotificationExpectationImplementation.h +0 -27
  651. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSNotificationExpectationImplementation.h +0 -30
  652. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSPredicateExpectationImplementation.h +0 -29
  653. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTWaiterImpl.h +0 -41
  654. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseImplementation.h +0 -70
  655. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseInterruptionException.h +0 -13
  656. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestExpectationImplementation.h +0 -40
  657. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestImplementation.h +0 -14
  658. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationCenterImplementation.h +0 -19
  659. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestSuiteImplementation.h +0 -23
  660. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.h +0 -1220
  661. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.m +0 -8812
  662. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.h +0 -1036
  663. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.m +0 -5868
  664. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.h +0 -12
  665. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.m +0 -88
  666. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.h +0 -56
  667. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.m +0 -106
  668. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.h +0 -107
  669. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.m +0 -2238
  670. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPLogging.h +0 -122
  671. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.h +0 -53
  672. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.m +0 -357
  673. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPResponse.h +0 -149
  674. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.h +0 -126
  675. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.m +0 -372
  676. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/LICENSE +0 -18
  677. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.h +0 -13
  678. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.m +0 -83
  679. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.h +0 -9
  680. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.m +0 -40
  681. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.h +0 -13
  682. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.m +0 -84
  683. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/LICENSE +0 -19
  684. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.h +0 -18
  685. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.m +0 -11
  686. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.h +0 -16
  687. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.m +0 -50
  688. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.h +0 -20
  689. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.m +0 -66
  690. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.h +0 -5
  691. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.m +0 -142
  692. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h +0 -55
  693. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.m +0 -303
  694. package/drivers/ios/WebDriverAgent/eslint.config.mjs +0 -13
  695. package/drivers/ios/WebDriverAgent/index.ts +0 -7
  696. package/drivers/ios/WebDriverAgent/lib/utils.ts +0 -342
  697. package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e-specs.ts +0 -119
  698. package/drivers/ios/WebDriverAgent/test/unit/utils-specs.ts +0 -157
  699. package/drivers/ios/WebDriverAgent/test/unit/webdriveragent-specs.ts +0 -446
@@ -1,76 +1,79 @@
1
- import { waitForCondition } from 'asyncbox';
2
- import _ from 'lodash';
3
1
  import path from 'node:path';
4
- import url from 'node:url';
5
- import B from 'bluebird';
6
- import { JWProxy } from '@appium/base-driver';
7
- import { fs, util, plist } from '@appium/support';
8
- import type { AppiumLogger, StringRecord } from '@appium/types';
9
- import { log as defaultLogger } from './logger';
10
- import { NoSessionProxy } from './no-session-proxy';
11
- import {
12
- getWDAUpgradeTimestamp, resetTestProcesses, getPIDsListeningOnPort, BOOTSTRAP_PATH
13
- } from './utils';
14
- import {XcodeBuild} from './xcodebuild';
2
+
3
+ import {WebDriverProxy} from '@appium/base-driver';
4
+ import {strongbox} from '@appium/strongbox';
5
+ import {fs, util} from '@appium/support';
6
+ import type {AppiumLogger, StringRecord} from '@appium/types';
15
7
  import AsyncLock from 'async-lock';
16
- import { exec } from 'teen_process';
17
- import { bundleWDASim } from './check-dependencies';
8
+ import {waitForCondition} from 'asyncbox';
9
+
10
+ import {WDA_RUNNER_BUNDLE_ID, WDA_BASE_URL, DEFAULT_TEST_BUNDLE_SUFFIX} from './constants.js';
11
+ import {log as defaultLogger} from './logger.js';
12
+ import {NoSessionProxy} from './no-session-proxy.js';
13
+ import type {
14
+ WebDriverAgentArgs,
15
+ AppleDevice,
16
+ XcodeBuildSettings,
17
+ RetrieveBuildSettingsOptions,
18
+ WdaHostOps,
19
+ } from './types.js';
20
+ import {BOOTSTRAP_PATH, getWDAUpgradeTimestamp, isWatchOS} from './utils/index.js';
18
21
  import {
19
- WDA_RUNNER_BUNDLE_ID, WDA_RUNNER_APP,
20
- WDA_BASE_URL, WDA_UPGRADE_TIMESTAMP_PATH, DEFAULT_TEST_BUNDLE_SUFFIX
21
- } from './constants';
22
- import {Xctest} from 'appium-ios-device';
23
- import {strongbox} from '@appium/strongbox';
24
- import type { WebDriverAgentArgs, AppleDevice } from './types';
22
+ createDefaultWdaHostOps,
23
+ createWdaStartupStrategy,
24
+ type WdaStartupStrategy,
25
+ type WdaStartupStrategyContext,
26
+ } from './wda-strategies.js';
27
+ import {XcodeBuild} from './xcodebuild.js';
25
28
 
26
29
  const WDA_LAUNCH_TIMEOUT = 60 * 1000;
27
30
  const WDA_AGENT_PORT = 8100;
28
- const WDA_CF_BUNDLE_NAME = 'WebDriverAgentRunner-Runner';
29
31
  const SHARED_RESOURCES_GUARD = new AsyncLock();
30
32
  const RECENT_MODULE_VERSION_ITEM_NAME = 'recentWdaModuleVersion';
33
+ const URL_PROTOCOL_SEPARATOR = '://';
31
34
 
32
35
  export class WebDriverAgent {
33
- bootstrapPath: string;
34
- agentPath: string;
36
+ bootstrapPath!: string;
37
+ agentPath!: string;
35
38
  readonly args: WebDriverAgentArgs;
36
- private readonly log: AppiumLogger;
37
39
  readonly device: AppleDevice;
38
40
  readonly platformVersion?: string;
39
41
  readonly platformName?: string;
40
42
  readonly iosSdkVersion?: string;
41
43
  readonly host?: string;
42
44
  readonly isRealDevice: boolean;
43
- private readonly wdaBundlePath?: string;
44
- private readonly wdaLocalPort?: number;
45
45
  readonly wdaRemotePort: number;
46
46
  readonly wdaBaseUrl: string;
47
47
  readonly wdaBindingIP?: string;
48
- private readonly prebuildWDA?: boolean;
49
48
  webDriverAgentUrl?: string;
50
49
  started: boolean;
50
+ updatedWDABundleId?: string;
51
+ noSessionProxy?: NoSessionProxy;
52
+ jwproxy?: WebDriverProxy;
53
+ proxyReqRes?: any;
54
+ private readonly log: AppiumLogger;
55
+ private readonly wdaLocalPort?: number;
56
+ private readonly prebuildWDA?: boolean;
51
57
  private readonly wdaConnectionTimeout?: number;
52
58
  private readonly useXctestrunFile?: boolean;
53
59
  private readonly usePrebuiltWDA?: boolean;
54
- private readonly derivedDataPath?: string;
55
60
  private readonly mjpegServerPort?: number;
56
- updatedWDABundleId?: string;
61
+ private readonly maxHttpRequestBodySize?: number;
57
62
  private readonly wdaLaunchTimeout: number;
58
63
  private readonly usePreinstalledWDA?: boolean;
59
- private xctestApiClient?: Xctest | null;
60
64
  private readonly updatedWDABundleIdSuffix: string;
65
+ private readonly hostOps: Required<WdaHostOps>;
66
+ private activeStartupStrategy?: WdaStartupStrategy;
61
67
  private _xcodebuild?: XcodeBuild | null;
62
- noSessionProxy?: NoSessionProxy;
63
- jwproxy?: JWProxy;
64
- proxyReqRes?: any;
65
- private _url?: url.UrlWithStringQuery;
68
+ private _url?: URL;
66
69
 
67
70
  /**
68
71
  * Creates a new WebDriverAgent instance.
69
72
  * @param args - Configuration arguments for WebDriverAgent
70
73
  * @param log - Optional logger instance
71
74
  */
72
- constructor (args: WebDriverAgentArgs, log: AppiumLogger | null = null) {
73
- this.args = _.clone(args);
75
+ constructor(args: WebDriverAgentArgs, log: AppiumLogger | null = null) {
76
+ this.args = {...args};
74
77
  this.log = log ?? defaultLogger;
75
78
 
76
79
  this.device = args.device;
@@ -79,13 +82,15 @@ export class WebDriverAgent {
79
82
  this.iosSdkVersion = args.iosSdkVersion;
80
83
  this.host = args.host;
81
84
  this.isRealDevice = !!args.realDevice;
82
- this.wdaBundlePath = args.wdaBundlePath;
85
+
86
+ if (isWatchOS(this.platformName || '') && this.isRealDevice) {
87
+ throw new Error('Real watchOS device testing is not supported; watchOS is only available via the Simulator.');
88
+ }
83
89
 
84
90
  this.setWDAPaths(args.bootstrapPath, args.agentPath);
85
91
 
86
92
  this.wdaLocalPort = args.wdaLocalPort;
87
- this.wdaRemotePort = ((this.isRealDevice ? args.wdaRemotePort : null) ?? args.wdaLocalPort)
88
- || WDA_AGENT_PORT;
93
+ this.wdaRemotePort = ((this.isRealDevice ? args.wdaRemotePort : null) ?? args.wdaLocalPort) || WDA_AGENT_PORT;
89
94
  this.wdaBaseUrl = args.wdaBaseUrl || WDA_BASE_URL;
90
95
  this.wdaBindingIP = args.wdaBindingIP;
91
96
  this.prebuildWDA = args.prebuildWDA;
@@ -101,51 +106,70 @@ export class WebDriverAgent {
101
106
 
102
107
  this.useXctestrunFile = args.useXctestrunFile;
103
108
  this.usePrebuiltWDA = args.usePrebuiltWDA;
104
- this.derivedDataPath = args.derivedDataPath;
105
109
  this.mjpegServerPort = args.mjpegServerPort;
110
+ this.maxHttpRequestBodySize = args.maxHttpRequestBodySize;
106
111
 
107
112
  this.updatedWDABundleId = args.updatedWDABundleId;
108
113
 
109
114
  this.wdaLaunchTimeout = args.wdaLaunchTimeout || WDA_LAUNCH_TIMEOUT;
110
115
  this.usePreinstalledWDA = args.usePreinstalledWDA;
111
- this.xctestApiClient = null;
112
116
  this.updatedWDABundleIdSuffix = args.updatedWDABundleIdSuffix ?? DEFAULT_TEST_BUNDLE_SUFFIX;
117
+ const defaultHostOps = createDefaultWdaHostOps();
118
+ this.hostOps = {
119
+ simulator: {
120
+ ...defaultHostOps.simulator,
121
+ ...args.hostOps?.simulator,
122
+ },
123
+ realDevicePreinstalled: {
124
+ ...defaultHostOps.realDevicePreinstalled,
125
+ ...args.hostOps?.realDevicePreinstalled,
126
+ },
127
+ realDeviceXcodebuild: {
128
+ ...defaultHostOps.realDeviceXcodebuild,
129
+ ...args.hostOps?.realDeviceXcodebuild,
130
+ },
131
+ };
113
132
 
114
133
  this._xcodebuild = this.canSkipXcodebuild
115
- ? null
116
- : new XcodeBuild(this.device, {
117
- platformVersion: this.platformVersion,
118
- platformName: this.platformName,
119
- iosSdkVersion: this.iosSdkVersion,
120
- agentPath: this.agentPath,
121
- bootstrapPath: this.bootstrapPath,
122
- realDevice: this.isRealDevice,
123
- showXcodeLog: args.showXcodeLog,
124
- xcodeConfigFile: args.xcodeConfigFile,
125
- xcodeOrgId: args.xcodeOrgId,
126
- xcodeSigningId: args.xcodeSigningId,
127
- keychainPath: args.keychainPath,
128
- keychainPassword: args.keychainPassword,
129
- useSimpleBuildTest: args.useSimpleBuildTest,
130
- usePrebuiltWDA: args.usePrebuiltWDA,
131
- updatedWDABundleId: this.updatedWDABundleId,
132
- launchTimeout: this.wdaLaunchTimeout,
133
- wdaRemotePort: this.wdaRemotePort,
134
- wdaBindingIP: this.wdaBindingIP,
135
- useXctestrunFile: this.useXctestrunFile,
136
- derivedDataPath: args.derivedDataPath,
137
- mjpegServerPort: this.mjpegServerPort,
138
- allowProvisioningDeviceRegistration: args.allowProvisioningDeviceRegistration,
139
- resultBundlePath: args.resultBundlePath,
140
- resultBundleVersion: args.resultBundleVersion,
141
- }, this.log);
134
+ ? null
135
+ : new XcodeBuild(
136
+ this.device,
137
+ {
138
+ platformVersion: this.platformVersion,
139
+ platformName: this.platformName,
140
+ iosSdkVersion: this.iosSdkVersion,
141
+ agentPath: this.agentPath,
142
+ bootstrapPath: this.bootstrapPath,
143
+ realDevice: this.isRealDevice,
144
+ showXcodeLog: args.showXcodeLog,
145
+ xcodeConfigFile: args.xcodeConfigFile,
146
+ xcodeOrgId: args.xcodeOrgId,
147
+ xcodeSigningId: args.xcodeSigningId,
148
+ keychainPath: args.keychainPath,
149
+ keychainPassword: args.keychainPassword,
150
+ useSimpleBuildTest: args.useSimpleBuildTest,
151
+ usePrebuiltWDA: args.usePrebuiltWDA,
152
+ updatedWDABundleId: this.updatedWDABundleId,
153
+ launchTimeout: this.wdaLaunchTimeout,
154
+ wdaRemotePort: this.wdaRemotePort,
155
+ wdaBindingIP: this.wdaBindingIP,
156
+ useXctestrunFile: this.useXctestrunFile,
157
+ derivedDataPath: args.derivedDataPath,
158
+ mjpegServerPort: this.mjpegServerPort,
159
+ maxHttpRequestBodySize: this.maxHttpRequestBodySize,
160
+ allowProvisioningDeviceRegistration: args.allowProvisioningDeviceRegistration,
161
+ resultBundlePath: args.resultBundlePath,
162
+ resultBundleVersion: args.resultBundleVersion,
163
+ },
164
+ this.log,
165
+ );
142
166
  }
143
167
 
144
168
  /**
145
169
  * Return true if the session does not need xcodebuild.
146
170
  * @returns Whether the session needs/has xcodebuild.
147
171
  */
148
- get canSkipXcodebuild (): boolean {
172
+ get canSkipXcodebuild(): boolean {
149
173
  // Use this.args.webDriverAgentUrl to guarantee
150
174
  // the capabilities set gave the `appium:webDriverAgentUrl`.
151
175
  return this.usePreinstalledWDA || !!this.args.webDriverAgentUrl;
@@ -156,7 +180,7 @@ export class WebDriverAgent {
156
180
  * @returns The XcodeBuild instance
157
181
  * @throws Error if xcodebuild is not available
158
182
  */
159
- get xcodebuild (): XcodeBuild {
183
+ get xcodebuild(): XcodeBuild {
160
184
  if (!this._xcodebuild) {
161
185
  throw new Error('xcodebuild is not available');
162
186
  }
@@ -171,44 +195,81 @@ export class WebDriverAgent {
171
195
  *
172
196
  * @returns Bundle ID for Xctest.
173
197
  */
174
- get bundleIdForXctest (): string {
198
+ get bundleIdForXctest(): string {
175
199
  return `${this.updatedWDABundleId ? this.updatedWDABundleId : WDA_RUNNER_BUNDLE_ID}${this.updatedWDABundleIdSuffix}`;
176
200
  }
177
201
 
178
202
  /**
179
- * Cleans up obsolete cached processes from previous WDA sessions
180
- * that are listening on the same port but belong to different devices.
203
+ * Gets the base path for the WebDriverAgent URL.
204
+ * @returns The base path (empty string if root path)
181
205
  */
182
- async cleanupObsoleteProcesses (): Promise<void> {
183
- const obsoletePids = await getPIDsListeningOnPort(this.url.port as string,
184
- (cmdLine) => cmdLine.includes('/WebDriverAgentRunner') &&
185
- !cmdLine.toLowerCase().includes(this.device.udid.toLowerCase()));
186
-
187
- if (_.isEmpty(obsoletePids)) {
188
- this.log.debug(`No obsolete cached processes from previous WDA sessions ` +
189
- `listening on port ${this.url.port} have been found`);
190
- return;
206
+ get basePath(): string {
207
+ if (this.url.pathname === '/') {
208
+ return '';
191
209
  }
210
+ return this.url.pathname || '';
211
+ }
192
212
 
193
- this.log.info(`Detected ${obsoletePids.length} obsolete cached process${obsoletePids.length === 1 ? '' : 'es'} ` +
194
- `from previous WDA sessions. Cleaning them up`);
195
- try {
196
- await exec('kill', obsoletePids);
197
- } catch (e: any) {
198
- this.log.warn(`Failed to kill obsolete cached process${obsoletePids.length === 1 ? '' : 'es'} '${obsoletePids}'. ` +
199
- `Original error: ${e.message}`);
213
+ /**
214
+ * Gets the WebDriverAgent URL.
215
+ * Constructs the URL from webDriverAgentUrl if provided, otherwise
216
+ * builds it from wdaBaseUrl, wdaBindingIP, and wdaLocalPort.
217
+ * @returns The parsed URL object
218
+ */
219
+ get url(): URL {
220
+ if (!this._url) {
221
+ if (this.webDriverAgentUrl) {
222
+ this._url = this.toUrl(this.webDriverAgentUrl);
223
+ } else {
224
+ const port = this.wdaLocalPort || WDA_AGENT_PORT;
225
+ const parsedBaseUrl = this.toUrl(this.wdaBaseUrl || WDA_BASE_URL);
226
+ this._url = new URL(`${parsedBaseUrl.protocol}//${this.wdaBindingIP || parsedBaseUrl.hostname}:${port}`);
227
+ }
200
228
  }
229
+ return this._url;
201
230
  }
202
231
 
203
232
  /**
204
- * Gets the base path for the WebDriverAgent URL.
205
- * @returns The base path (empty string if root path)
233
+ * Gets whether WebDriverAgent has fully started.
234
+ * @returns `true` if WDA has started, `false` otherwise
206
235
  */
207
- get basePath (): string {
208
- if (this.url.path === '/') {
209
- return '';
236
+ get fullyStarted(): boolean {
237
+ return this.started;
238
+ }
239
+
240
+ /**
241
+ * Sets whether WebDriverAgent has fully started.
242
+ * @param started - `true` if WDA has started, `false` otherwise
243
+ */
244
+ set fullyStarted(started: boolean) {
245
+ this.started = started ?? false;
246
+ }
247
+
248
+ /**
249
+ * Sets the WebDriverAgent URL.
250
+ * @param _url - The URL string to parse and set
251
+ */
252
+ set url(_url: string) {
253
+ this._url = this.toUrl(_url);
254
+ }
255
+
256
+ /**
257
+ * Cleans up obsolete cached processes from previous WDA sessions
258
+ * that are listening on the same port but belong to different devices.
259
+ */
260
+ async cleanupObsoleteProcesses(): Promise<void> {
261
+ try {
262
+ await this.hostOps.realDeviceXcodebuild.cleanupObsoleteProcesses?.({
263
+ udid: this.device.udid,
264
+ port: this.url.port as string,
265
+ commandLineIncludes: '/WebDriverAgentRunner',
266
+ });
267
+ } catch (e: any) {
268
+ this.log.warn(`Failed to clean obsolete cached processes. Original error: ${e.message}`);
210
269
  }
211
- return this.url.path || '';
270
+ }
271
+
272
+ /**
212
273
  }
213
274
 
214
275
  /**
@@ -232,50 +293,11 @@ export class WebDriverAgent {
232
293
  *
233
294
  * @param sessionId Launch WDA and establish the session with this sessionId
234
295
  */
235
- async launch (sessionId: string): Promise<StringRecord | null> {
236
- if (this.webDriverAgentUrl) {
237
- this.log.info(`Using provided WebdriverAgent at '${this.webDriverAgentUrl}'`);
238
- this.url = this.webDriverAgentUrl;
239
- this.setupProxies(sessionId);
240
- return await this.getStatus();
241
- }
242
-
243
- if (this.usePreinstalledWDA) {
244
- return await this.launchWithPreinstalledWDA(sessionId);
245
- }
246
-
247
- this.log.info('Launching WebDriverAgent on the device');
248
-
249
- this.setupProxies(sessionId);
250
-
251
- if (!this.useXctestrunFile && !await fs.exists(this.agentPath)) {
252
- throw new Error(`Trying to use WebDriverAgent project at '${this.agentPath}' but the ` +
253
- 'file does not exist');
254
- }
255
-
256
- // useXctestrunFile and usePrebuiltWDA use existing dependencies
257
- // It depends on user side
258
- if (this.useXctestrunFile || this.usePrebuiltWDA) {
259
- this.log.info('Skipped WDA project cleanup according to the provided capabilities');
260
- } else {
261
- const synchronizationKey = path.normalize(this.bootstrapPath);
262
- await SHARED_RESOURCES_GUARD.acquire(synchronizationKey,
263
- async () => await this._cleanupProjectIfFresh());
264
- }
265
-
266
- // We need to provide WDA local port, because it might be occupied
267
- await resetTestProcesses(this.device.udid, !this.isRealDevice);
268
-
269
- if (!this.noSessionProxy) {
270
- throw new Error('noSessionProxy is not available');
271
- }
272
- await this.xcodebuild.init(this.noSessionProxy);
273
-
274
- // Start the xcodebuild process
275
- if (this.prebuildWDA) {
276
- await this.xcodebuild.prebuild();
277
- }
278
- return await this.xcodebuild.start() as StringRecord | null;
296
+ async launch(sessionId: string): Promise<StringRecord | null> {
297
+ const startupStrategy = this.createStartupStrategy();
298
+ this.log.info(`Selected '${startupStrategy.name}' WebDriverAgent startup strategy`);
299
+ this.activeStartupStrategy = startupStrategy;
300
+ return await startupStrategy.launch(sessionId);
279
301
  }
280
302
 
281
303
  /**
@@ -283,83 +305,19 @@ export class WebDriverAgent {
283
305
  * that required resource files exist.
284
306
  * @returns `true` if source is fresh (all required files exist), `false` otherwise
285
307
  */
286
- async isSourceFresh (): Promise<boolean> {
287
- const existsPromises = [
288
- 'Resources',
289
- `Resources${path.sep}WebDriverAgent.bundle`,
290
- ].map((subPath) => fs.exists(path.resolve(this.bootstrapPath, subPath)));
291
- return (await B.all(existsPromises)).some((v) => v === false);
292
- }
293
-
294
- private async parseBundleId (wdaBundlePath: string): Promise<string> {
295
- const infoPlistPath = path.join(wdaBundlePath, 'Info.plist');
296
- const infoPlist = await plist.parsePlist(await fs.readFile(infoPlistPath));
297
- if (!infoPlist.CFBundleIdentifier) {
298
- throw new Error(`Could not find bundle id in '${infoPlistPath}'`);
299
- }
300
- return infoPlist.CFBundleIdentifier as string;
301
- }
302
-
303
- private async fetchWDABundle (): Promise<string> {
304
- if (!this.derivedDataPath) {
305
- return await bundleWDASim(this.xcodebuild);
306
- }
307
- const wdaBundlePaths = await fs.glob(`${this.derivedDataPath}/**/*${WDA_RUNNER_APP}/`, {
308
- absolute: true,
309
- });
310
- if (_.isEmpty(wdaBundlePaths)) {
311
- throw new Error(`Could not find the WDA bundle in '${this.derivedDataPath}'`);
312
- }
313
- return wdaBundlePaths[0];
314
- }
315
-
316
- private setupProxies (sessionId: string): void {
317
- const proxyOpts: any = {
318
- log: this.log,
319
- server: this.url.hostname ?? undefined,
320
- port: parseInt(this.url.port ?? '', 10) || undefined,
321
- base: this.basePath,
322
- timeout: this.wdaConnectionTimeout,
323
- keepAlive: true,
324
- scheme: this.url.protocol ? this.url.protocol.replace(':', '') : 'http',
325
- };
326
- if (this.args.reqBasePath) {
327
- proxyOpts.reqBasePath = this.args.reqBasePath;
328
- }
329
-
330
- this.jwproxy = new JWProxy(proxyOpts);
331
- this.jwproxy.sessionId = sessionId;
332
- this.proxyReqRes = this.jwproxy.proxyReqRes.bind(this.jwproxy);
333
-
334
- this.noSessionProxy = new NoSessionProxy(proxyOpts);
308
+ async isSourceFresh(): Promise<boolean> {
309
+ const existsPromises = ['Resources', path.join('Resources', 'WebDriverAgent.bundle')].map((subPath) =>
310
+ fs.exists(path.resolve(this.bootstrapPath, subPath)),
311
+ );
312
+ return (await Promise.all(existsPromises)).every((v) => v === true);
335
313
  }
336
314
 
337
315
  /**
338
316
  * Stops the WebDriverAgent session and cleans up resources.
339
317
  * Handles both preinstalled WDA and xcodebuild-based sessions.
340
318
  */
341
- async quit (): Promise<void> {
342
- if (this.usePreinstalledWDA) {
343
- this.log.info('Stopping the XCTest session');
344
- if (this.xctestApiClient) {
345
- this.xctestApiClient.stop();
346
- this.xctestApiClient = null;
347
- } else {
348
- try {
349
- await this.device.simctl.terminateApp(this.bundleIdForXctest);
350
- } catch (e: any) {
351
- this.log.warn(e.message);
352
- }
353
- }
354
- } else if (!this.args.webDriverAgentUrl) {
355
- this.log.info('Shutting down sub-processes');
356
- if (this._xcodebuild) {
357
- await this.xcodebuild.quit();
358
- }
359
- } else {
360
- this.log.debug('Do not stop xcodebuild nor XCTest session ' +
361
- 'since the WDA session is managed by outside this driver.');
362
- }
319
+ async quit(): Promise<void> {
320
+ await (this.activeStartupStrategy ?? this.createStartupStrategy()).quit();
363
321
 
364
322
  if (this.jwproxy) {
365
323
  this.jwproxy.sessionId = null;
@@ -372,114 +330,168 @@ export class WebDriverAgent {
372
330
  // then clean that up. If the url was supplied, we want to keep it
373
331
  this.webDriverAgentUrl = undefined;
374
332
  }
333
+ this.activeStartupStrategy = undefined;
375
334
  }
376
335
 
377
336
  /**
378
- * Gets the WebDriverAgent URL.
379
- * Constructs the URL from webDriverAgentUrl if provided, otherwise
380
- * builds it from wdaBaseUrl, wdaBindingIP, and wdaLocalPort.
381
- * @returns The parsed URL object
382
- */
383
- get url (): url.UrlWithStringQuery {
384
- if (!this._url) {
385
- if (this.webDriverAgentUrl) {
386
- this._url = url.parse(this.webDriverAgentUrl);
387
- } else {
388
- const port = this.wdaLocalPort || WDA_AGENT_PORT;
389
- const {protocol, hostname} = url.parse(this.wdaBaseUrl || WDA_BASE_URL);
390
- this._url = url.parse(`${protocol}//${this.wdaBindingIP || hostname}:${port}`);
391
- }
392
- }
393
- return this._url;
394
- }
395
-
396
- /**
397
- * Sets the WebDriverAgent URL.
398
- * @param _url - The URL string to parse and set
399
- */
400
- set url (_url: string) {
401
- this._url = url.parse(_url);
402
- }
403
-
404
- /**
405
- * Gets whether WebDriverAgent has fully started.
406
- * @returns `true` if WDA has started, `false` otherwise
407
- */
408
- get fullyStarted (): boolean {
409
- return this.started;
410
- }
411
-
412
- /**
413
- * Sets whether WebDriverAgent has fully started.
414
- * @param started - `true` if WDA has started, `false` otherwise
415
- */
416
- set fullyStarted (started: boolean) {
417
- this.started = started ?? false;
418
- }
419
-
420
- /**
421
- * Retrieves the Xcode derived data path for WebDriverAgent.
422
- * @returns The derived data path, or `undefined` if xcodebuild is skipped
337
+ * Retrieves Xcode build settings.
338
+ * @param options - Optional scheme, SDK, configuration, or destination
339
+ * @returns Build settings, or `undefined` if xcodebuild is skipped or settings cannot be determined
423
340
  */
424
- async retrieveDerivedDataPath (): Promise<string | undefined> {
341
+ async retrieveBuildSettings(options?: RetrieveBuildSettingsOptions): Promise<XcodeBuildSettings | undefined> {
425
342
  if (this.canSkipXcodebuild) {
426
343
  return;
427
344
  }
428
- return await this.xcodebuild.retrieveDerivedDataPath();
345
+ return await this.xcodebuild.retrieveBuildSettings(options);
429
346
  }
430
347
 
431
348
  /**
432
349
  * Reuse running WDA if it has the same bundle id with updatedWDABundleId.
433
350
  * Or reuse it if it has the default id without updatedWDABundleId.
434
- * Uninstall it if the method faces an exception for the above situation.
351
+ *
352
+ * @returns The WDA URL used for caching on success, or `undefined` if caching was skipped.
435
353
  */
436
- async setupCaching (): Promise<void> {
354
+ async setupCaching(): Promise<string | undefined> {
437
355
  const status = await this.getStatus(0);
438
356
  if (!status || !status.build) {
439
357
  this.log.debug('WDA is currently not running. There is nothing to cache');
440
- return;
358
+ return undefined;
441
359
  }
442
360
 
443
- const {
444
- productBundleIdentifier,
445
- upgradedAt,
446
- } = status.build as any;
361
+ const {productBundleIdentifier, upgradedAt} = status.build as any;
447
362
  // for real device
448
- if (util.hasValue(productBundleIdentifier) && util.hasValue(this.updatedWDABundleId) && this.updatedWDABundleId !== productBundleIdentifier) {
449
- this.log.info(`Will uninstall running WDA since it has different bundle id. The actual value is '${productBundleIdentifier}'.`);
450
- return await this.uninstall();
363
+ if (
364
+ util.hasValue(productBundleIdentifier) &&
365
+ util.hasValue(this.updatedWDABundleId) &&
366
+ this.updatedWDABundleId !== productBundleIdentifier
367
+ ) {
368
+ this.log.info(
369
+ `Will not reuse running WDA since it has different bundle id. The actual value is '${productBundleIdentifier}'.`,
370
+ );
371
+ return undefined;
451
372
  }
452
373
  // for simulator
453
- if (util.hasValue(productBundleIdentifier) && !util.hasValue(this.updatedWDABundleId) && WDA_RUNNER_BUNDLE_ID !== productBundleIdentifier) {
454
- this.log.info(`Will uninstall running WDA since its bundle id is not equal to the default value ${WDA_RUNNER_BUNDLE_ID}`);
455
- return await this.uninstall();
374
+ if (
375
+ util.hasValue(productBundleIdentifier) &&
376
+ !util.hasValue(this.updatedWDABundleId) &&
377
+ WDA_RUNNER_BUNDLE_ID !== productBundleIdentifier
378
+ ) {
379
+ this.log.info(
380
+ `Will not reuse running WDA since its bundle id is not equal to the default value ${WDA_RUNNER_BUNDLE_ID}`,
381
+ );
382
+ return undefined;
456
383
  }
457
384
 
458
385
  const actualUpgradeTimestamp = await getWDAUpgradeTimestamp();
459
386
  this.log.debug(`Upgrade timestamp of the currently bundled WDA: ${actualUpgradeTimestamp}`);
460
387
  this.log.debug(`Upgrade timestamp of the WDA on the device: ${upgradedAt}`);
461
- if (actualUpgradeTimestamp && upgradedAt && _.toLower(`${actualUpgradeTimestamp}`) !== _.toLower(`${upgradedAt}`)) {
462
- this.log.info('Will uninstall running WDA since it has different version in comparison to the one ' +
463
- `which is bundled with appium-xcuitest-driver module (${actualUpgradeTimestamp} != ${upgradedAt})`);
464
- return await this.uninstall();
388
+ if (
389
+ actualUpgradeTimestamp &&
390
+ upgradedAt &&
391
+ `${actualUpgradeTimestamp}`.toLowerCase() !== `${upgradedAt}`.toLowerCase()
392
+ ) {
393
+ this.log.info(
394
+ 'Will not reuse running WDA since it has different version in comparison to the one ' +
395
+ `which is bundled with appium-xcuitest-driver module (${actualUpgradeTimestamp} != ${upgradedAt})`,
396
+ );
397
+ return undefined;
465
398
  }
466
399
 
400
+ const cachedUrl = this.url.href;
467
401
  const message = util.hasValue(productBundleIdentifier)
468
- ? `Will reuse previously cached WDA instance at '${this.url.href}' with '${productBundleIdentifier}'`
469
- : `Will reuse previously cached WDA instance at '${this.url.href}'`;
470
- this.log.info(`${message}. Set the wdaLocalPort capability to a value different from ${this.url.port} if this is an undesired behavior.`);
471
- this.webDriverAgentUrl = this.url.href;
402
+ ? `Will reuse previously cached WDA instance at '${cachedUrl}' with '${productBundleIdentifier}'`
403
+ : `Will reuse previously cached WDA instance at '${cachedUrl}'`;
404
+ this.log.info(
405
+ `${message}. Set the wdaLocalPort capability to a value different from ${this.url.port} if this is an undesired behavior.`,
406
+ );
407
+ this.webDriverAgentUrl = cachedUrl;
408
+ return cachedUrl;
472
409
  }
473
410
 
474
- /**
475
- * Quit and uninstall running WDA.
476
- */
477
- async quitAndUninstall (): Promise<void> {
478
- await this.quit();
479
- await this.uninstall();
411
+ private createStartupStrategy(): WdaStartupStrategy {
412
+ const context: WdaStartupStrategyContext = {
413
+ argsWebDriverAgentUrl: this.args.webDriverAgentUrl,
414
+ webDriverAgentUrl: this.webDriverAgentUrl,
415
+ usePreinstalledWDA: this.usePreinstalledWDA,
416
+ useXctestrunFile: this.useXctestrunFile,
417
+ usePrebuiltWDA: this.usePrebuiltWDA,
418
+ prebuildWDA: this.prebuildWDA,
419
+ isRealDevice: this.isRealDevice,
420
+ device: this.device,
421
+ agentPath: this.agentPath,
422
+ bootstrapPath: this.bootstrapPath,
423
+ bundleIdForXctest: this.bundleIdForXctest,
424
+ wdaLocalPort: this.wdaLocalPort,
425
+ wdaRemotePort: this.wdaRemotePort,
426
+ wdaBindingIP: this.wdaBindingIP,
427
+ wdaLaunchTimeout: this.wdaLaunchTimeout,
428
+ mjpegServerPort: this.mjpegServerPort,
429
+ maxHttpRequestBodySize: this.maxHttpRequestBodySize,
430
+ platformName: this.platformName,
431
+ platformVersion: this.platformVersion,
432
+ log: this.log,
433
+ hostOps: this.hostOps,
434
+ setWebDriverAgentUrl: (value) => {
435
+ this.webDriverAgentUrl = value;
436
+ },
437
+ setUrl: (value) => {
438
+ this.url = value;
439
+ },
440
+ setupProxies: (sessionId) => this.setupProxies(sessionId),
441
+ getStatus: async (timeoutMs) => await this.getStatus(timeoutMs),
442
+ cleanupProjectIfFresh: async () => {
443
+ const synchronizationKey = path.normalize(this.bootstrapPath);
444
+ await SHARED_RESOURCES_GUARD.acquire(synchronizationKey, async () => await this._cleanupProjectIfFresh());
445
+ },
446
+ xcodebuild: () => this.xcodebuild,
447
+ noSessionProxy: () => {
448
+ if (!this.noSessionProxy) {
449
+ throw new Error('noSessionProxy is not available');
450
+ }
451
+ return this.noSessionProxy;
452
+ },
453
+ setStarted: (started) => {
454
+ this.started = started;
455
+ },
456
+ };
457
+ return createWdaStartupStrategy(context);
458
+ }
459
+
460
+ private setupProxies(sessionId: string): void {
461
+ const proxyOpts: any = {
462
+ log: this.log,
463
+ server: this.url.hostname ?? undefined,
464
+ port: parseInt(this.url.port ?? '', 10) || undefined,
465
+ base: this.basePath,
466
+ timeout: this.wdaConnectionTimeout,
467
+ keepAlive: true,
468
+ scheme: this.url.protocol ? this.url.protocol.replace(':', '') : 'http',
469
+ headers: this.args.extraRequestHeaders,
470
+ };
471
+ if (this.args.reqBasePath) {
472
+ proxyOpts.reqBasePath = this.args.reqBasePath;
473
+ }
474
+
475
+ this.jwproxy = new WebDriverProxy(proxyOpts);
476
+ this.jwproxy.sessionId = sessionId;
477
+ this.proxyReqRes = this.jwproxy.proxyReqRes.bind(this.jwproxy);
478
+
479
+ this.noSessionProxy = new NoSessionProxy(proxyOpts);
480
480
  }
481
481
 
482
- private setWDAPaths (bootstrapPath?: string, agentPath?: string): void {
482
+ private toUrl(value: string): URL {
483
+ // Treat values without `://` as host/path inputs and normalize to http.
484
+ if (!value.includes(URL_PROTOCOL_SEPARATOR)) {
485
+ return new URL(`http://${value}`);
486
+ }
487
+ try {
488
+ return new URL(value);
489
+ } catch {
490
+ throw new Error(`Invalid URL: ${value}`);
491
+ }
492
+ }
493
+
494
+ private setWDAPaths(bootstrapPath?: string, agentPath?: string): void {
483
495
  // allow the user to specify a place for WDA. This is undocumented and
484
496
  // only here for the purposes of testing development of WDA
485
497
  this.bootstrapPath = bootstrapPath || BOOTSTRAP_PATH;
@@ -490,10 +502,6 @@ export class WebDriverAgent {
490
502
  this.log.info(`Using WDA agent: '${this.agentPath}'`);
491
503
  }
492
504
 
493
- private async isRunning (): Promise<boolean> {
494
- return !!(await this.getStatus());
495
- }
496
-
497
505
  /**
498
506
  * Return current running WDA's status like below
499
507
  * {
@@ -515,17 +523,19 @@ export class WebDriverAgent {
515
523
  *
516
524
  * @param timeoutMs If zero or negative, returns immediately. Otherwise, waits up to timeoutMs.
517
525
  */
518
- private async getStatus (timeoutMs: number = 0): Promise<StringRecord | null> {
526
+ private async getStatus(timeoutMs: number = 0): Promise<StringRecord | null> {
519
527
  const noSessionProxy = new NoSessionProxy({
528
+ scheme: this.url.protocol ? this.url.protocol.replace(':', '') : 'http',
520
529
  server: this.url.hostname ?? undefined,
521
530
  port: parseInt(this.url.port ?? '', 10) || undefined,
522
531
  base: this.basePath,
523
532
  timeout: 3000,
533
+ headers: this.args.extraRequestHeaders,
524
534
  });
525
535
 
526
- const sendGetStatus = async () => await noSessionProxy.command('/status', 'GET') as StringRecord;
536
+ const sendGetStatus = async () => (await noSessionProxy.command('/status', 'GET')) as StringRecord;
527
537
 
528
- if (_.isNil(timeoutMs) || timeoutMs <= 0) {
538
+ if (timeoutMs == null || timeoutMs <= 0) {
529
539
  try {
530
540
  return await sendGetStatus();
531
541
  } catch (err: any) {
@@ -537,82 +547,51 @@ export class WebDriverAgent {
537
547
  let lastError: any = null;
538
548
  let status: StringRecord | null = null;
539
549
  try {
540
- await waitForCondition(async () => {
541
- try {
542
- status = await sendGetStatus();
543
- return true;
544
- } catch (err) {
545
- lastError = err;
546
- }
547
- return false;
548
- }, {
549
- waitMs: timeoutMs,
550
- intervalMs: 300,
551
- });
550
+ await waitForCondition(
551
+ async () => {
552
+ try {
553
+ status = await sendGetStatus();
554
+ return true;
555
+ } catch (err) {
556
+ lastError = err;
557
+ }
558
+ return false;
559
+ },
560
+ {
561
+ waitMs: timeoutMs,
562
+ intervalMs: 300,
563
+ },
564
+ );
552
565
  } catch (err: any) {
553
- this.log.debug(`Failed to get the status endpoint in ${timeoutMs} ms. ` +
554
- `The last error while accessing ${this.url.href}: ${lastError}. Original error:: ${err.message}.`);
555
- throw new Error(`WDA was not ready in ${timeoutMs} ms.`);
566
+ this.log.debug(
567
+ `Failed to get the status endpoint in ${timeoutMs} ms. ` +
568
+ `The last error while accessing ${this.url.href}: ${lastError}. Original error:: ${err.message}.`,
569
+ );
570
+ throw new Error(`WDA was not ready in ${timeoutMs} ms.`, {cause: err});
556
571
  }
557
572
  return status;
558
573
  }
559
574
 
560
- /**
561
- * Uninstall WDAs from the test device.
562
- * Over Xcode 11, multiple WDA can be in the device since Xcode 11 generates different WDA.
563
- * Appium does not expect multiple WDAs are running on a device.
564
- */
565
- private async uninstall (): Promise<void> {
566
- try {
567
- const bundleIds = await this.device.getUserInstalledBundleIdsByBundleName(WDA_CF_BUNDLE_NAME);
568
- if (_.isEmpty(bundleIds)) {
569
- this.log.debug('No WDAs on the device.');
570
- return;
571
- }
572
-
573
- this.log.debug(`Uninstalling WDAs: '${bundleIds}'`);
574
- for (const bundleId of bundleIds) {
575
- await this.device.removeApp(bundleId);
576
- }
577
- } catch (e: any) {
578
- this.log.debug(e);
579
- this.log.warn(`WebDriverAgent uninstall failed. Perhaps, it is already uninstalled? ` +
580
- `Original error: ${e.message}`);
581
- }
582
- }
583
-
584
- private async _cleanupProjectIfFresh (): Promise<void> {
575
+ private async _cleanupProjectIfFresh(): Promise<void> {
585
576
  if (this.canSkipXcodebuild) {
586
577
  return;
587
578
  }
588
579
 
589
580
  const packageInfo = JSON.parse(await fs.readFile(path.join(BOOTSTRAP_PATH, 'package.json'), 'utf8'));
590
581
  const box = strongbox(packageInfo.name);
591
- let boxItem = box.getItem(RECENT_MODULE_VERSION_ITEM_NAME);
592
- if (!boxItem) {
593
- const timestampPath = path.resolve(process.env.HOME ?? '', WDA_UPGRADE_TIMESTAMP_PATH);
594
- if (await fs.exists(timestampPath)) {
595
- // TODO: It is probably a bit ugly to hardcode the recent version string,
596
- // TODO: hovewer it should do the job as a temporary transition trick
597
- // TODO: to switch from a hardcoded file path to the strongbox usage.
598
- try {
599
- boxItem = await box.createItemWithValue(RECENT_MODULE_VERSION_ITEM_NAME, '5.0.0');
600
- } catch (e: any) {
601
- this.log.warn(`The actual module version cannot be persisted: ${e.message}`);
602
- return;
603
- }
604
- } else {
605
- this.log.info('There is no need to perform the project cleanup. A fresh install has been detected');
606
- try {
607
- await box.createItemWithValue(RECENT_MODULE_VERSION_ITEM_NAME, packageInfo.version);
608
- } catch (e: any) {
609
- this.log.warn(`The actual module version cannot be persisted: ${e.message}`);
610
- }
611
- return;
582
+ // Each Strongbox instance starts with an empty item map. Load the persisted value from disk.
583
+ const boxItem = await box.createItem<string>(RECENT_MODULE_VERSION_ITEM_NAME);
584
+ let recentModuleVersion = boxItem.value;
585
+ if (recentModuleVersion === undefined) {
586
+ this.log.info('There is no need to perform the project cleanup. A fresh install has been detected');
587
+ try {
588
+ await boxItem.write(packageInfo.version);
589
+ } catch (e: any) {
590
+ this.log.warn(`The actual module version cannot be persisted: ${e.message}`);
612
591
  }
592
+ return;
613
593
  }
614
594
 
615
- let recentModuleVersion = await boxItem.read();
616
595
  try {
617
596
  recentModuleVersion = util.coerceVersion(recentModuleVersion, true);
618
597
  } catch (e: any) {
@@ -625,14 +604,14 @@ export class WebDriverAgent {
625
604
  if (util.compareVersions(recentModuleVersion, '>=', packageInfo.version)) {
626
605
  this.log.info(
627
606
  `WebDriverAgent does not need a cleanup. The project sources are up to date ` +
628
- `(${recentModuleVersion} >= ${packageInfo.version})`
607
+ `(${recentModuleVersion} >= ${packageInfo.version})`,
629
608
  );
630
609
  return;
631
610
  }
632
611
 
633
612
  this.log.info(
634
613
  `Cleaning up the WebDriverAgent project after the module upgrade has happened ` +
635
- `(${recentModuleVersion} < ${packageInfo.version})`
614
+ `(${recentModuleVersion} < ${packageInfo.version})`,
636
615
  );
637
616
  try {
638
617
  await this.xcodebuild.cleanProject();
@@ -641,75 +620,4 @@ export class WebDriverAgent {
641
620
  this.log.warn(`Cannot perform WebDriverAgent project cleanup. Original error: ${e.message}`);
642
621
  }
643
622
  }
644
-
645
- /**
646
- * Launch WDA with preinstalled package with 'xcrun devicectl device process launch'.
647
- * The WDA package must be prepared properly like published via
648
- * https://github.com/appium/WebDriverAgent/releases
649
- * with proper sign for this case.
650
- *
651
- * When we implement launching XCTest service via appium-ios-device,
652
- * this implementation can be replaced with it.
653
- *
654
- * @param opts launching WDA with devicectl command options.
655
- */
656
- private async _launchViaDevicectl(opts: {env?: Record<string, string | number>} = {}): Promise<void> {
657
- const {env} = opts;
658
-
659
- await this.device.devicectl.launchApp(
660
- this.bundleIdForXctest, { env, terminateExisting: true }
661
- );
662
- }
663
-
664
- /**
665
- * Launch WDA with preinstalled package without xcodebuild.
666
- * @param sessionId Launch WDA and establish the session with this sessionId
667
- */
668
- private async launchWithPreinstalledWDA(sessionId: string): Promise<StringRecord | null> {
669
- const xctestEnv: Record<string, string | number> = {
670
- USE_PORT: this.wdaLocalPort || WDA_AGENT_PORT,
671
- WDA_PRODUCT_BUNDLE_IDENTIFIER: this.bundleIdForXctest
672
- };
673
- if (this.mjpegServerPort) {
674
- xctestEnv.MJPEG_SERVER_PORT = this.mjpegServerPort;
675
- }
676
- if (this.wdaBindingIP) {
677
- xctestEnv.USE_IP = this.wdaBindingIP;
678
- }
679
- this.log.info('Launching WebDriverAgent on the device without xcodebuild');
680
- if (this.isRealDevice) {
681
- // Current method to launch WDA process can be done via 'xcrun devicectl',
682
- // but it has limitation about the WDA preinstalled package.
683
- // https://github.com/appium/appium/issues/19206#issuecomment-2014182674
684
- if (this.platformVersion && util.compareVersions(this.platformVersion, '>=', '17.0')) {
685
- await this._launchViaDevicectl({env: xctestEnv});
686
- } else {
687
- this.xctestApiClient = new Xctest(this.device.udid, this.bundleIdForXctest, null, {env: xctestEnv});
688
- await this.xctestApiClient.start();
689
- }
690
- } else {
691
- await this.device.simctl.exec('launch', {
692
- args: [
693
- '--terminate-running-process',
694
- this.device.udid,
695
- this.bundleIdForXctest,
696
- ],
697
- env: xctestEnv,
698
- });
699
- }
700
-
701
- this.setupProxies(sessionId);
702
- let status: StringRecord | null;
703
- try {
704
- status = await this.getStatus(this.wdaLaunchTimeout);
705
- } catch {
706
- throw new Error(
707
- `Failed to start the preinstalled WebDriverAgent in ${this.wdaLaunchTimeout} ms. ` +
708
- `The WebDriverAgent might not be properly built or the device might be locked. ` +
709
- `The 'appium:wdaLaunchTimeout' capability modifies the timeout.`
710
- );
711
- }
712
- this.started = true;
713
- return status;
714
- }
715
623
  }