@devicelab/maestro-runner-darwin-x64 1.1.25

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 (562) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +166 -0
  3. package/THIRD_PARTY_LICENSES +186 -0
  4. package/bin/maestro-runner +0 -0
  5. package/drivers/android/appium-uiautomator2-server-debug-androidTest.apk +0 -0
  6. package/drivers/android/appium-uiautomator2-server-v9.11.1.apk +0 -0
  7. package/drivers/android/devicelab-android-driver-test.apk +0 -0
  8. package/drivers/android/devicelab-android-driver.apk +0 -0
  9. package/drivers/android/settings_apk-debug.apk +0 -0
  10. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner/App.swift +11 -0
  11. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner.xcodeproj/project.pbxproj +523 -0
  12. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  13. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/ATTRIBUTION.md +73 -0
  14. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/Bridging-Header.h +4 -0
  15. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PixelDiff.swift +72 -0
  16. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCPointerEventPath.h +43 -0
  17. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCSynthesizedEventRecord.h +32 -0
  18. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCUIApplication+ActiveApp.h +23 -0
  19. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/PrivateHeaders/XCTest/XCUIDevice.h +30 -0
  20. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerObjCExceptionCatcher.h +11 -0
  21. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerObjCExceptionCatcher.m +16 -0
  22. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Alert.swift +155 -0
  23. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+CommandExecution.swift +961 -0
  24. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Environment.swift +37 -0
  25. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Interaction.swift +1864 -0
  26. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Lifecycle.swift +351 -0
  27. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Media.swift +81 -0
  28. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Models.swift +258 -0
  29. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+ScreenRecorder.swift +279 -0
  30. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Snapshot.swift +703 -0
  31. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+SystemModal.swift +230 -0
  32. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+Transport.swift +137 -0
  33. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests+TvRemote.swift +185 -0
  34. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/RunnerTests.swift +197 -0
  35. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SnapshotParams.h +28 -0
  36. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SnapshotParams.m +49 -0
  37. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.h +17 -0
  38. package/drivers/ios/DevicelabIOSRunner/DevicelabIOSRunnerUITests/SyntheticTyping.m +86 -0
  39. package/drivers/ios/DevicelabIOSRunner/PROTOCOL.md +258 -0
  40. package/drivers/ios/DevicelabIOSRunner/README.md +38 -0
  41. package/drivers/ios/DevicelabIOSRunner/project.yml +49 -0
  42. package/drivers/ios/WebDriverAgent/.github/ISSUE_TEMPLATE.md +4 -0
  43. package/drivers/ios/WebDriverAgent/.github/actions/xcode-setup/action.yml +32 -0
  44. package/drivers/ios/WebDriverAgent/.github/dependabot.yml +22 -0
  45. package/drivers/ios/WebDriverAgent/.github/workflows/functional-test.yml +62 -0
  46. package/drivers/ios/WebDriverAgent/.github/workflows/pr-title.yml +10 -0
  47. package/drivers/ios/WebDriverAgent/.github/workflows/publish.js.yml +105 -0
  48. package/drivers/ios/WebDriverAgent/.github/workflows/unit-test.yml +30 -0
  49. package/drivers/ios/WebDriverAgent/.github/workflows/wda-package.yml +107 -0
  50. package/drivers/ios/WebDriverAgent/.github/workflows/wda-tests.yml +221 -0
  51. package/drivers/ios/WebDriverAgent/.mocharc.js +4 -0
  52. package/drivers/ios/WebDriverAgent/.releaserc +45 -0
  53. package/drivers/ios/WebDriverAgent/CHANGELOG.md +1547 -0
  54. package/drivers/ios/WebDriverAgent/CONTRIBUTING.md +35 -0
  55. package/drivers/ios/WebDriverAgent/Configurations/IOSSettings.xcconfig +31 -0
  56. package/drivers/ios/WebDriverAgent/Configurations/IOSTestSettings.xcconfig +1 -0
  57. package/drivers/ios/WebDriverAgent/Configurations/TVOSSettings.xcconfig +31 -0
  58. package/drivers/ios/WebDriverAgent/Configurations/TVOSTestSettings.xcconfig +1 -0
  59. package/drivers/ios/WebDriverAgent/Fastlane/Fastfile +13 -0
  60. package/drivers/ios/WebDriverAgent/Gemfile +3 -0
  61. package/drivers/ios/WebDriverAgent/LICENSE +30 -0
  62. package/drivers/ios/WebDriverAgent/PrivateHeaders/AccessibilityUtilities/AXSettings.h +15 -0
  63. package/drivers/ios/WebDriverAgent/PrivateHeaders/MobileCoreServices/LSApplicationWorkspace.h +127 -0
  64. package/drivers/ios/WebDriverAgent/PrivateHeaders/TextInput/TIPreferencesController.h +45 -0
  65. package/drivers/ios/WebDriverAgent/PrivateHeaders/UIKitCore/UIKeyboardImpl.h +27 -0
  66. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/CDStructures.h +28 -0
  67. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSString-XCTAdditions.h +11 -0
  68. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/NSValue-XCTestAdditions.h +11 -0
  69. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIGestureRecognizer-RecordingAdditions.h +11 -0
  70. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UILongPressGestureRecognizer-RecordingAdditions.h +11 -0
  71. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPanGestureRecognizer-RecordingAdditions.h +11 -0
  72. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UIPinchGestureRecognizer-RecordingAdditions.h +11 -0
  73. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UISwipeGestureRecognizer-RecordingAdditions.h +11 -0
  74. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/UITapGestureRecognizer-RecordingAdditions.h +11 -0
  75. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCAXClient_iOS.h +55 -0
  76. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCActivityRecord.h +39 -0
  77. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor.h +44 -0
  78. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationMonitor_iOS.h +18 -0
  79. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCApplicationQuery.h +23 -0
  80. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDebugLogDelegate-Protocol.h +11 -0
  81. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCDeviceEvent.h +27 -0
  82. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCEventGenerator.h +73 -0
  83. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyMappingPath.h +36 -0
  84. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardInputSolver.h +41 -0
  85. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardKeyMap.h +101 -0
  86. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCKeyboardLayout.h +35 -0
  87. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEvent.h +30 -0
  88. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCPointerEventPath.h +43 -0
  89. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeRecording.h +42 -0
  90. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNode.h +84 -0
  91. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSourceCodeTreeNodeEnumerator.h +18 -0
  92. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicationRecord.h +29 -0
  93. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSymbolicatorHolder.h +14 -0
  94. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCSynthesizedEventRecord.h +32 -0
  95. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAXClient-Protocol.h +14 -0
  96. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity-Protocol.h +16 -0
  97. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAsyncActivity.h +23 -0
  98. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTAutomationTarget-Protocol.h +12 -0
  99. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTDarwinNotificationExpectation.h +23 -0
  100. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTElementSetTransformer-Protocol.h +18 -0
  101. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTKVOExpectation.h +28 -0
  102. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTMetric.h +29 -0
  103. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSNotificationExpectation.h +27 -0
  104. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectation.h +24 -0
  105. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTNSPredicateExpectationObject-Protocol.h +15 -0
  106. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerAutomationSession.h +21 -0
  107. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerDaemonSession.h +98 -0
  108. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTRunnerIDESession.h +65 -0
  109. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSession.h +25 -0
  110. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTTestRunSessionDelegate-Protocol.h +17 -0
  111. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTUIApplicationMonitor-Protocol.h +17 -0
  112. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiter.h +55 -0
  113. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegate-Protocol.h +16 -0
  114. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterDelegatePrivate-Protocol.h +12 -0
  115. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManagement-Protocol.h +13 -0
  116. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTWaiterManager.h +28 -0
  117. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTest.h +34 -0
  118. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCase.h +102 -0
  119. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseRun.h +18 -0
  120. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestCaseSuite.h +19 -0
  121. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestConfiguration.h +66 -0
  122. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContext.h +26 -0
  123. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestContextScope.h +19 -0
  124. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriver.h +38 -0
  125. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestDriverInterface-Protocol.h +14 -0
  126. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectation.h +39 -0
  127. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationDelegate-Protocol.h +14 -0
  128. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestExpectationWaiter.h +17 -0
  129. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestLog.h +32 -0
  130. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_IDEInterface-Protocol.h +36 -0
  131. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_ManagerInterface-Protocol.h +54 -0
  132. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestManager_TestsInterface-Protocol.h +12 -0
  133. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestMisuseObserver.h +37 -0
  134. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservation-Protocol.h +20 -0
  135. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObservationCenter.h +36 -0
  136. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestObserver.h +20 -0
  137. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestProbe.h +13 -0
  138. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestRun.h +39 -0
  139. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuite.h +48 -0
  140. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestSuiteRun.h +28 -0
  141. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCTestWaiter.h +14 -0
  142. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplication.h +60 -0
  143. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationImpl.h +38 -0
  144. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIApplicationProcess.h +85 -0
  145. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUICoordinate.h +44 -0
  146. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIDevice.h +30 -0
  147. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElement.h +74 -0
  148. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementAsynchronousHandlerWrapper.h +19 -0
  149. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementHitPointCoordinate.h +24 -0
  150. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIElementQuery.h +70 -0
  151. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIHitPointResult.h +20 -0
  152. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinder.h +65 -0
  153. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderNodeFinderMatch.h +25 -0
  154. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderTimingMessage.h +20 -0
  155. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIRecorderUtilities.h +45 -0
  156. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreen.h +27 -0
  157. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/XCUIScreenDataSource-Protocol.h +19 -0
  158. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCInternalTestRun.h +43 -0
  159. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCKVOExpectationImplementation.h +32 -0
  160. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTDarwinNotificationExpectationImplementation.h +27 -0
  161. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSNotificationExpectationImplementation.h +30 -0
  162. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTNSPredicateExpectationImplementation.h +29 -0
  163. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTWaiterImpl.h +41 -0
  164. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseImplementation.h +70 -0
  165. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestCaseInterruptionException.h +13 -0
  166. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestExpectationImplementation.h +40 -0
  167. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestImplementation.h +14 -0
  168. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestObservationCenterImplementation.h +19 -0
  169. package/drivers/ios/WebDriverAgent/PrivateHeaders/XCTest/_XCTestSuiteImplementation.h +23 -0
  170. package/drivers/ios/WebDriverAgent/README.md +56 -0
  171. package/drivers/ios/WebDriverAgent/Scripts/build-webdriveragent.mjs +85 -0
  172. package/drivers/ios/WebDriverAgent/Scripts/build.sh +124 -0
  173. package/drivers/ios/WebDriverAgent/Scripts/ci/build-real.sh +24 -0
  174. package/drivers/ios/WebDriverAgent/Scripts/ci/build-sim.sh +15 -0
  175. package/drivers/ios/WebDriverAgent/Scripts/fetch-prebuilt-wda.mjs +69 -0
  176. package/drivers/ios/WebDriverAgent/Scripts/update-wda-version.mjs +42 -0
  177. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.pbxproj +4547 -0
  178. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  179. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  180. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationApp.xcscheme +87 -0
  181. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_1.xcscheme +86 -0
  182. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_2.xcscheme +86 -0
  183. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/IntegrationTests_3.xcscheme +86 -0
  184. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib.xcscheme +125 -0
  185. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentLib_tvOS.xcscheme +95 -0
  186. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner-nodebug.xcscheme +87 -0
  187. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner.xcscheme +114 -0
  188. package/drivers/ios/WebDriverAgent/WebDriverAgent.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner_tvOS.xcscheme +123 -0
  189. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/FBXCElementSnapshotWrapper+Helpers.h +100 -0
  190. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/FBXCElementSnapshotWrapper+Helpers.m +192 -0
  191. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSDictionary+FBUtf8SafeDictionary.h +39 -0
  192. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSDictionary+FBUtf8SafeDictionary.m +87 -0
  193. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSExpression+FBFormat.h +29 -0
  194. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSExpression+FBFormat.m +34 -0
  195. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBVisualLength.h +18 -0
  196. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBVisualLength.m +18 -0
  197. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBXMLSafeString.h +27 -0
  198. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/NSString+FBXMLSafeString.m +30 -0
  199. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.h +25 -0
  200. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCAXClient_iOS+FBSnapshotReqParams.m +82 -0
  201. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCTIssue+FBPatcher.h +17 -0
  202. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCTIssue+FBPatcher.m +35 -0
  203. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.h +23 -0
  204. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBAlert.m +109 -0
  205. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBFocused.h +23 -0
  206. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.h +171 -0
  207. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBHelpers.m +645 -0
  208. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBQuiescence.h +24 -0
  209. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBQuiescence.m +28 -0
  210. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.h +29 -0
  211. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBTouchAction.m +75 -0
  212. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBUIInterruptions.h +22 -0
  213. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplication+FBUIInterruptions.m +31 -0
  214. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.h +27 -0
  215. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIApplicationProcess+FBQuiescence.m +118 -0
  216. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHealthCheck.h +30 -0
  217. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHealthCheck.m +47 -0
  218. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.h +193 -0
  219. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBHelpers.m +388 -0
  220. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.h +38 -0
  221. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIDevice+FBRotation.m +68 -0
  222. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.h +29 -0
  223. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBAccessibility.m +50 -0
  224. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCaching.h +19 -0
  225. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCaching.m +36 -0
  226. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBClassChain.h +57 -0
  227. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBClassChain.m +98 -0
  228. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCustomActions.h +27 -0
  229. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBCustomActions.m +127 -0
  230. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.h +75 -0
  231. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBFind.m +133 -0
  232. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBForceTouch.h +38 -0
  233. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBForceTouch.m +52 -0
  234. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.h +28 -0
  235. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBIsVisible.m +78 -0
  236. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBMinMax.h +33 -0
  237. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBMinMax.m +75 -0
  238. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBPickerWheel.h +45 -0
  239. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBPickerWheel.m +58 -0
  240. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBResolve.h +37 -0
  241. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBResolve.m +51 -0
  242. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.h +98 -0
  243. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBScrolling.m +342 -0
  244. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBSwiping.h +38 -0
  245. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBSwiping.m +56 -0
  246. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTVFocuse.h +35 -0
  247. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTVFocuse.m +71 -0
  248. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.h +64 -0
  249. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBTyping.m +199 -0
  250. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUID.h +42 -0
  251. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUID.m +85 -0
  252. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.h +106 -0
  253. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBUtilities.m +170 -0
  254. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBVisibleFrame.h +35 -0
  255. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBVisibleFrame.m +52 -0
  256. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.h +32 -0
  257. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElement+FBWebDriverAttributes.m +294 -0
  258. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.h +28 -0
  259. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Categories/XCUIElementQuery+FBHelpers.m +46 -0
  260. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBAlertViewCommands.h +19 -0
  261. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBAlertViewCommands.m +130 -0
  262. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.h +19 -0
  263. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBCustomCommands.m +633 -0
  264. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBDebugCommands.h +19 -0
  265. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBDebugCommands.m +81 -0
  266. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.h +19 -0
  267. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBElementCommands.m +705 -0
  268. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBFindElementCommands.h +18 -0
  269. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBFindElementCommands.m +186 -0
  270. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBOrientationCommands.h +19 -0
  271. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBOrientationCommands.m +185 -0
  272. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBScreenshotCommands.h +19 -0
  273. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBScreenshotCommands.m +40 -0
  274. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.h +19 -0
  275. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBSessionCommands.m +594 -0
  276. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchActionCommands.h +19 -0
  277. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchActionCommands.m +41 -0
  278. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchIDCommands.h +19 -0
  279. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBTouchIDCommands.m +30 -0
  280. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBUnknownCommands.h +19 -0
  281. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBUnknownCommands.m +39 -0
  282. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBVideoCommands.h +19 -0
  283. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Commands/FBVideoCommands.m +84 -0
  284. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.h +91 -0
  285. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/FBAlert.m +274 -0
  286. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Info.plist +26 -0
  287. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBCommandHandler.h +38 -0
  288. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBCommandStatus.h +80 -0
  289. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBCommandStatus.m +279 -0
  290. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElement.h +95 -0
  291. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementCache.h +61 -0
  292. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementCache.m +100 -0
  293. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementUtils.h +76 -0
  294. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBElementUtils.m +153 -0
  295. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptionHandler.h +29 -0
  296. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptionHandler.m +58 -0
  297. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.h +60 -0
  298. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBExceptions.m +24 -0
  299. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBHTTPStatusCodes.h +581 -0
  300. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponseJSONPayload.h +29 -0
  301. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponseJSONPayload.m +59 -0
  302. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponsePayload.h +74 -0
  303. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBResponsePayload.m +148 -0
  304. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.h +77 -0
  305. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRoute.m +174 -0
  306. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRouteRequest-Private.h +20 -0
  307. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRouteRequest.h +39 -0
  308. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBRouteRequest.m +32 -0
  309. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.h +56 -0
  310. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingContainer.m +72 -0
  311. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingPromise.h +29 -0
  312. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingPromise.m +31 -0
  313. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.h +39 -0
  314. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBScreenRecordingRequest.m +94 -0
  315. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession-Private.h +26 -0
  316. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.h +141 -0
  317. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBSession.m +295 -0
  318. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.h +65 -0
  319. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBTCPSocket.m +85 -0
  320. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.h +52 -0
  321. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m +248 -0
  322. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCAccessibilityElement.h +34 -0
  323. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCAccessibilityElement.m +17 -0
  324. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCDeviceEvent.h +34 -0
  325. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCDeviceEvent.m +42 -0
  326. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshot.h +82 -0
  327. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshot.m +9 -0
  328. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshotWrapper.h +29 -0
  329. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Routing/FBXCElementSnapshotWrapper.m +114 -0
  330. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAccessibilityTraits.h +20 -0
  331. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAccessibilityTraits.m +61 -0
  332. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.h +56 -0
  333. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBActiveAppDetectionPoint.m +87 -0
  334. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAlertsMonitor.h +51 -0
  335. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBAlertsMonitor.m +94 -0
  336. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.h +131 -0
  337. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBBaseActionsSynthesizer.m +165 -0
  338. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.h +45 -0
  339. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBCapabilities.m +25 -0
  340. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBClassChainQueryParser.h +99 -0
  341. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBClassChainQueryParser.m +666 -0
  342. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.h +403 -0
  343. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBConfiguration.m +711 -0
  344. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBDebugLogDelegateDecorator.h +26 -0
  345. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBDebugLogDelegateDecorator.m +49 -0
  346. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementHelpers.h +29 -0
  347. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementHelpers.m +21 -0
  348. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementTypeTransformer.h +45 -0
  349. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBElementTypeTransformer.m +149 -0
  350. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBErrorBuilder.h +64 -0
  351. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBErrorBuilder.m +75 -0
  352. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.h +19 -0
  353. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m +68 -0
  354. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.h +55 -0
  355. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageProcessor.m +170 -0
  356. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageUtils.h +25 -0
  357. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBImageUtils.m +80 -0
  358. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBKeyboard.h +37 -0
  359. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBKeyboard.m +123 -0
  360. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBLogger.h +32 -0
  361. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBLogger.m +47 -0
  362. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMacros.h +57 -0
  363. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.h +36 -0
  364. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMathUtils.m +63 -0
  365. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.h +24 -0
  366. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBMjpegServer.m +151 -0
  367. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBNotificationsHelper.h +37 -0
  368. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBNotificationsHelper.m +29 -0
  369. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.h +40 -0
  370. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBPasteboard.m +172 -0
  371. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBProtocolHelpers.h +46 -0
  372. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBProtocolHelpers.m +144 -0
  373. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBReflectionUtils.h +23 -0
  374. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBReflectionUtils.m +31 -0
  375. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRunLoopSpinner.h +77 -0
  376. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRunLoopSpinner.m +94 -0
  377. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRuntimeUtils.h +79 -0
  378. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBRuntimeUtils.m +112 -0
  379. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.h +22 -0
  380. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreen.m +21 -0
  381. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.h +44 -0
  382. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBScreenshot.m +227 -0
  383. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.h +48 -0
  384. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBSettings.m +42 -0
  385. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker-Private.h +27 -0
  386. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.h +52 -0
  387. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBTVNavigationTracker.m +142 -0
  388. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBUnattachedAppLauncher.h +26 -0
  389. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBUnattachedAppLauncher.m +21 -0
  390. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsHelpers.h +42 -0
  391. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsHelpers.m +119 -0
  392. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.h +19 -0
  393. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBW3CActionsSynthesizer.m +885 -0
  394. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBWebServerParams.h +22 -0
  395. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBWebServerParams.m +23 -0
  396. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.h +49 -0
  397. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCAXClientProxy.m +119 -0
  398. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.h +45 -0
  399. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCTestDaemonsProxy.m +359 -0
  400. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.h +80 -0
  401. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXCodeCompatibility.m +99 -0
  402. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXMLGenerationOptions.h +45 -0
  403. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXMLGenerationOptions.m +25 -0
  404. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath-Private.h +56 -0
  405. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.h +59 -0
  406. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/FBXPath.m +979 -0
  407. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCache.h +66 -0
  408. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCache.m +146 -0
  409. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCacheNode.h +43 -0
  410. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/LRUCache/LRUCacheNode.m +51 -0
  411. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/NSPredicate+FBFormat.h +42 -0
  412. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/NSPredicate+FBFormat.m +69 -0
  413. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.h +78 -0
  414. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCTestPrivateSymbols.m +107 -0
  415. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCUIApplicationProcessDelay.h +37 -0
  416. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Utilities/XCUIApplicationProcessDelay.m +83 -0
  417. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.h +1220 -0
  418. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.m +8812 -0
  419. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.h +1036 -0
  420. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.m +5868 -0
  421. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.h +12 -0
  422. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.m +88 -0
  423. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.h +56 -0
  424. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.m +106 -0
  425. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.h +107 -0
  426. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.m +2238 -0
  427. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPLogging.h +122 -0
  428. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.h +53 -0
  429. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.m +357 -0
  430. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPResponse.h +149 -0
  431. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.h +126 -0
  432. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.m +372 -0
  433. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/LICENSE +18 -0
  434. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.h +13 -0
  435. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.m +83 -0
  436. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.h +9 -0
  437. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.m +40 -0
  438. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.h +13 -0
  439. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.m +84 -0
  440. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/LICENSE +19 -0
  441. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.h +18 -0
  442. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.m +11 -0
  443. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.h +16 -0
  444. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.m +50 -0
  445. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.h +20 -0
  446. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.m +66 -0
  447. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.h +5 -0
  448. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.m +142 -0
  449. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h +55 -0
  450. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.m +303 -0
  451. package/drivers/ios/WebDriverAgent/WebDriverAgentLib/WebDriverAgentLib.h +59 -0
  452. package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/Info.plist +30 -0
  453. package/drivers/ios/WebDriverAgent/WebDriverAgentRunner/UITestingUITests.m +58 -0
  454. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/AppDelegate.h +14 -0
  455. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/AppDelegate.m +38 -0
  456. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBAlertViewController.h +14 -0
  457. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBAlertViewController.m +82 -0
  458. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBNavigationController.h +12 -0
  459. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBNavigationController.m +25 -0
  460. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBScrollViewController.h +13 -0
  461. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBScrollViewController.m +39 -0
  462. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBTableDataSource.h +16 -0
  463. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/FBTableDataSource.m +35 -0
  464. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/SceneDelegate.h +20 -0
  465. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/SceneDelegate.m +48 -0
  466. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchSpotView.h +17 -0
  467. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchSpotView.m +28 -0
  468. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchViewController.h +23 -0
  469. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchViewController.m +29 -0
  470. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.h +29 -0
  471. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/TouchableView.m +108 -0
  472. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.h +12 -0
  473. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Classes/ViewController.m +88 -0
  474. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Info.plist +71 -0
  475. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/Resources/Base.lproj/Main.storyboard +620 -0
  476. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationApp/main.m +15 -0
  477. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAlertTests.m +194 -0
  478. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBAutoAlertsHandlerTests.m +73 -0
  479. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBConfigurationTests.m +38 -0
  480. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementAttributeTests.m +264 -0
  481. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementSwipingTests.m +127 -0
  482. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBElementVisibilityTests.m +73 -0
  483. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBFailureProofTestCaseTests.m +41 -0
  484. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBForceTouchTests.m +85 -0
  485. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBImageProcessorTests.m +82 -0
  486. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.h +76 -0
  487. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBIntegrationTestCase.m +140 -0
  488. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBKeyboardTests.m +61 -0
  489. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBPasteboardTests.m +91 -0
  490. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBPickerWheelSelectTests.m +55 -0
  491. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSafariAlertTests.m +73 -0
  492. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScreenTests.m +31 -0
  493. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBScrollingTests.m +126 -0
  494. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBSessionIntegrationTests.m +131 -0
  495. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTapTest.m +103 -0
  496. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTestMacros.h +33 -0
  497. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBTypingTest.m +68 -0
  498. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBVideoRecordingTests.m +64 -0
  499. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CMultiTouchActionsIntegrationTests.m +124 -0
  500. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTouchActionsIntegrationTests.m +491 -0
  501. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBW3CTypeActionsTests.m +184 -0
  502. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/FBXPathIntegrationTests.m +157 -0
  503. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/Info.plist +24 -0
  504. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCElementSnapshotHelperTests.m +211 -0
  505. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCElementSnapshotHitPointTests.m +30 -0
  506. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIApplicationHelperTests.m +162 -0
  507. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHealthCheckTests.m +27 -0
  508. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceHelperTests.m +220 -0
  509. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIDeviceRotationTests.m +84 -0
  510. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementAttributesTests.m +248 -0
  511. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementFBFindTests.m +472 -0
  512. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/IntegrationTests/XCUIElementHelperIntegrationTests.m +51 -0
  513. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCElementSnapshotDouble.h +16 -0
  514. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCElementSnapshotDouble.m +110 -0
  515. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIApplicationDouble.h +17 -0
  516. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIApplicationDouble.m +66 -0
  517. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.h +51 -0
  518. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Doubles/XCUIElementDouble.m +104 -0
  519. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBClassChainTests.m +313 -0
  520. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBConfigurationTests.m +60 -0
  521. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementCacheTests.m +124 -0
  522. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementTypeTransformerTests.m +45 -0
  523. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBElementUtilitiesTests.m +36 -0
  524. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBErrorBuilderTests.m +61 -0
  525. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBExceptionHandlerTests.m +59 -0
  526. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBLRUCacheTests.m +127 -0
  527. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBMathUtilsTests.m +113 -0
  528. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBProtocolHelpersTests.m +81 -0
  529. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBRouteTests.m +129 -0
  530. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBRunLoopSpinnerTests.m +98 -0
  531. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBRuntimeUtilsTests.m +45 -0
  532. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSDKVersionTests.m +66 -0
  533. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBSessionTests.m +67 -0
  534. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXMLSafeStringTests.m +35 -0
  535. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/FBXPathTests.m +155 -0
  536. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/Info.plist +24 -0
  537. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSDictionaryFBUtf8SafeTests.m +34 -0
  538. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSExpressionFBFormatTests.m +60 -0
  539. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/NSPredicateFBFormatTests.m +72 -0
  540. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests/XCUIElementHelpersTests.m +50 -0
  541. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.h +46 -0
  542. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Doubles/XCUIElementDouble.m +80 -0
  543. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/FBTVNavigationTrackerTests.m +86 -0
  544. package/drivers/ios/WebDriverAgent/WebDriverAgentTests/UnitTests_tvOS/Info.plist +24 -0
  545. package/drivers/ios/WebDriverAgent/eslint.config.mjs +13 -0
  546. package/drivers/ios/WebDriverAgent/index.ts +7 -0
  547. package/drivers/ios/WebDriverAgent/lib/check-dependencies.ts +34 -0
  548. package/drivers/ios/WebDriverAgent/lib/constants.ts +18 -0
  549. package/drivers/ios/WebDriverAgent/lib/logger.ts +3 -0
  550. package/drivers/ios/WebDriverAgent/lib/no-session-proxy.ts +25 -0
  551. package/drivers/ios/WebDriverAgent/lib/types.ts +139 -0
  552. package/drivers/ios/WebDriverAgent/lib/utils.ts +342 -0
  553. package/drivers/ios/WebDriverAgent/lib/webdriveragent.ts +715 -0
  554. package/drivers/ios/WebDriverAgent/lib/xcodebuild.ts +488 -0
  555. package/drivers/ios/WebDriverAgent/package.json +102 -0
  556. package/drivers/ios/WebDriverAgent/test/functional/desired.ts +7 -0
  557. package/drivers/ios/WebDriverAgent/test/functional/helpers/simulator.ts +34 -0
  558. package/drivers/ios/WebDriverAgent/test/functional/webdriveragent-e2e-specs.ts +119 -0
  559. package/drivers/ios/WebDriverAgent/test/unit/utils-specs.ts +157 -0
  560. package/drivers/ios/WebDriverAgent/test/unit/webdriveragent-specs.ts +446 -0
  561. package/drivers/ios/WebDriverAgent/tsconfig.json +16 -0
  562. package/package.json +16 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import "FBTCPSocket.h"
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ @interface FBMjpegServer : NSObject <FBTCPSocketDelegate>
14
+
15
+ /**
16
+ The default constructor for the screenshot bradcaster service.
17
+ This service sends low resolution screenshots 10 times per seconds
18
+ to all connected clients.
19
+ */
20
+ - (instancetype)init;
21
+
22
+ @end
23
+
24
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import "FBMjpegServer.h"
10
+
11
+ #import <mach/mach_time.h>
12
+ @import UniformTypeIdentifiers;
13
+
14
+ #import "GCDAsyncSocket.h"
15
+ #import "FBConfiguration.h"
16
+ #import "FBLogger.h"
17
+ #import "FBScreenshot.h"
18
+ #import "FBImageProcessor.h"
19
+ #import "FBImageUtils.h"
20
+ #import "XCUIScreen.h"
21
+
22
+ static const NSUInteger MAX_FPS = 60;
23
+ static const NSTimeInterval FRAME_TIMEOUT = 1.;
24
+
25
+ static NSString *const SERVER_NAME = @"WDA MJPEG Server";
26
+ static const char *QUEUE_NAME = "JPEG Screenshots Provider Queue";
27
+
28
+
29
+ @interface FBMjpegServer()
30
+
31
+ @property (nonatomic, readonly) dispatch_queue_t backgroundQueue;
32
+ @property (nonatomic, readonly) NSMutableArray<GCDAsyncSocket *> *listeningClients;
33
+ @property (nonatomic, readonly) FBImageProcessor *imageProcessor;
34
+ @property (nonatomic, readonly) long long mainScreenID;
35
+
36
+ @end
37
+
38
+
39
+ @implementation FBMjpegServer
40
+
41
+ - (instancetype)init
42
+ {
43
+ if ((self = [super init])) {
44
+ _listeningClients = [NSMutableArray array];
45
+ dispatch_queue_attr_t queueAttributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_UTILITY, 0);
46
+ _backgroundQueue = dispatch_queue_create(QUEUE_NAME, queueAttributes);
47
+ dispatch_async(_backgroundQueue, ^{
48
+ [self streamScreenshot];
49
+ });
50
+ _imageProcessor = [[FBImageProcessor alloc] init];
51
+ _mainScreenID = [XCUIScreen.mainScreen displayID];
52
+ }
53
+ return self;
54
+ }
55
+
56
+ - (void)scheduleNextScreenshotWithInterval:(uint64_t)timerInterval timeStarted:(uint64_t)timeStarted
57
+ {
58
+ uint64_t timeElapsed = clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW) - timeStarted;
59
+ int64_t nextTickDelta = timerInterval - timeElapsed;
60
+ if (nextTickDelta > 0) {
61
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, nextTickDelta), self.backgroundQueue, ^{
62
+ [self streamScreenshot];
63
+ });
64
+ } else {
65
+ // Try to do our best to keep the FPS at a decent level
66
+ dispatch_async(self.backgroundQueue, ^{
67
+ [self streamScreenshot];
68
+ });
69
+ }
70
+ }
71
+
72
+ - (void)streamScreenshot
73
+ {
74
+ NSUInteger framerate = FBConfiguration.mjpegServerFramerate;
75
+ uint64_t timerInterval = (uint64_t)(1.0 / ((0 == framerate || framerate > MAX_FPS) ? MAX_FPS : framerate) * NSEC_PER_SEC);
76
+ uint64_t timeStarted = clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW);
77
+ @synchronized (self.listeningClients) {
78
+ if (0 == self.listeningClients.count) {
79
+ [self scheduleNextScreenshotWithInterval:timerInterval timeStarted:timeStarted];
80
+ return;
81
+ }
82
+ }
83
+
84
+ NSError *error;
85
+ CGFloat compressionQuality = MAX(FBMinCompressionQuality,
86
+ MIN(FBMaxCompressionQuality, FBConfiguration.mjpegServerScreenshotQuality / 100.0));
87
+ NSData *screenshotData = [FBScreenshot takeInOriginalResolutionWithScreenID:self.mainScreenID
88
+ compressionQuality:compressionQuality
89
+ uti:UTTypeJPEG
90
+ timeout:FRAME_TIMEOUT
91
+ error:&error];
92
+ if (nil == screenshotData) {
93
+ [FBLogger logFmt:@"%@", error.description];
94
+ [self scheduleNextScreenshotWithInterval:timerInterval timeStarted:timeStarted];
95
+ return;
96
+ }
97
+
98
+ CGFloat scalingFactor = FBConfiguration.mjpegScalingFactor / 100.0;
99
+ [self.imageProcessor submitImageData:screenshotData
100
+ scalingFactor:scalingFactor
101
+ completionHandler:^(NSData * _Nonnull scaled) {
102
+ [self sendScreenshot:scaled];
103
+ }];
104
+
105
+ [self scheduleNextScreenshotWithInterval:timerInterval timeStarted:timeStarted];
106
+ }
107
+
108
+ - (void)sendScreenshot:(NSData *)screenshotData {
109
+ NSString *chunkHeader = [NSString stringWithFormat:@"--BoundaryString\r\nContent-type: image/jpeg\r\nContent-Length: %@\r\n\r\n", @(screenshotData.length)];
110
+ NSMutableData *chunk = [[chunkHeader dataUsingEncoding:NSUTF8StringEncoding] mutableCopy];
111
+ [chunk appendData:screenshotData];
112
+ [chunk appendData:(id)[@"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
113
+ @synchronized (self.listeningClients) {
114
+ for (GCDAsyncSocket *client in self.listeningClients) {
115
+ [client writeData:chunk withTimeout:-1 tag:0];
116
+ }
117
+ }
118
+ }
119
+
120
+ - (void)didClientConnect:(GCDAsyncSocket *)newClient
121
+ {
122
+ [FBLogger logFmt:@"Got screenshots broadcast client connection at %@:%d", newClient.connectedHost, newClient.connectedPort];
123
+ // Start broadcast only after there is any data from the client
124
+ [newClient readDataWithTimeout:-1 tag:0];
125
+ }
126
+
127
+ - (void)didClientSendData:(GCDAsyncSocket *)client
128
+ {
129
+ @synchronized (self.listeningClients) {
130
+ if ([self.listeningClients containsObject:client]) {
131
+ return;
132
+ }
133
+ }
134
+
135
+ [FBLogger logFmt:@"Starting screenshots broadcast for the client at %@:%d", client.connectedHost, client.connectedPort];
136
+ NSString *streamHeader = [NSString stringWithFormat:@"HTTP/1.0 200 OK\r\nServer: %@\r\nConnection: close\r\nMax-Age: 0\r\nExpires: 0\r\nCache-Control: no-cache, private\r\nPragma: no-cache\r\nContent-Type: multipart/x-mixed-replace; boundary=--BoundaryString\r\n\r\n", SERVER_NAME];
137
+ [client writeData:(id)[streamHeader dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];
138
+ @synchronized (self.listeningClients) {
139
+ [self.listeningClients addObject:client];
140
+ }
141
+ }
142
+
143
+ - (void)didClientDisconnect:(GCDAsyncSocket *)client
144
+ {
145
+ @synchronized (self.listeningClients) {
146
+ [self.listeningClients removeObject:client];
147
+ }
148
+ [FBLogger log:@"Disconnected a client from screenshots broadcast"];
149
+ }
150
+
151
+ @end
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import <XCTest/XCTest.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ @interface FBNotificationsHelper : NSObject
14
+
15
+ /**
16
+ Creates an expectation that is fulfilled when an expected NSNotification is received
17
+
18
+ @param name The name of the awaited notification
19
+ @param timeout The maximum amount of float seconds to wait for the expectation
20
+ @return The appropriate waiter result
21
+ */
22
+ + (XCTWaiterResult)waitForNotificationWithName:(NSNotificationName)name
23
+ timeout:(NSTimeInterval)timeout;
24
+
25
+ /**
26
+ Creates an expectation that is fulfilled when an expected Darwin notification is received
27
+
28
+ @param name The name of the awaited notification
29
+ @param timeout The maximum amount of float seconds to wait for the expectation
30
+ @return The appropriate waiter result
31
+ */
32
+ + (XCTWaiterResult)waitForDarwinNotificationWithName:(NSString *)name
33
+ timeout:(NSTimeInterval)timeout;
34
+
35
+ @end
36
+
37
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import "FBNotificationsHelper.h"
10
+
11
+ @implementation FBNotificationsHelper
12
+
13
+ + (XCTWaiterResult)waitForNotificationWithName:(NSNotificationName)name
14
+ timeout:(NSTimeInterval)timeout
15
+ {
16
+ XCTNSNotificationExpectation *expectation = [[XCTNSNotificationExpectation alloc]
17
+ initWithName:name];
18
+ return [XCTWaiter waitForExpectations:@[expectation] timeout:timeout];
19
+ }
20
+
21
+ + (XCTWaiterResult)waitForDarwinNotificationWithName:(NSString *)name
22
+ timeout:(NSTimeInterval)timeout
23
+ {
24
+ XCTDarwinNotificationExpectation *expectation = [[XCTDarwinNotificationExpectation alloc]
25
+ initWithNotificationName:name];
26
+ return [XCTWaiter waitForExpectations:@[expectation] timeout:timeout];
27
+ }
28
+
29
+ @end
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import <XCTest/XCTest.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ #if !TARGET_OS_TV
14
+ @interface FBPasteboard : NSObject
15
+
16
+ /**
17
+ Sets data to the general pasteboard
18
+
19
+ @param data base64-encoded string containing the data chunk which is going to be written to the pasteboard
20
+ @param type one of the possible data types to set: plaintext, url, image
21
+ @param error If there is an error, upon return contains an NSError object that describes the problem
22
+ @return YES if the operation was successful
23
+ */
24
+ + (BOOL)setData:(NSData *)data forType:(NSString *)type error:(NSError **)error;
25
+
26
+ /**
27
+ Gets the data contained in the general pasteboard
28
+
29
+ @param type one of the possible data types to get: plaintext, url, image
30
+ @param error If there is an error, upon return contains an NSError object that describes the problem
31
+ @return NSData object, containing the pasteboard content or an empty string if the pasteboard is empty.
32
+ nil is returned if there was an error while getting the data from the pasteboard
33
+ */
34
+ + (nullable NSData *)dataForType:(NSString *)type error:(NSError **)error;
35
+
36
+ @end
37
+ #endif
38
+
39
+ NS_ASSUME_NONNULL_END
40
+
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import "FBPasteboard.h"
10
+
11
+ #import <mach/mach_time.h>
12
+ #import "FBAlert.h"
13
+ #import "FBErrorBuilder.h"
14
+ #import "FBMacros.h"
15
+ #import "XCUIApplication+FBHelpers.h"
16
+ #import "XCUIApplication+FBAlert.h"
17
+
18
+ #define ALERT_TIMEOUT_SEC 30
19
+ // Must not be less than FB_MONTORING_INTERVAL in FBAlertsMonitor
20
+ #define ALERT_CHECK_INTERVAL_SEC 2
21
+
22
+ #if !TARGET_OS_TV
23
+ @implementation FBPasteboard
24
+
25
+ + (BOOL)setData:(NSData *)data forType:(NSString *)type error:(NSError **)error
26
+ {
27
+ UIPasteboard *pb = UIPasteboard.generalPasteboard;
28
+ if ([type.lowercaseString isEqualToString:@"plaintext"]) {
29
+ pb.string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
30
+ } else if ([type.lowercaseString isEqualToString:@"image"]) {
31
+ UIImage *image = [UIImage imageWithData:data];
32
+ if (nil == image) {
33
+ NSString *description = @"No image can be parsed from the given pasteboard data";
34
+ if (error) {
35
+ *error = [[FBErrorBuilder.builder withDescription:description] build];
36
+ }
37
+ return NO;
38
+ }
39
+ pb.image = image;
40
+ } else if ([type.lowercaseString isEqualToString:@"url"]) {
41
+ NSString *urlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
42
+ NSURL *url = [[NSURL alloc] initWithString:urlString];
43
+ if (nil == url) {
44
+ NSString *description = @"No URL can be parsed from the given pasteboard data";
45
+ if (error) {
46
+ *error = [[FBErrorBuilder.builder withDescription:description] build];
47
+ }
48
+ return NO;
49
+ }
50
+ pb.URL = url;
51
+ } else {
52
+ NSString *description = [NSString stringWithFormat:@"Unsupported content type: %@", type];
53
+ if (error) {
54
+ *error = [[FBErrorBuilder.builder withDescription:description] build];
55
+ }
56
+ return NO;
57
+ }
58
+ return YES;
59
+ }
60
+
61
+ + (nullable id)pasteboardContentForItem:(NSString *)item
62
+ instance:(UIPasteboard *)pbInstance
63
+ timeout:(NSTimeInterval)timeout
64
+ error:(NSError **)error
65
+ {
66
+ SEL selector = NSSelectorFromString(item);
67
+ NSMethodSignature *methodSignature = [pbInstance methodSignatureForSelector:selector];
68
+ if (nil == methodSignature) {
69
+ NSString *description = [NSString stringWithFormat:@"Cannot retrieve '%@' from a UIPasteboard instance", item];
70
+ if (error) {
71
+ *error = [[FBErrorBuilder.builder withDescription:description] build];
72
+ }
73
+ return nil;
74
+ }
75
+ NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
76
+ [invocation setSelector:selector];
77
+ [invocation setTarget:pbInstance];
78
+ if (SYSTEM_VERSION_LESS_THAN(@"16.0")) {
79
+ [invocation invoke];
80
+ id __unsafe_unretained result;
81
+ [invocation getReturnValue:&result];
82
+ return result;
83
+ }
84
+
85
+ // https://github.com/appium/appium/issues/17392
86
+ __block id pasteboardContent;
87
+ dispatch_queue_t backgroundQueue = dispatch_queue_create("GetPasteboard", NULL);
88
+ __block BOOL didFinishGetPasteboard = NO;
89
+ dispatch_async(backgroundQueue, ^{
90
+ [invocation invoke];
91
+ id __unsafe_unretained result;
92
+ [invocation getReturnValue:&result];
93
+ pasteboardContent = result;
94
+ didFinishGetPasteboard = YES;
95
+ });
96
+ uint64_t timeStarted = clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW);
97
+ while (!didFinishGetPasteboard) {
98
+ [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:ALERT_CHECK_INTERVAL_SEC]];
99
+ if (didFinishGetPasteboard) {
100
+ break;
101
+ }
102
+
103
+ XCUIElement *alertElement = XCUIApplication.fb_systemApplication.fb_alertElement;
104
+ if (nil != alertElement) {
105
+ FBAlert *alert = [FBAlert alertWithElement:alertElement];
106
+ [alert acceptWithError:nil];
107
+ }
108
+ uint64_t timeElapsed = clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW) - timeStarted;
109
+ if (timeElapsed / NSEC_PER_SEC > timeout) {
110
+ NSString *description = [NSString stringWithFormat:@"Cannot handle pasteboard alert within %@s timeout", @(timeout)];
111
+ if (error) {
112
+ *error = [[FBErrorBuilder.builder withDescription:description] build];
113
+ }
114
+ return nil;
115
+ }
116
+ }
117
+ return pasteboardContent;
118
+ }
119
+
120
+ + (NSData *)dataForType:(NSString *)type error:(NSError **)error
121
+ {
122
+ UIPasteboard *pb = UIPasteboard.generalPasteboard;
123
+ if ([type.lowercaseString isEqualToString:@"plaintext"]) {
124
+ if (pb.hasStrings) {
125
+ id result = [self.class pasteboardContentForItem:@"strings"
126
+ instance:pb
127
+ timeout:ALERT_TIMEOUT_SEC
128
+ error:error
129
+ ];
130
+ return nil == result
131
+ ? nil
132
+ : [[(NSArray *)result componentsJoinedByString:@"\n"] dataUsingEncoding:NSUTF8StringEncoding];
133
+ }
134
+ } else if ([type.lowercaseString isEqualToString:@"image"]) {
135
+ if (pb.hasImages) {
136
+ id result = [self.class pasteboardContentForItem:@"image"
137
+ instance:pb
138
+ timeout:ALERT_TIMEOUT_SEC
139
+ error:error
140
+ ];
141
+ return nil == result ? nil : UIImagePNGRepresentation((UIImage *)result);
142
+ }
143
+ } else if ([type.lowercaseString isEqualToString:@"url"]) {
144
+ if (pb.hasURLs) {
145
+ id result = [self.class pasteboardContentForItem:@"URLs"
146
+ instance:pb
147
+ timeout:ALERT_TIMEOUT_SEC
148
+ error:error
149
+ ];
150
+ if (nil == result) {
151
+ return nil;
152
+ }
153
+ NSMutableArray<NSString *> *urls = [NSMutableArray array];
154
+ for (NSURL *url in (NSArray *)result) {
155
+ if (nil != url.absoluteString) {
156
+ [urls addObject:(id)url.absoluteString];
157
+ }
158
+ }
159
+ return [[urls componentsJoinedByString:@"\n"] dataUsingEncoding:NSUTF8StringEncoding];
160
+ }
161
+ } else {
162
+ NSString *description = [NSString stringWithFormat:@"Unsupported content type: %@", type];
163
+ if (error) {
164
+ *error = [[FBErrorBuilder.builder withDescription:description] build];
165
+ }
166
+ return nil;
167
+ }
168
+ return [@"" dataUsingEncoding:NSUTF8StringEncoding];
169
+ }
170
+
171
+ @end
172
+ #endif
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ /**
14
+ Prepares an element dictionary, which could be then used in hybrid W3C/JWP responses
15
+
16
+ @param element Either element identifier or element object itself
17
+ @returns The resulting dictionary
18
+ */
19
+ NSDictionary<NSString *, id> *FBToElementDict(id element);
20
+
21
+ /**
22
+ Extracts element uuid from dictionary
23
+
24
+ @param src The source dictionary
25
+ @returns The resulting element or nil if no element keys are found
26
+ */
27
+ id _Nullable FBExtractElement(NSDictionary *src);
28
+
29
+ /**
30
+ Cleanup items having element keys from the dictionary
31
+
32
+ @param src The source dictionary
33
+ @returns The resulting dictionary
34
+ */
35
+ NSDictionary *FBCleanupElements(NSDictionary *src);
36
+
37
+ /**
38
+ Parses key/value pairs of valid W3C capabilities
39
+
40
+ @param caps The source capabilitites dictionary
41
+ @param error Is set if there was an error while parsing the source capabilities
42
+ @returns Parsed capabilitites mapping or nil in case of failure
43
+ */
44
+ NSDictionary<NSString *, id> *_Nullable FBParseCapabilities(NSDictionary<NSString *, id> *caps, NSError **error);
45
+
46
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import "FBProtocolHelpers.h"
10
+
11
+ #import "FBErrorBuilder.h"
12
+ #import "FBLogger.h"
13
+
14
+ static NSString *const W3C_ELEMENT_KEY = @"element-6066-11e4-a52e-4f735466cecf";
15
+ static NSString *const JSONWP_ELEMENT_KEY = @"ELEMENT";
16
+
17
+ static NSString *const APPIUM_PREFIX = @"appium";
18
+ static NSString *const ALWAYS_MATCH_KEY = @"alwaysMatch";
19
+ static NSString *const FIRST_MATCH_KEY = @"firstMatch";
20
+
21
+
22
+ NSDictionary<NSString *, id> *FBToElementDict(id element)
23
+ {
24
+ return @{
25
+ W3C_ELEMENT_KEY: element,
26
+ JSONWP_ELEMENT_KEY: element
27
+ };
28
+ }
29
+
30
+ id FBExtractElement(NSDictionary *src)
31
+ {
32
+ for (NSString* key in src) {
33
+ if ([key.lowercaseString isEqualToString:W3C_ELEMENT_KEY.lowercaseString]
34
+ || [key.lowercaseString isEqualToString:JSONWP_ELEMENT_KEY.lowercaseString]) {
35
+ return src[key];
36
+ }
37
+ }
38
+ return nil;
39
+ }
40
+
41
+ NSDictionary *FBCleanupElements(NSDictionary *src)
42
+ {
43
+ NSMutableDictionary *result = src.mutableCopy;
44
+ for (NSString* key in src) {
45
+ if ([key.lowercaseString isEqualToString:W3C_ELEMENT_KEY.lowercaseString]
46
+ || [key.lowercaseString isEqualToString:JSONWP_ELEMENT_KEY.lowercaseString]) {
47
+ [result removeObjectForKey:key];
48
+ }
49
+ }
50
+ return result.copy;
51
+ }
52
+
53
+ NSArray<NSString *> *standardCapabilities(void)
54
+ {
55
+ static NSArray<NSString *> *standardCaps;
56
+ static dispatch_once_t onceStandardCaps;
57
+ dispatch_once(&onceStandardCaps, ^{
58
+ standardCaps = @[
59
+ @"browserName",
60
+ @"browserVersion",
61
+ @"platformName",
62
+ @"acceptInsecureCerts",
63
+ @"pageLoadStrategy",
64
+ @"proxy",
65
+ @"setWindowRect",
66
+ @"timeouts",
67
+ @"unhandledPromptBehavior"
68
+ ];
69
+ });
70
+ return standardCaps;
71
+ }
72
+
73
+ BOOL isStandardCap(NSString *capName)
74
+ {
75
+ return [standardCapabilities() containsObject:capName];
76
+ }
77
+
78
+ NSDictionary<NSString *, id> *_Nullable mergeCaps(NSDictionary<NSString *, id> *primary, NSDictionary<NSString *, id> *secondary, NSError **error)
79
+ {
80
+ NSMutableDictionary<NSString *, id> *result = primary.mutableCopy;
81
+ for (NSString *capName in secondary) {
82
+ if (nil != result[capName]) {
83
+ [[[FBErrorBuilder builder]
84
+ withDescriptionFormat:@"Property '%@' should not exist on both primary (%@) and secondary (%@) objects", capName, primary, secondary]
85
+ buildError:error];
86
+ return nil;
87
+ }
88
+ [result setObject:(id) secondary[capName] forKey:capName];
89
+ }
90
+ return result.copy;
91
+ }
92
+
93
+ NSDictionary<NSString *, id> *_Nullable stripPrefixes(NSDictionary<NSString *, id> *caps, NSError **error)
94
+ {
95
+ NSString* prefix = [NSString stringWithFormat:@"%@:", APPIUM_PREFIX];
96
+ NSMutableDictionary<NSString *, id> *filteredCaps = [NSMutableDictionary dictionary];
97
+ NSMutableArray<NSString *> *badPrefixedCaps = [NSMutableArray array];
98
+ for (NSString *capName in caps) {
99
+ if (![capName hasPrefix:prefix]) {
100
+ [filteredCaps setObject:(id) caps[capName] forKey:capName];
101
+ continue;
102
+ }
103
+
104
+ NSString *strippedName = [capName substringFromIndex:prefix.length];
105
+ [filteredCaps setObject:(id) caps[capName] forKey:strippedName];
106
+ if (isStandardCap(strippedName)) {
107
+ [badPrefixedCaps addObject:strippedName];
108
+ }
109
+ }
110
+ if (badPrefixedCaps.count > 0) {
111
+ [[[FBErrorBuilder builder]
112
+ withDescriptionFormat:@"The capabilities %@ are standard and should not have the '%@' prefix", badPrefixedCaps, prefix]
113
+ buildError:error];
114
+ return nil;
115
+ }
116
+ return filteredCaps.copy;
117
+ }
118
+
119
+ NSDictionary<NSString *, id> *FBParseCapabilities(NSDictionary<NSString *, id> *caps, NSError **error)
120
+ {
121
+ NSDictionary<NSString *, id> *alwaysMatch = caps[ALWAYS_MATCH_KEY] ?: @{};
122
+ NSArray<NSDictionary<NSString *, id> *> *firstMatch = caps[FIRST_MATCH_KEY] ?: @[];
123
+ NSArray<NSDictionary<NSString *, id> *> *allFirstMatchCaps = firstMatch.count == 0 ? @[@{}] : firstMatch;
124
+ NSDictionary<NSString *, id> *requiredCaps;
125
+ if (nil == (requiredCaps = stripPrefixes(alwaysMatch, error))) {
126
+ return nil;
127
+ }
128
+ for (NSDictionary<NSString *, id> *fmc in allFirstMatchCaps) {
129
+ NSDictionary<NSString *, id> *strippedCaps;
130
+ if (nil == (strippedCaps = stripPrefixes(fmc, error))) {
131
+ return nil;
132
+ }
133
+ NSDictionary<NSString *, id> *mergedCaps;
134
+ if (nil == (mergedCaps = mergeCaps(requiredCaps, strippedCaps, error))) {
135
+ [FBLogger logFmt:@"%@", (*error).description];
136
+ continue;
137
+ }
138
+ return mergedCaps;
139
+ }
140
+ [[[FBErrorBuilder builder]
141
+ withDescriptionFormat:@"Could not find matching capabilities from %@", caps]
142
+ buildError:error];
143
+ return nil;
144
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ /**
14
+ * Swizzles the implemntation of originalSelector with the swizzledSelector for the given class.
15
+ * Both methods must belong to this class.
16
+ *
17
+ * @param cls The class where to swizzle
18
+ * @param originalSelector original method selector
19
+ * @paramswizzledSelector swizzled method selector
20
+ */
21
+ void FBReplaceMethod(Class cls, SEL originalSelector, SEL swizzledSelector);
22
+
23
+ NS_ASSUME_NONNULL_END