@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,979 @@
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 "FBXPath.h"
10
+
11
+ #import "FBConfiguration.h"
12
+ #import "FBExceptions.h"
13
+ #import "FBElementUtils.h"
14
+ #import "FBLogger.h"
15
+ #import "FBMacros.h"
16
+ #import "FBXMLGenerationOptions.h"
17
+ #import "FBXCElementSnapshotWrapper+Helpers.h"
18
+ #import "NSString+FBXMLSafeString.h"
19
+ #import "XCUIApplication.h"
20
+ #import "XCUIElement.h"
21
+ #import "XCUIElement+FBCaching.h"
22
+ #import "XCUIElement+FBUtilities.h"
23
+ #import "XCUIElement+FBWebDriverAttributes.h"
24
+ #import "XCTestPrivateSymbols.h"
25
+ #import "FBElementHelpers.h"
26
+ #import "FBXCAXClientProxy.h"
27
+ #import "FBXCAccessibilityElement.h"
28
+
29
+
30
+ @interface FBElementAttribute : NSObject
31
+
32
+ @property (nonatomic, readonly) id<FBElement> element;
33
+
34
+ + (nonnull NSString *)name;
35
+ + (nullable NSString *)valueForElement:(id<FBElement>)element;
36
+
37
+ + (int)recordWithWriter:(xmlTextWriterPtr)writer forElement:(id<FBElement>)element;
38
+ + (int)recordWithWriter:(xmlTextWriterPtr)writer forValue:(nullable NSString *)value;
39
+
40
+ + (NSArray<Class> *)supportedAttributes;
41
+
42
+ @end
43
+
44
+ @interface FBTypeAttribute : FBElementAttribute
45
+
46
+ @end
47
+
48
+ @interface FBValueAttribute : FBElementAttribute
49
+
50
+ @end
51
+
52
+ @interface FBNameAttribute : FBElementAttribute
53
+
54
+ @end
55
+
56
+ @interface FBLabelAttribute : FBElementAttribute
57
+
58
+ @end
59
+
60
+ @interface FBEnabledAttribute : FBElementAttribute
61
+
62
+ @end
63
+
64
+ @interface FBVisibleAttribute : FBElementAttribute
65
+
66
+ @end
67
+
68
+ @interface FBAccessibleAttribute : FBElementAttribute
69
+
70
+ @end
71
+
72
+ @interface FBDimensionAttribute : FBElementAttribute
73
+
74
+ @end
75
+
76
+ @interface FBXAttribute : FBDimensionAttribute
77
+
78
+ @end
79
+
80
+ @interface FBYAttribute : FBDimensionAttribute
81
+
82
+ @end
83
+
84
+ @interface FBWidthAttribute : FBDimensionAttribute
85
+
86
+ @end
87
+
88
+ @interface FBHeightAttribute : FBDimensionAttribute
89
+
90
+ @end
91
+
92
+ @interface FBIndexAttribute : FBElementAttribute
93
+
94
+ @end
95
+
96
+ @interface FBHittableAttribute : FBElementAttribute
97
+
98
+ @end
99
+
100
+ @interface FBInternalIndexAttribute : FBElementAttribute
101
+
102
+ @property (nonatomic, nonnull, readonly) NSString* indexValue;
103
+
104
+ @end
105
+
106
+ @interface FBApplicationBundleIdAttribute : FBElementAttribute
107
+
108
+ @end
109
+
110
+ @interface FBApplicationPidAttribute : FBElementAttribute
111
+
112
+ @end
113
+
114
+ @interface FBPlaceholderValueAttribute : FBElementAttribute
115
+
116
+ @end
117
+
118
+ @interface FBNativeFrameAttribute : FBElementAttribute
119
+
120
+ @end
121
+
122
+ @interface FBTraitsAttribute : FBElementAttribute
123
+
124
+ @end
125
+
126
+ @interface FBMinValueAttribute : FBElementAttribute
127
+
128
+ @end
129
+
130
+ @interface FBMaxValueAttribute : FBElementAttribute
131
+
132
+ @end
133
+
134
+ @interface FBCustomActionsAttribute : FBElementAttribute
135
+
136
+ @end
137
+
138
+ #if TARGET_OS_TV
139
+
140
+ @interface FBFocusedAttribute : FBElementAttribute
141
+
142
+ @end
143
+
144
+ #endif
145
+
146
+ const static char *_UTF8Encoding = "UTF-8";
147
+
148
+ static NSString *const kXMLIndexPathKey = @"private_indexPath";
149
+ static NSString *const topNodeIndexPath = @"top";
150
+
151
+ @implementation FBXPath
152
+
153
+ + (id)throwException:(NSString *)name forQuery:(NSString *)xpathQuery
154
+ {
155
+ NSString *reason = [NSString stringWithFormat:@"Cannot evaluate results for XPath expression \"%@\"", xpathQuery];
156
+ @throw [NSException exceptionWithName:name reason:reason userInfo:@{}];
157
+ return nil;
158
+ }
159
+
160
+ + (nullable NSString *)xmlStringWithRootElement:(id<FBElement>)root
161
+ options:(nullable FBXMLGenerationOptions *)options
162
+ {
163
+ xmlDocPtr doc;
164
+ xmlTextWriterPtr writer = xmlNewTextWriterDoc(&doc, 0);
165
+ int rc = xmlTextWriterStartDocument(writer, NULL, _UTF8Encoding, NULL);
166
+ if (rc < 0) {
167
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterStartDocument. Error code: %d", rc];
168
+ } else {
169
+ BOOL hasScope = nil != options.scope && [options.scope length] > 0;
170
+ if (hasScope) {
171
+ rc = xmlTextWriterStartElement(writer,
172
+ (xmlChar *)[[self safeXmlStringWithString:options.scope] UTF8String]);
173
+ if (rc < 0) {
174
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterStartElement for the tag value '%@'. Error code: %d", options.scope, rc];
175
+ }
176
+ }
177
+
178
+ if (rc >= 0) {
179
+ [self waitUntilStableWithElement:root];
180
+ // If 'includeHittableInPageSource' setting is enabled, then use native snapshots
181
+ // to calculate a more accurate value for the 'hittable' attribute.
182
+ rc = [self xmlRepresentationWithRootElement:[self snapshotWithRoot:root
183
+ useNative:FBConfiguration.includeHittableInPageSource]
184
+ writer:writer
185
+ elementStore:nil
186
+ query:nil
187
+ excludingAttributes:options.excludedAttributes];
188
+ }
189
+
190
+ if (rc >= 0 && hasScope) {
191
+ rc = xmlTextWriterEndElement(writer);
192
+ if (rc < 0) {
193
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterEndElement. Error code: %d", rc];
194
+ }
195
+ }
196
+
197
+ if (rc >= 0) {
198
+ rc = xmlTextWriterEndDocument(writer);
199
+ if (rc < 0) {
200
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathNewContext. Error code: %d", rc];
201
+ }
202
+ }
203
+ }
204
+ if (rc < 0) {
205
+ xmlFreeTextWriter(writer);
206
+ xmlFreeDoc(doc);
207
+ return nil;
208
+ }
209
+ int buffersize;
210
+ xmlChar *xmlbuff;
211
+ xmlDocDumpFormatMemory(doc, &xmlbuff, &buffersize, 1);
212
+ xmlFreeTextWriter(writer);
213
+ xmlFreeDoc(doc);
214
+ NSString *result = [NSString stringWithCString:(const char *)xmlbuff encoding:NSUTF8StringEncoding];
215
+ xmlFree(xmlbuff);
216
+ return result;
217
+ }
218
+
219
+ + (NSArray<id<FBXCElementSnapshot>> *)matchesWithRootElement:(id<FBElement>)root
220
+ forQuery:(NSString *)xpathQuery
221
+ {
222
+ xmlDocPtr doc;
223
+
224
+ xmlTextWriterPtr writer = xmlNewTextWriterDoc(&doc, 0);
225
+ if (NULL == writer) {
226
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlNewTextWriterDoc for XPath query \"%@\"", xpathQuery];
227
+ return [self throwException:FBXPathQueryEvaluationException forQuery:xpathQuery];
228
+ }
229
+ NSMutableDictionary *elementStore = [NSMutableDictionary dictionary];
230
+ int rc = xmlTextWriterStartDocument(writer, NULL, _UTF8Encoding, NULL);
231
+ id<FBXCElementSnapshot> lookupScopeSnapshot = nil;
232
+ id<FBXCElementSnapshot> contextRootSnapshot = nil;
233
+ BOOL useNativeSnapshot = nil == xpathQuery
234
+ ? NO
235
+ : [[self.class elementAttributesWithXPathQuery:xpathQuery] containsObject:FBHittableAttribute.class];
236
+ if (rc < 0) {
237
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterStartDocument. Error code: %d", rc];
238
+ } else {
239
+ [self waitUntilStableWithElement:root];
240
+ if (FBConfiguration.limitXpathContextScope) {
241
+ lookupScopeSnapshot = [self snapshotWithRoot:root useNative:useNativeSnapshot];
242
+ } else {
243
+ if ([root isKindOfClass:XCUIElement.class]) {
244
+ lookupScopeSnapshot = [self snapshotWithRoot:[(XCUIElement *)root application]
245
+ useNative:useNativeSnapshot];
246
+ contextRootSnapshot = [root isKindOfClass:XCUIApplication.class]
247
+ ? nil
248
+ : ([(XCUIElement *)root lastSnapshot] ?: [self snapshotWithRoot:(XCUIElement *)root
249
+ useNative:useNativeSnapshot]);
250
+ } else {
251
+ lookupScopeSnapshot = (id<FBXCElementSnapshot>)root;
252
+ contextRootSnapshot = nil == lookupScopeSnapshot.parent ? nil : (id<FBXCElementSnapshot>)root;
253
+ while (nil != lookupScopeSnapshot.parent) {
254
+ lookupScopeSnapshot = lookupScopeSnapshot.parent;
255
+ }
256
+ }
257
+ }
258
+
259
+ rc = [self xmlRepresentationWithRootElement:lookupScopeSnapshot
260
+ writer:writer
261
+ elementStore:elementStore
262
+ query:xpathQuery
263
+ excludingAttributes:nil];
264
+ if (rc >= 0) {
265
+ rc = xmlTextWriterEndDocument(writer);
266
+ if (rc < 0) {
267
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterEndDocument. Error code: %d", rc];
268
+ }
269
+ }
270
+ }
271
+ if (rc < 0) {
272
+ xmlFreeTextWriter(writer);
273
+ xmlFreeDoc(doc);
274
+ return [self throwException:FBXPathQueryEvaluationException forQuery:xpathQuery];
275
+ }
276
+
277
+ xmlXPathObjectPtr contextNodeQueryResult = [self matchNodeInDocument:doc
278
+ elementStore:elementStore.copy
279
+ forSnapshot:contextRootSnapshot];
280
+ xmlNodePtr contextNode = NULL;
281
+ if (NULL != contextNodeQueryResult) {
282
+ xmlNodeSetPtr nodeSet = contextNodeQueryResult->nodesetval;
283
+ if (!xmlXPathNodeSetIsEmpty(nodeSet)) {
284
+ contextNode = nodeSet->nodeTab[0];
285
+ }
286
+ }
287
+ xmlXPathObjectPtr queryResult = [self evaluate:xpathQuery
288
+ document:doc
289
+ contextNode:contextNode];
290
+ if (NULL != contextNodeQueryResult) {
291
+ xmlXPathFreeObject(contextNodeQueryResult);
292
+ }
293
+ if (NULL == queryResult) {
294
+ xmlFreeTextWriter(writer);
295
+ xmlFreeDoc(doc);
296
+ return [self throwException:FBInvalidXPathException forQuery:xpathQuery];
297
+ }
298
+
299
+ NSArray *matchingSnapshots = [self collectMatchingSnapshots:queryResult->nodesetval
300
+ elementStore:elementStore];
301
+ xmlXPathFreeObject(queryResult);
302
+ xmlFreeTextWriter(writer);
303
+ xmlFreeDoc(doc);
304
+ if (nil == matchingSnapshots) {
305
+ return [self throwException:FBXPathQueryEvaluationException forQuery:xpathQuery];
306
+ }
307
+ return matchingSnapshots;
308
+ }
309
+
310
+ + (NSArray *)collectMatchingSnapshots:(xmlNodeSetPtr)nodeSet
311
+ elementStore:(NSMutableDictionary *)elementStore
312
+ {
313
+ if (xmlXPathNodeSetIsEmpty(nodeSet)) {
314
+ return @[];
315
+ }
316
+ NSMutableArray *matchingSnapshots = [NSMutableArray array];
317
+ const xmlChar *indexPathKeyName = (xmlChar *)[kXMLIndexPathKey UTF8String];
318
+ for (NSInteger i = 0; i < nodeSet->nodeNr; i++) {
319
+ xmlNodePtr currentNode = nodeSet->nodeTab[i];
320
+ xmlChar *attrValue = xmlGetProp(currentNode, indexPathKeyName);
321
+ if (NULL == attrValue) {
322
+ [FBLogger log:@"Failed to invoke libxml2>xmlGetProp"];
323
+ return nil;
324
+ }
325
+ id<FBXCElementSnapshot> element = [elementStore objectForKey:(id)[NSString stringWithCString:(const char *)attrValue encoding:NSUTF8StringEncoding]];
326
+ if (element) {
327
+ [matchingSnapshots addObject:element];
328
+ }
329
+ xmlFree(attrValue);
330
+ }
331
+ return matchingSnapshots.copy;
332
+ }
333
+
334
+ + (nullable xmlXPathObjectPtr)matchNodeInDocument:(xmlDocPtr)doc
335
+ elementStore:(NSDictionary<NSString *, id<FBXCElementSnapshot>> *)elementStore
336
+ forSnapshot:(nullable id<FBXCElementSnapshot>)snapshot
337
+ {
338
+ if (nil == snapshot) {
339
+ return NULL;
340
+ }
341
+
342
+ NSString *contextRootUid = [FBElementUtils uidWithAccessibilityElement:[(id)snapshot accessibilityElement]];
343
+ if (nil == contextRootUid) {
344
+ return NULL;
345
+ }
346
+
347
+ for (NSString *key in elementStore) {
348
+ id<FBXCElementSnapshot> value = [elementStore objectForKey:key];
349
+ NSString *snapshotUid = [FBElementUtils uidWithAccessibilityElement:[value accessibilityElement]];
350
+ if (nil == snapshotUid || ![snapshotUid isEqualToString:contextRootUid]) {
351
+ continue;
352
+ }
353
+ NSString *indexQuery = [NSString stringWithFormat:@"//*[@%@=\"%@\"]", kXMLIndexPathKey, key];
354
+ xmlXPathObjectPtr queryResult = [self evaluate:indexQuery
355
+ document:doc
356
+ contextNode:NULL];
357
+ if (NULL != queryResult) {
358
+ return queryResult;
359
+ }
360
+ }
361
+ return NULL;
362
+ }
363
+
364
+ + (NSSet<Class> *)elementAttributesWithXPathQuery:(NSString *)query
365
+ {
366
+ if ([query rangeOfString:@"[^\\w@]@\\*[^\\w]" options:NSRegularExpressionSearch].location != NSNotFound) {
367
+ // read all element attributes if 'star' attribute name pattern is used in xpath query
368
+ return [NSSet setWithArray:FBElementAttribute.supportedAttributes];
369
+ }
370
+ NSMutableSet<Class> *result = [NSMutableSet set];
371
+ for (Class attributeCls in FBElementAttribute.supportedAttributes) {
372
+ if ([query rangeOfString:[NSString stringWithFormat:@"[^\\w@]@%@[^\\w]", [attributeCls name]] options:NSRegularExpressionSearch].location != NSNotFound) {
373
+ [result addObject:attributeCls];
374
+ }
375
+ }
376
+ return result.copy;
377
+ }
378
+
379
+ + (int)xmlRepresentationWithRootElement:(id<FBXCElementSnapshot>)root
380
+ writer:(xmlTextWriterPtr)writer
381
+ elementStore:(nullable NSMutableDictionary *)elementStore
382
+ query:(nullable NSString*)query
383
+ excludingAttributes:(nullable NSArray<NSString *> *)excludedAttributes
384
+ {
385
+ // Trying to be smart here and only including attributes, that were asked in the query, to the resulting document.
386
+ // This may speed up the lookup significantly in some cases
387
+ NSMutableSet<Class> *includedAttributes;
388
+ if (nil == query) {
389
+ includedAttributes = [NSMutableSet setWithArray:FBElementAttribute.supportedAttributes];
390
+ if (!FBConfiguration.includeHittableInPageSource) {
391
+ // The hittable attribute is expensive to calculate for each snapshot item
392
+ // thus we only include it when requested explicitly
393
+ [includedAttributes removeObject:FBHittableAttribute.class];
394
+ }
395
+ if (!FBConfiguration.includeNativeFrameInPageSource) {
396
+ // Include nativeFrame only when requested
397
+ [includedAttributes removeObject:FBNativeFrameAttribute.class];
398
+ }
399
+ if (!FBConfiguration.includeMinMaxValueInPageSource) {
400
+ // minValue/maxValue are retrieved from private APIs and may be slow on deep trees
401
+ [includedAttributes removeObject:FBMinValueAttribute.class];
402
+ [includedAttributes removeObject:FBMaxValueAttribute.class];
403
+ }
404
+ if (!FBConfiguration.includeCustomActionsInPageSource) {
405
+ // customActions are retrieved from accessibility attributes and may be slow on deep trees
406
+ [includedAttributes removeObject:FBCustomActionsAttribute.class];
407
+ }
408
+ if (nil != excludedAttributes) {
409
+ for (NSString *excludedAttributeName in excludedAttributes) {
410
+ for (Class supportedAttribute in FBElementAttribute.supportedAttributes) {
411
+ if ([[supportedAttribute name] caseInsensitiveCompare:excludedAttributeName] == NSOrderedSame) {
412
+ [includedAttributes removeObject:supportedAttribute];
413
+ break;
414
+ }
415
+ }
416
+ }
417
+ }
418
+ } else {
419
+ includedAttributes = [self.class elementAttributesWithXPathQuery:query].mutableCopy;
420
+ }
421
+ [FBLogger logFmt:@"The following attributes were requested to be included into the XML: %@", includedAttributes];
422
+
423
+ int rc = [self writeXmlWithRootElement:root
424
+ indexPath:(elementStore != nil ? topNodeIndexPath : nil)
425
+ elementStore:elementStore
426
+ includedAttributes:includedAttributes.copy
427
+ writer:writer];
428
+ if (rc < 0) {
429
+ [FBLogger log:@"Failed to generate XML presentation of a screen element"];
430
+ return rc;
431
+ }
432
+ return 0;
433
+ }
434
+
435
+ + (xmlXPathObjectPtr)evaluate:(NSString *)xpathQuery
436
+ document:(xmlDocPtr)doc
437
+ contextNode:(nullable xmlNodePtr)contextNode
438
+ {
439
+ xmlXPathContextPtr xpathCtx = xmlXPathNewContext(doc);
440
+ if (NULL == xpathCtx) {
441
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathNewContext for XPath query \"%@\"", xpathQuery];
442
+ return NULL;
443
+ }
444
+ xpathCtx->node = NULL == contextNode ? doc->children : contextNode;
445
+
446
+ xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression((const xmlChar *)[xpathQuery UTF8String], xpathCtx);
447
+ if (NULL == xpathObj) {
448
+ xmlXPathFreeContext(xpathCtx);
449
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathEvalExpression for XPath query \"%@\"", xpathQuery];
450
+ return NULL;
451
+ }
452
+ xmlXPathFreeContext(xpathCtx);
453
+ return xpathObj;
454
+ }
455
+
456
+ + (nullable NSString *)safeXmlStringWithString:(NSString *)str
457
+ {
458
+ return [str fb_xmlSafeStringWithReplacement:@""];
459
+ }
460
+
461
+ + (int)recordElementAttributes:(xmlTextWriterPtr)writer
462
+ forElement:(id<FBXCElementSnapshot>)element
463
+ indexPath:(nullable NSString *)indexPath
464
+ includedAttributes:(nullable NSSet<Class> *)includedAttributes
465
+ {
466
+ for (Class attributeCls in FBElementAttribute.supportedAttributes) {
467
+ // include all supported attributes by default unless enumerated explicitly
468
+ if (includedAttributes && ![includedAttributes containsObject:attributeCls]) {
469
+ continue;
470
+ }
471
+ // Text-input placeholder (only for elements that support inner text)
472
+ if ((attributeCls == FBPlaceholderValueAttribute.class) &&
473
+ !FBDoesElementSupportInnerText(element.elementType)) {
474
+ continue;
475
+ }
476
+ // Only for elements that support min/max value
477
+ if ((attributeCls == FBMinValueAttribute.class || attributeCls == FBMaxValueAttribute.class) &&
478
+ !FBDoesElementSupportMinMaxValue(element.elementType)) {
479
+ continue;
480
+ }
481
+ int rc = [attributeCls recordWithWriter:writer
482
+ forElement:[FBXCElementSnapshotWrapper ensureWrapped:element]];
483
+ if (rc < 0) {
484
+ return rc;
485
+ }
486
+ }
487
+
488
+ if (nil != indexPath) {
489
+ // index path is the special case
490
+ return [FBInternalIndexAttribute recordWithWriter:writer forValue:indexPath];
491
+ }
492
+ if (element.elementType == XCUIElementTypeApplication) {
493
+ // only record process identifier and bundle identifier for the application element
494
+ int pid = [element.accessibilityElement processIdentifier];
495
+ if (pid > 0) {
496
+ int rc = [FBApplicationPidAttribute recordWithWriter:writer
497
+ forValue:[NSString stringWithFormat:@"%d", pid]];
498
+ if (rc < 0) {
499
+ return rc;
500
+ }
501
+ XCUIApplication *app = [[FBXCAXClientProxy sharedClient]
502
+ monitoredApplicationWithProcessIdentifier:pid];
503
+ NSString *bundleID = [app bundleID];
504
+ if (nil != bundleID) {
505
+ rc = [FBApplicationBundleIdAttribute recordWithWriter:writer
506
+ forValue:bundleID];
507
+ if (rc < 0) {
508
+ return rc;
509
+ }
510
+ }
511
+ }
512
+ }
513
+ return 0;
514
+ }
515
+
516
+ + (int)writeXmlWithRootElement:(id<FBXCElementSnapshot>)root
517
+ indexPath:(nullable NSString *)indexPath
518
+ elementStore:(nullable NSMutableDictionary *)elementStore
519
+ includedAttributes:(nullable NSSet<Class> *)includedAttributes
520
+ writer:(xmlTextWriterPtr)writer
521
+ {
522
+ NSAssert((indexPath == nil && elementStore == nil) || (indexPath != nil && elementStore != nil), @"Either both or none of indexPath and elementStore arguments should be equal to nil", nil);
523
+
524
+ NSArray<id<FBXCElementSnapshot>> *children = root.children;
525
+
526
+ if (elementStore != nil && indexPath != nil && [indexPath isEqualToString:topNodeIndexPath]) {
527
+ [elementStore setObject:root forKey:topNodeIndexPath];
528
+ }
529
+
530
+ FBXCElementSnapshotWrapper *wrappedSnapshot = [FBXCElementSnapshotWrapper ensureWrapped:root];
531
+ int rc = xmlTextWriterStartElement(writer, (xmlChar *)[wrappedSnapshot.wdType UTF8String]);
532
+ if (rc < 0) {
533
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterStartElement for the tag value '%@'. Error code: %d", wrappedSnapshot.wdType, rc];
534
+ return rc;
535
+ }
536
+
537
+ rc = [self recordElementAttributes:writer
538
+ forElement:root
539
+ indexPath:indexPath
540
+ includedAttributes:includedAttributes];
541
+ if (rc < 0) {
542
+ return rc;
543
+ }
544
+
545
+ for (NSUInteger i = 0; i < [children count]; i++) {
546
+ @autoreleasepool {
547
+ id<FBXCElementSnapshot> childSnapshot = [children objectAtIndex:i];
548
+ NSString *newIndexPath = (indexPath != nil) ? [indexPath stringByAppendingFormat:@",%lu", (unsigned long)i] : nil;
549
+ if (elementStore != nil && newIndexPath != nil) {
550
+ [elementStore setObject:childSnapshot forKey:(id)newIndexPath];
551
+ }
552
+ rc = [self writeXmlWithRootElement:[FBXCElementSnapshotWrapper ensureWrapped:childSnapshot]
553
+ indexPath:newIndexPath
554
+ elementStore:elementStore
555
+ includedAttributes:includedAttributes
556
+ writer:writer];
557
+ if (rc < 0) {
558
+ return rc;
559
+ }
560
+ }
561
+ }
562
+
563
+ rc = xmlTextWriterEndElement(writer);
564
+ if (rc < 0) {
565
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterEndElement. Error code: %d", rc];
566
+ return rc;
567
+ }
568
+ return 0;
569
+ }
570
+
571
+ + (id<FBXCElementSnapshot>)snapshotWithRoot:(id<FBElement>)root
572
+ useNative:(BOOL)useNative
573
+ {
574
+ if (![root isKindOfClass:XCUIElement.class]) {
575
+ return (id<FBXCElementSnapshot>)root;
576
+ }
577
+
578
+ // https://github.com/appium/appium-xcuitest-driver/pull/2565
579
+ if (useNative) {
580
+ return [(XCUIElement *)root fb_nativeSnapshot];
581
+ }
582
+ // https://github.com/appium/WebDriverAgent/issues/1085
583
+ return [root isKindOfClass:XCUIApplication.class] && !FBConfiguration.enforceCustomSnapshots
584
+ ? [(XCUIElement *)root fb_standardSnapshot]
585
+ : [(XCUIElement *)root fb_customSnapshot];
586
+ }
587
+
588
+ + (void)waitUntilStableWithElement:(id<FBElement>)root
589
+ {
590
+ if ([root isKindOfClass:XCUIElement.class]) {
591
+ // If the app is not idle state while we retrieve the visiblity state
592
+ // then the snapshot retrieval operation might freeze and time out
593
+ [[(XCUIElement *)root application] fb_waitUntilStableWithTimeout:FBConfiguration.animationCoolOffTimeout];
594
+ }
595
+ }
596
+
597
+ @end
598
+
599
+
600
+ static NSString *const FBAbstractMethodInvocationException = @"AbstractMethodInvocationException";
601
+
602
+ @implementation FBElementAttribute
603
+
604
+ - (instancetype)initWithElement:(id<FBElement>)element
605
+ {
606
+ self = [super init];
607
+ if (self) {
608
+ _element = element;
609
+ }
610
+ return self;
611
+ }
612
+
613
+ + (NSString *)name
614
+ {
615
+ NSString *errMsg = [NSString stringWithFormat:@"The abstract method +(NSString *)name is expected to be overriden by %@", NSStringFromClass(self.class)];
616
+ @throw [NSException exceptionWithName:FBAbstractMethodInvocationException reason:errMsg userInfo:nil];
617
+ }
618
+
619
+ + (NSString *)valueForElement:(id<FBElement>)element
620
+ {
621
+ NSString *errMsg = [NSString stringWithFormat:@"The abstract method -(NSString *)value is expected to be overriden by %@", NSStringFromClass(self.class)];
622
+ @throw [NSException exceptionWithName:FBAbstractMethodInvocationException reason:errMsg userInfo:nil];
623
+ }
624
+
625
+ + (int)recordWithWriter:(xmlTextWriterPtr)writer forElement:(id<FBElement>)element
626
+ {
627
+ NSString *value = [self valueForElement:element];
628
+ return [self recordWithWriter:writer forValue:value];
629
+ }
630
+
631
+ + (int)recordWithWriter:(xmlTextWriterPtr)writer forValue:(nullable NSString *)value
632
+ {
633
+ if (nil == value) {
634
+ // Skip the attribute if the value equals to nil
635
+ return 0;
636
+ }
637
+ int rc = xmlTextWriterWriteAttribute(writer,
638
+ (xmlChar *)[[FBXPath safeXmlStringWithString:[self name]] UTF8String],
639
+ (xmlChar *)[[FBXPath safeXmlStringWithString:value] UTF8String]);
640
+ if (rc < 0) {
641
+ [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterWriteAttribute(%@='%@'). Error code: %d", [self name], value, rc];
642
+ }
643
+ return rc;
644
+ }
645
+
646
+ + (NSArray<Class> *)supportedAttributes
647
+ {
648
+ // The list of attributes to be written for each XML node
649
+ // The enumeration order does matter here
650
+ return @[FBTypeAttribute.class,
651
+ FBValueAttribute.class,
652
+ FBNameAttribute.class,
653
+ FBLabelAttribute.class,
654
+ FBEnabledAttribute.class,
655
+ FBVisibleAttribute.class,
656
+ FBAccessibleAttribute.class,
657
+ #if TARGET_OS_TV
658
+ FBFocusedAttribute.class,
659
+ #endif
660
+ FBXAttribute.class,
661
+ FBYAttribute.class,
662
+ FBWidthAttribute.class,
663
+ FBHeightAttribute.class,
664
+ FBIndexAttribute.class,
665
+ FBHittableAttribute.class,
666
+ FBPlaceholderValueAttribute.class,
667
+ FBTraitsAttribute.class,
668
+ FBNativeFrameAttribute.class,
669
+ FBMinValueAttribute.class,
670
+ FBMaxValueAttribute.class,
671
+ FBCustomActionsAttribute.class,
672
+ ];
673
+ }
674
+
675
+ @end
676
+
677
+ @implementation FBTypeAttribute
678
+
679
+ + (NSString *)name
680
+ {
681
+ return @"type";
682
+ }
683
+
684
+ + (NSString *)valueForElement:(id<FBElement>)element
685
+ {
686
+ return element.wdType;
687
+ }
688
+
689
+ @end
690
+
691
+ @implementation FBValueAttribute
692
+
693
+ + (NSString *)name
694
+ {
695
+ return @"value";
696
+ }
697
+
698
+ + (NSString *)valueForElement:(id<FBElement>)element
699
+ {
700
+ id idValue = element.wdValue;
701
+ if ([idValue isKindOfClass:[NSValue class]]) {
702
+ return [idValue stringValue];
703
+ } else if ([idValue isKindOfClass:[NSString class]]) {
704
+ return idValue;
705
+ }
706
+ return [idValue description];
707
+ }
708
+
709
+ @end
710
+
711
+ @implementation FBNameAttribute
712
+
713
+ + (NSString *)name
714
+ {
715
+ return @"name";
716
+ }
717
+
718
+ + (NSString *)valueForElement:(id<FBElement>)element
719
+ {
720
+ return element.wdName;
721
+ }
722
+
723
+ @end
724
+
725
+ @implementation FBLabelAttribute
726
+
727
+ + (NSString *)name
728
+ {
729
+ return @"label";
730
+ }
731
+
732
+ + (NSString *)valueForElement:(id<FBElement>)element
733
+ {
734
+ return element.wdLabel;
735
+ }
736
+
737
+ @end
738
+
739
+ @implementation FBEnabledAttribute
740
+
741
+ + (NSString *)name
742
+ {
743
+ return @"enabled";
744
+ }
745
+
746
+ + (NSString *)valueForElement:(id<FBElement>)element
747
+ {
748
+ return FBBoolToString(element.wdEnabled);
749
+ }
750
+
751
+ @end
752
+
753
+ @implementation FBVisibleAttribute
754
+
755
+ + (NSString *)name
756
+ {
757
+ return @"visible";
758
+ }
759
+
760
+ + (NSString *)valueForElement:(id<FBElement>)element
761
+ {
762
+ return FBBoolToString(element.wdVisible);
763
+ }
764
+
765
+ @end
766
+
767
+ @implementation FBAccessibleAttribute
768
+
769
+ + (NSString *)name
770
+ {
771
+ return @"accessible";
772
+ }
773
+
774
+ + (NSString *)valueForElement:(id<FBElement>)element
775
+ {
776
+ return FBBoolToString(element.wdAccessible);
777
+ }
778
+
779
+ @end
780
+
781
+ #if TARGET_OS_TV
782
+
783
+ @implementation FBFocusedAttribute
784
+
785
+ + (NSString *)name
786
+ {
787
+ return @"focused";
788
+ }
789
+
790
+ + (NSString *)valueForElement:(id<FBElement>)element
791
+ {
792
+ return FBBoolToString(element.wdFocused);
793
+ }
794
+
795
+ @end
796
+
797
+ #endif
798
+
799
+ @implementation FBDimensionAttribute
800
+
801
+ + (NSString *)valueForElement:(id<FBElement>)element
802
+ {
803
+ return [NSString stringWithFormat:@"%@", [element.wdRect objectForKey:[self name]]];
804
+ }
805
+
806
+ @end
807
+
808
+ @implementation FBXAttribute
809
+
810
+ + (NSString *)name
811
+ {
812
+ return @"x";
813
+ }
814
+
815
+ @end
816
+
817
+ @implementation FBYAttribute
818
+
819
+ + (NSString *)name
820
+ {
821
+ return @"y";
822
+ }
823
+
824
+ @end
825
+
826
+ @implementation FBWidthAttribute
827
+
828
+ + (NSString *)name
829
+ {
830
+ return @"width";
831
+ }
832
+
833
+ @end
834
+
835
+ @implementation FBHeightAttribute
836
+
837
+ + (NSString *)name
838
+ {
839
+ return @"height";
840
+ }
841
+
842
+ @end
843
+
844
+ @implementation FBIndexAttribute
845
+
846
+ + (NSString *)name
847
+ {
848
+ return @"index";
849
+ }
850
+
851
+ + (NSString *)valueForElement:(id<FBElement>)element
852
+ {
853
+ return [NSString stringWithFormat:@"%lu", element.wdIndex];
854
+ }
855
+
856
+ @end
857
+
858
+ @implementation FBHittableAttribute
859
+
860
+ + (NSString *)name
861
+ {
862
+ return @"hittable";
863
+ }
864
+
865
+ + (NSString *)valueForElement:(id<FBElement>)element
866
+ {
867
+ return FBBoolToString(element.wdHittable);
868
+ }
869
+
870
+ @end
871
+
872
+ @implementation FBInternalIndexAttribute
873
+
874
+ + (NSString *)name
875
+ {
876
+ return kXMLIndexPathKey;
877
+ }
878
+
879
+ @end
880
+
881
+ @implementation FBApplicationBundleIdAttribute : FBElementAttribute
882
+
883
+ + (NSString *)name
884
+ {
885
+ return @"bundleId";
886
+ }
887
+
888
+ @end
889
+
890
+ @implementation FBApplicationPidAttribute : FBElementAttribute
891
+
892
+ + (NSString *)name
893
+ {
894
+ return @"processId";
895
+ }
896
+
897
+ @end
898
+
899
+ @implementation FBPlaceholderValueAttribute
900
+
901
+ + (NSString *)name
902
+ {
903
+ return @"placeholderValue";
904
+ }
905
+
906
+ + (NSString *)valueForElement:(id<FBElement>)element
907
+ {
908
+ return element.wdPlaceholderValue;
909
+ }
910
+ @end
911
+
912
+ @implementation FBNativeFrameAttribute
913
+
914
+ + (NSString *)name
915
+ {
916
+ return @"nativeFrame";
917
+ }
918
+
919
+ + (NSString *)valueForElement:(id<FBElement>)element
920
+ {
921
+ return NSStringFromCGRect(element.wdNativeFrame);
922
+ }
923
+ @end
924
+
925
+ @implementation FBTraitsAttribute
926
+
927
+ + (NSString *)name
928
+ {
929
+ return @"traits";
930
+ }
931
+
932
+ + (NSString *)valueForElement:(id<FBElement>)element
933
+ {
934
+ return element.wdTraits;
935
+ }
936
+
937
+ @end
938
+
939
+ @implementation FBMinValueAttribute
940
+
941
+ + (NSString *)name
942
+ {
943
+ return @"minValue";
944
+ }
945
+
946
+ + (NSString *)valueForElement:(id<FBElement>)element
947
+ {
948
+ return [element.wdMinValue stringValue];
949
+ }
950
+
951
+ @end
952
+
953
+ @implementation FBMaxValueAttribute
954
+
955
+ + (NSString *)name
956
+ {
957
+ return @"maxValue";
958
+ }
959
+
960
+ + (NSString *)valueForElement:(id<FBElement>)element
961
+ {
962
+ return [element.wdMaxValue stringValue];
963
+ }
964
+
965
+ @end
966
+
967
+ @implementation FBCustomActionsAttribute
968
+
969
+ + (NSString *)name
970
+ {
971
+ return @"customActions";
972
+ }
973
+
974
+ + (NSString *)valueForElement:(id<FBElement>)element
975
+ {
976
+ return element.wdCustomActions;
977
+ }
978
+
979
+ @end