appium-mcp 0.0.1 → 1.1.4

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 (585) hide show
  1. package/.github/workflows/ci.yml +37 -0
  2. package/.github/workflows/pr-title.yml +15 -0
  3. package/.github/workflows/publish.yml +31 -0
  4. package/.gitmodules +9 -0
  5. package/.prettierignore +29 -0
  6. package/.prettierrc +10 -0
  7. package/.releaserc +37 -0
  8. package/CHANGELOG.md +37 -0
  9. package/LICENSE +21 -0
  10. package/README.md +153 -0
  11. package/dist/devicemanager/adb-manager.d.ts +71 -0
  12. package/dist/devicemanager/adb-manager.js +140 -0
  13. package/dist/devicemanager/adb-manager.js.map +1 -0
  14. package/dist/devicemanager/ios-manager.d.ts +58 -0
  15. package/dist/devicemanager/ios-manager.js +122 -0
  16. package/dist/devicemanager/ios-manager.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +40 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/locators/element-filter.d.ts +13 -0
  21. package/dist/locators/element-filter.js +79 -0
  22. package/dist/locators/element-filter.js.map +1 -0
  23. package/dist/locators/generate-all-locators.d.ts +21 -0
  24. package/dist/locators/generate-all-locators.js +72 -0
  25. package/dist/locators/generate-all-locators.js.map +1 -0
  26. package/dist/locators/locator-generation.d.ts +36 -0
  27. package/dist/locators/locator-generation.js +501 -0
  28. package/dist/locators/locator-generation.js.map +1 -0
  29. package/dist/locators/logger.d.ts +5 -0
  30. package/dist/locators/logger.js +9 -0
  31. package/dist/locators/logger.js.map +1 -0
  32. package/dist/locators/source-parsing.d.ts +43 -0
  33. package/dist/locators/source-parsing.js +100 -0
  34. package/dist/locators/source-parsing.js.map +1 -0
  35. package/dist/resources/index.d.ts +1 -0
  36. package/dist/resources/index.js +7 -0
  37. package/dist/resources/index.js.map +1 -0
  38. package/dist/resources/java/template.d.ts +4 -0
  39. package/dist/resources/java/template.js +82 -0
  40. package/dist/resources/java/template.js.map +1 -0
  41. package/dist/schema.d.ts +2 -0
  42. package/dist/schema.js +5 -0
  43. package/dist/schema.js.map +1 -0
  44. package/dist/scripts/simple-index-documentation.d.ts +20 -0
  45. package/dist/scripts/simple-index-documentation.js +77 -0
  46. package/dist/scripts/simple-index-documentation.js.map +1 -0
  47. package/dist/scripts/simple-query-documentation.d.ts +12 -0
  48. package/dist/scripts/simple-query-documentation.js +52 -0
  49. package/dist/scripts/simple-query-documentation.js.map +1 -0
  50. package/dist/server.d.ts +3 -0
  51. package/dist/server.js +37 -0
  52. package/dist/server.js.map +1 -0
  53. package/dist/tests/__mocks__/@appium/support.d.ts +21 -0
  54. package/dist/tests/__mocks__/@appium/support.js +30 -0
  55. package/dist/tests/__mocks__/@appium/support.js.map +1 -0
  56. package/dist/tests/generate-all-locators.test.d.ts +1 -0
  57. package/dist/tests/generate-all-locators.test.js +140 -0
  58. package/dist/tests/generate-all-locators.test.js.map +1 -0
  59. package/dist/tests/test-setup-wda.d.ts +1 -0
  60. package/dist/tests/test-setup-wda.js +202 -0
  61. package/dist/tests/test-setup-wda.js.map +1 -0
  62. package/dist/tools/answer-appium.d.ts +1 -0
  63. package/dist/tools/answer-appium.js +71 -0
  64. package/dist/tools/answer-appium.js.map +1 -0
  65. package/dist/tools/boot-simulator.d.ts +1 -0
  66. package/dist/tools/boot-simulator.js +71 -0
  67. package/dist/tools/boot-simulator.js.map +1 -0
  68. package/dist/tools/create-session.d.ts +1 -0
  69. package/dist/tools/create-session.js +192 -0
  70. package/dist/tools/create-session.js.map +1 -0
  71. package/dist/tools/delete-session.d.ts +1 -0
  72. package/dist/tools/delete-session.js +47 -0
  73. package/dist/tools/delete-session.js.map +1 -0
  74. package/dist/tools/documentation/index.d.ts +28 -0
  75. package/dist/tools/documentation/index.js +63 -0
  76. package/dist/tools/documentation/index.js.map +1 -0
  77. package/dist/tools/documentation/reasoning-rag.d.ts +88 -0
  78. package/dist/tools/documentation/reasoning-rag.js +281 -0
  79. package/dist/tools/documentation/reasoning-rag.js.map +1 -0
  80. package/dist/tools/documentation/sentence-transformers-embeddings.d.ts +34 -0
  81. package/dist/tools/documentation/sentence-transformers-embeddings.js +111 -0
  82. package/dist/tools/documentation/sentence-transformers-embeddings.js.map +1 -0
  83. package/dist/tools/documentation/simple-pdf-indexer.d.ts +45 -0
  84. package/dist/tools/documentation/simple-pdf-indexer.js +402 -0
  85. package/dist/tools/documentation/simple-pdf-indexer.js.map +1 -0
  86. package/dist/tools/documentation/uploads/documents.json +1 -0
  87. package/dist/tools/generate-tests.d.ts +2 -0
  88. package/dist/tools/generate-tests.js +46 -0
  89. package/dist/tools/generate-tests.js.map +1 -0
  90. package/dist/tools/index.d.ts +16 -0
  91. package/dist/tools/index.js +112 -0
  92. package/dist/tools/index.js.map +1 -0
  93. package/dist/tools/install-wda.d.ts +1 -0
  94. package/dist/tools/install-wda.js +219 -0
  95. package/dist/tools/install-wda.js.map +1 -0
  96. package/dist/tools/interactions/activate-app.d.ts +2 -0
  97. package/dist/tools/interactions/activate-app.js +44 -0
  98. package/dist/tools/interactions/activate-app.js.map +1 -0
  99. package/dist/tools/interactions/click.d.ts +2 -0
  100. package/dist/tools/interactions/click.js +45 -0
  101. package/dist/tools/interactions/click.js.map +1 -0
  102. package/dist/tools/interactions/double-tap.d.ts +2 -0
  103. package/dist/tools/interactions/double-tap.js +81 -0
  104. package/dist/tools/interactions/double-tap.js.map +1 -0
  105. package/dist/tools/interactions/find.d.ts +13 -0
  106. package/dist/tools/interactions/find.js +55 -0
  107. package/dist/tools/interactions/find.js.map +1 -0
  108. package/dist/tools/interactions/get-text.d.ts +2 -0
  109. package/dist/tools/interactions/get-text.js +45 -0
  110. package/dist/tools/interactions/get-text.js.map +1 -0
  111. package/dist/tools/interactions/install-app.d.ts +2 -0
  112. package/dist/tools/interactions/install-app.js +43 -0
  113. package/dist/tools/interactions/install-app.js.map +1 -0
  114. package/dist/tools/interactions/list-apps.d.ts +2 -0
  115. package/dist/tools/interactions/list-apps.js +59 -0
  116. package/dist/tools/interactions/list-apps.js.map +1 -0
  117. package/dist/tools/interactions/screenshot.d.ts +2 -0
  118. package/dist/tools/interactions/screenshot.js +49 -0
  119. package/dist/tools/interactions/screenshot.js.map +1 -0
  120. package/dist/tools/interactions/set-value.d.ts +2 -0
  121. package/dist/tools/interactions/set-value.js +46 -0
  122. package/dist/tools/interactions/set-value.js.map +1 -0
  123. package/dist/tools/interactions/terminate-app.d.ts +2 -0
  124. package/dist/tools/interactions/terminate-app.js +45 -0
  125. package/dist/tools/interactions/terminate-app.js.map +1 -0
  126. package/dist/tools/interactions/uninstall-app.d.ts +2 -0
  127. package/dist/tools/interactions/uninstall-app.js +45 -0
  128. package/dist/tools/interactions/uninstall-app.js.map +1 -0
  129. package/dist/tools/locators.d.ts +1 -0
  130. package/dist/tools/locators.js +71 -0
  131. package/dist/tools/locators.js.map +1 -0
  132. package/dist/tools/scroll-to-element.d.ts +1 -0
  133. package/dist/tools/scroll-to-element.js +155 -0
  134. package/dist/tools/scroll-to-element.js.map +1 -0
  135. package/dist/tools/scroll.d.ts +1 -0
  136. package/dist/tools/scroll.js +91 -0
  137. package/dist/tools/scroll.js.map +1 -0
  138. package/dist/tools/select-device.d.ts +5 -0
  139. package/dist/tools/select-device.js +222 -0
  140. package/dist/tools/select-device.js.map +1 -0
  141. package/dist/tools/select-platform.d.ts +1 -0
  142. package/dist/tools/select-platform.js +195 -0
  143. package/dist/tools/select-platform.js.map +1 -0
  144. package/dist/tools/session-store.d.ts +7 -0
  145. package/dist/tools/session-store.js +64 -0
  146. package/dist/tools/session-store.js.map +1 -0
  147. package/dist/tools/setup-wda.d.ts +1 -0
  148. package/dist/tools/setup-wda.js +177 -0
  149. package/dist/tools/setup-wda.js.map +1 -0
  150. package/docs/CONTRIBUTING.md +424 -0
  151. package/eslint.config.js +49 -0
  152. package/examples/android-gmail.md +7 -0
  153. package/examples/android-todo-app.md +9 -0
  154. package/jest.config.js +23 -0
  155. package/package.json +71 -6
  156. package/scripts/setup-submodules-sparse.sh +53 -0
  157. package/scripts/update-submodules.sh +14 -0
  158. package/src/devicemanager/adb-manager.ts +164 -0
  159. package/src/devicemanager/ios-manager.ts +145 -0
  160. package/src/index.ts +47 -0
  161. package/src/locators/element-filter.ts +134 -0
  162. package/src/locators/generate-all-locators.ts +149 -0
  163. package/src/locators/locator-generation.ts +657 -0
  164. package/src/locators/logger.ts +11 -0
  165. package/src/locators/source-parsing.ts +149 -0
  166. package/src/resources/caps.json +697 -0
  167. package/src/resources/index.ts +7 -0
  168. package/src/resources/java/template.ts +83 -0
  169. package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  170. package/src/resources/submodules/appium/CHANGELOG.md +45 -0
  171. package/src/resources/submodules/appium/CONDUCT.md +48 -0
  172. package/src/resources/submodules/appium/GOVERNANCE.md +185 -0
  173. package/src/resources/submodules/appium/IDEAS.md +16 -0
  174. package/src/resources/submodules/appium/README.md +221 -0
  175. package/src/resources/submodules/appium/ROADMAP.md +30 -0
  176. package/src/resources/submodules/appium/SPONSORS.md +3 -0
  177. package/src/resources/submodules/appium/docs/README.md +6 -0
  178. package/src/resources/submodules/appium/docs/payout.md +35 -0
  179. package/src/resources/submodules/appium/packages/appium/CHANGELOG.md +1437 -0
  180. package/src/resources/submodules/appium/packages/appium/README.md +221 -0
  181. package/src/resources/submodules/appium/packages/appium/docs/en/blog/index.md +2 -0
  182. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-appiumconf2024.md +45 -0
  183. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  184. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  185. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-strategic-partner.md +42 -0
  186. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  187. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sponsorship-program.md +48 -0
  188. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/appium3.md +40 -0
  189. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/hello-world.md +15 -0
  190. package/src/resources/submodules/appium/packages/appium/docs/en/contributing/index.md +150 -0
  191. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-docs.md +86 -0
  192. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-doctor-checks.md +141 -0
  193. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-drivers.md +860 -0
  194. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +514 -0
  195. package/src/resources/submodules/appium/packages/appium/docs/en/developing/config-system.md +451 -0
  196. package/src/resources/submodules/appium/packages/appium/docs/en/developing/index.md +18 -0
  197. package/src/resources/submodules/appium/packages/appium/docs/en/developing/sensitive.md +49 -0
  198. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/clients.md +132 -0
  199. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/drivers.md +207 -0
  200. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/index.md +45 -0
  201. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/plugins.md +138 -0
  202. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/tools.md +83 -0
  203. package/src/resources/submodules/appium/packages/appium/docs/en/guides/branch-testing.md +57 -0
  204. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caching.md +76 -0
  205. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caps.md +275 -0
  206. package/src/resources/submodules/appium/packages/appium/docs/en/guides/config.md +98 -0
  207. package/src/resources/submodules/appium/packages/appium/docs/en/guides/context.md +44 -0
  208. package/src/resources/submodules/appium/packages/appium/docs/en/guides/event-timing.md +73 -0
  209. package/src/resources/submodules/appium/packages/appium/docs/en/guides/execute-methods.md +122 -0
  210. package/src/resources/submodules/appium/packages/appium/docs/en/guides/grid.md +166 -0
  211. package/src/resources/submodules/appium/packages/appium/docs/en/guides/headers.md +17 -0
  212. package/src/resources/submodules/appium/packages/appium/docs/en/guides/log-filters.md +86 -0
  213. package/src/resources/submodules/appium/packages/appium/docs/en/guides/managing-exts.md +87 -0
  214. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-1-to-2.md +368 -0
  215. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-2-to-3.md +464 -0
  216. package/src/resources/submodules/appium/packages/appium/docs/en/guides/security.md +89 -0
  217. package/src/resources/submodules/appium/packages/appium/docs/en/guides/settings.md +68 -0
  218. package/src/resources/submodules/appium/packages/appium/docs/en/guides/tls.md +42 -0
  219. package/src/resources/submodules/appium/packages/appium/docs/en/index.md +59 -0
  220. package/src/resources/submodules/appium/packages/appium/docs/en/intro/appium.md +202 -0
  221. package/src/resources/submodules/appium/packages/appium/docs/en/intro/clients.md +127 -0
  222. package/src/resources/submodules/appium/packages/appium/docs/en/intro/drivers.md +188 -0
  223. package/src/resources/submodules/appium/packages/appium/docs/en/intro/history.md +196 -0
  224. package/src/resources/submodules/appium/packages/appium/docs/en/intro/index.md +39 -0
  225. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/index.md +29 -0
  226. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/install.md +50 -0
  227. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/next-steps.md +23 -0
  228. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/requirements.md +29 -0
  229. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-dotnet.md +105 -0
  230. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-java.md +23 -0
  231. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-js.md +75 -0
  232. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-py.md +60 -0
  233. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-rb.md +83 -0
  234. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/uiauto2-driver.md +144 -0
  235. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/appium.md +394 -0
  236. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/bidi.md +70 -0
  237. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/index.md +30 -0
  238. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/jsonwp.md +214 -0
  239. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/mjsonwp.md +151 -0
  240. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/others.md +671 -0
  241. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/plugins.md +289 -0
  242. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/webdriver.md +1114 -0
  243. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/env-vars.md +31 -0
  244. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/extensions.md +239 -0
  245. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +35 -0
  246. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +76 -0
  247. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/setup.md +76 -0
  248. package/src/resources/submodules/appium/packages/appium/docs/en/reference/index.md +25 -0
  249. package/src/resources/submodules/appium/packages/appium/docs/en/resources/index.md +28 -0
  250. package/src/resources/submodules/appium/packages/appium/docs/en/sponsors/index.md +64 -0
  251. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/index.md +2 -0
  252. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-appiumconf2024.md +45 -0
  253. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  254. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  255. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
  256. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  257. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sponsorship-program.md +48 -0
  258. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/appium3.md +40 -0
  259. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/hello-world.md +15 -0
  260. package/src/resources/submodules/appium/packages/appium/docs/ja/contributing/index.md +158 -0
  261. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-docs.md +86 -0
  262. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-doctor-checks.md +141 -0
  263. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-drivers.md +866 -0
  264. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +520 -0
  265. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/config-system.md +468 -0
  266. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/index.md +18 -0
  267. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/sensitive.md +49 -0
  268. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/clients.md +143 -0
  269. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/drivers.md +219 -0
  270. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/index.md +45 -0
  271. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/plugins.md +140 -0
  272. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/tools.md +87 -0
  273. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/branch-testing.md +57 -0
  274. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caching.md +78 -0
  275. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caps.md +259 -0
  276. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/config.md +102 -0
  277. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/context.md +44 -0
  278. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/event-timing.md +75 -0
  279. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/execute-methods.md +142 -0
  280. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/grid.md +166 -0
  281. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/headers.md +17 -0
  282. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/log-filters.md +86 -0
  283. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/managing-exts.md +89 -0
  284. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-1-to-2.md +402 -0
  285. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-2-to-3.md +458 -0
  286. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/security.md +89 -0
  287. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/settings.md +70 -0
  288. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/tls.md +43 -0
  289. package/src/resources/submodules/appium/packages/appium/docs/ja/index.md +55 -0
  290. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/appium.md +191 -0
  291. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/clients.md +139 -0
  292. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/drivers.md +188 -0
  293. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/history.md +196 -0
  294. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/index.md +39 -0
  295. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/index.md +23 -0
  296. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/install.md +47 -0
  297. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/next-steps.md +19 -0
  298. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/requirements.md +29 -0
  299. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-dotnet.md +107 -0
  300. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-java.md +23 -0
  301. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-js.md +77 -0
  302. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-py.md +63 -0
  303. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-rb.md +85 -0
  304. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/uiauto2-driver.md +148 -0
  305. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/appium.md +395 -0
  306. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/bidi.md +71 -0
  307. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/index.md +30 -0
  308. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/jsonwp.md +215 -0
  309. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/mjsonwp.md +152 -0
  310. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/others.md +672 -0
  311. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/plugins.md +291 -0
  312. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/webdriver.md +1114 -0
  313. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/env-vars.md +31 -0
  314. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/extensions.md +240 -0
  315. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +35 -0
  316. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +76 -0
  317. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/setup.md +78 -0
  318. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/index.md +25 -0
  319. package/src/resources/submodules/appium/packages/appium/docs/ja/resources/index.md +28 -0
  320. package/src/resources/submodules/appium/packages/appium/docs/ja/sponsors/index.md +61 -0
  321. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz-white.png +0 -0
  322. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png +0 -0
  323. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-white.png +0 -0
  324. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo.png +0 -0
  325. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png +0 -0
  326. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png +0 -0
  327. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-dark.png +0 -0
  328. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-light.png +0 -0
  329. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png +0 -0
  330. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/index.md +2 -0
  331. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-appiumconf2024.md +45 -0
  332. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  333. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  334. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
  335. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  336. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sponsorship-program.md +48 -0
  337. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/appium3.md +40 -0
  338. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/hello-world.md +15 -0
  339. package/src/resources/submodules/appium/packages/appium/docs/zh/contributing/index.md +132 -0
  340. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-docs.md +86 -0
  341. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-doctor-checks.md +141 -0
  342. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-drivers.md +866 -0
  343. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +520 -0
  344. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/config-system.md +468 -0
  345. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/index.md +18 -0
  346. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/sensitive.md +49 -0
  347. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/clients.md +143 -0
  348. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/drivers.md +219 -0
  349. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/index.md +45 -0
  350. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/plugins.md +140 -0
  351. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/tools.md +87 -0
  352. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/branch-testing.md +57 -0
  353. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caching.md +78 -0
  354. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caps.md +284 -0
  355. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/config.md +102 -0
  356. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/context.md +44 -0
  357. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/event-timing.md +75 -0
  358. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/execute-methods.md +142 -0
  359. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/grid.md +166 -0
  360. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/headers.md +17 -0
  361. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/log-filters.md +86 -0
  362. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/managing-exts.md +89 -0
  363. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-1-to-2.md +410 -0
  364. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-2-to-3.md +459 -0
  365. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/security.md +89 -0
  366. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/settings.md +70 -0
  367. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/tls.md +43 -0
  368. package/src/resources/submodules/appium/packages/appium/docs/zh/index.md +54 -0
  369. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/appium.md +200 -0
  370. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +139 -0
  371. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +188 -0
  372. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +196 -0
  373. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +39 -0
  374. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/index.md +23 -0
  375. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/install.md +47 -0
  376. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/next-steps.md +19 -0
  377. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/requirements.md +21 -0
  378. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-dotnet.md +99 -0
  379. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-java.md +20 -0
  380. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-js.md +62 -0
  381. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-py.md +57 -0
  382. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-rb.md +80 -0
  383. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/uiauto2-driver.md +148 -0
  384. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/appium.md +395 -0
  385. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/bidi.md +71 -0
  386. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/index.md +30 -0
  387. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/jsonwp.md +215 -0
  388. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/mjsonwp.md +152 -0
  389. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/others.md +672 -0
  390. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/plugins.md +291 -0
  391. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/webdriver.md +1114 -0
  392. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/env-vars.md +31 -0
  393. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/extensions.md +240 -0
  394. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +35 -0
  395. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +76 -0
  396. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/setup.md +78 -0
  397. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/index.md +25 -0
  398. package/src/resources/submodules/appium/packages/appium/docs/zh/resources/index.md +28 -0
  399. package/src/resources/submodules/appium/packages/appium/docs/zh/sponsors/index.md +61 -0
  400. package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +30 -0
  401. package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +1131 -0
  402. package/src/resources/submodules/appium/packages/base-driver/README.md +15 -0
  403. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/errors.md +82 -0
  404. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/protocol-methods.md +182 -0
  405. package/src/resources/submodules/appium/packages/base-driver/static/appium.png +0 -0
  406. package/src/resources/submodules/appium/packages/base-plugin/CHANGELOG.md +672 -0
  407. package/src/resources/submodules/appium/packages/base-plugin/README.md +15 -0
  408. package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +948 -0
  409. package/src/resources/submodules/appium/packages/docutils/README.md +27 -0
  410. package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +717 -0
  411. package/src/resources/submodules/appium/packages/driver-test-support/README.md +112 -0
  412. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +168 -0
  413. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +33 -0
  414. package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +603 -0
  415. package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +42 -0
  416. package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +545 -0
  417. package/src/resources/submodules/appium/packages/fake-driver/README.md +7 -0
  418. package/src/resources/submodules/appium/packages/fake-driver/lib/screen.png +0 -0
  419. package/src/resources/submodules/appium/packages/fake-plugin/CHANGELOG.md +683 -0
  420. package/src/resources/submodules/appium/packages/fake-plugin/README.md +7 -0
  421. package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +602 -0
  422. package/src/resources/submodules/appium/packages/images-plugin/README.md +27 -0
  423. package/src/resources/submodules/appium/packages/images-plugin/docs/find-by-image.md +65 -0
  424. package/src/resources/submodules/appium/packages/images-plugin/docs/image-comparison.md +203 -0
  425. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/appstore.png +0 -0
  426. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img1.png +0 -0
  427. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2.png +0 -0
  428. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2_part.png +0 -0
  429. package/src/resources/submodules/appium/packages/logger/CHANGELOG.md +162 -0
  430. package/src/resources/submodules/appium/packages/logger/README.md +31 -0
  431. package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +384 -0
  432. package/src/resources/submodules/appium/packages/opencv/README.md +68 -0
  433. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/appium-diagram.jpg +0 -0
  434. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc1.png +0 -0
  435. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc2.png +0 -0
  436. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc_rotated.png +0 -0
  437. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/findwaldo.jpg +0 -0
  438. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/number5.png +0 -0
  439. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/waldo.jpg +0 -0
  440. package/src/resources/submodules/appium/packages/plugin-test-support/CHANGELOG.md +539 -0
  441. package/src/resources/submodules/appium/packages/plugin-test-support/README.md +49 -0
  442. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/CHANGELOG.md +154 -0
  443. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +35 -0
  444. package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +271 -0
  445. package/src/resources/submodules/appium/packages/schema/README.md +50 -0
  446. package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +73 -0
  447. package/src/resources/submodules/appium/packages/storage-plugin/README.md +83 -0
  448. package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +94 -0
  449. package/src/resources/submodules/appium/packages/strongbox/README.md +96 -0
  450. package/src/resources/submodules/appium/packages/support/CHANGELOG.md +1054 -0
  451. package/src/resources/submodules/appium/packages/support/README.md +161 -0
  452. package/src/resources/submodules/appium/packages/test-support/CHANGELOG.md +712 -0
  453. package/src/resources/submodules/appium/packages/test-support/README.md +61 -0
  454. package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +131 -0
  455. package/src/resources/submodules/appium/packages/tsconfig/README.md +19 -0
  456. package/src/resources/submodules/appium/packages/types/CHANGELOG.md +793 -0
  457. package/src/resources/submodules/appium/packages/types/README.md +21 -0
  458. package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +435 -0
  459. package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +53 -0
  460. package/src/resources/submodules/appium/renovate/README.md +63 -0
  461. package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +1204 -0
  462. package/src/resources/submodules/appium-uiautomator2-driver/README.md +2077 -0
  463. package/src/resources/submodules/appium-uiautomator2-driver/docs/actions.md +72 -0
  464. package/src/resources/submodules/appium-uiautomator2-driver/docs/activity-startup.md +47 -0
  465. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-appbundle.md +69 -0
  466. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-mobile-gestures.md +352 -0
  467. package/src/resources/submodules/appium-uiautomator2-driver/docs/bidi.md +50 -0
  468. package/src/resources/submodules/appium-uiautomator2-driver/docs/capability-sets.md +136 -0
  469. package/src/resources/submodules/appium-uiautomator2-driver/docs/scheduled-actions.md +155 -0
  470. package/src/resources/submodules/appium-uiautomator2-driver/docs/uiautomator-uiselector.md +51 -0
  471. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/main.md +95 -0
  472. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen1.png +0 -0
  473. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen2.png +0 -0
  474. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/checkered-squares.png +0 -0
  475. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/start-button.png +0 -0
  476. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/stop-button.png +0 -0
  477. package/src/resources/submodules/appium-xcuitest-driver/.github/ISSUE_TEMPLATE.md +4 -0
  478. package/src/resources/submodules/appium-xcuitest-driver/CHANGELOG.md +2594 -0
  479. package/src/resources/submodules/appium-xcuitest-driver/README.md +55 -0
  480. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png +0 -0
  481. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo.png +0 -0
  482. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png +0 -0
  483. package/src/resources/submodules/appium-xcuitest-driver/docs/contributing.md +45 -0
  484. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints-wda.md +61 -0
  485. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints.md +98 -0
  486. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/keynote.png +0 -0
  487. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/on_my_iphone.png +0 -0
  488. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/top_files.png +0 -0
  489. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/attach-to-running-wda.md +43 -0
  490. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/audio-capture.md +78 -0
  491. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/capability-sets.md +169 -0
  492. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/ci-setup.md +47 -0
  493. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/clipboard.md +47 -0
  494. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/elements-lookup-troubleshooting.md +158 -0
  495. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/file-transfer.md +147 -0
  496. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/gestures.md +52 -0
  497. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/hybrid.md +137 -0
  498. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/input-events.md +67 -0
  499. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/install-certificate.md +19 -0
  500. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/multiple-xcode-versions.md +37 -0
  501. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/parallel-tests.md +39 -0
  502. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-prebuilt-wda.md +135 -0
  503. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +178 -0
  504. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/touch-id.md +33 -0
  505. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/troubleshooting.md +191 -0
  506. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +114 -0
  507. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +283 -0
  508. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-slowness.md +231 -0
  509. package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +36 -0
  510. package/src/resources/submodules/appium-xcuitest-driver/docs/installation/index.md +137 -0
  511. package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +19 -0
  512. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/check-prov-prof.png +0 -0
  513. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-new-project.png +0 -0
  514. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-single-page.png +0 -0
  515. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/no-prov-prof.png +0 -0
  516. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/project-prov-prof.png +0 -0
  517. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/set-up-bundle.png +0 -0
  518. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/untrusted-dev.png +0 -0
  519. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-bundle-id.png +0 -0
  520. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-config.png +0 -0
  521. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-fail.png +0 -0
  522. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-succeed.png +0 -0
  523. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/index.md +51 -0
  524. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-auto.md +49 -0
  525. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-manual.md +40 -0
  526. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-full-manual.md +50 -0
  527. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-generic-manual.md +49 -0
  528. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/real-device-config.md +100 -0
  529. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/assets/images/useXctestrunFile.png +0 -0
  530. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/bidi.md +75 -0
  531. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +165 -0
  532. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +490 -0
  533. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +27 -0
  534. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +2206 -0
  535. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/ios-predicate.md +196 -0
  536. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/locator-strategies.md +19 -0
  537. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +29 -0
  538. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +22 -0
  539. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +16 -0
  540. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +49 -0
  541. package/src/resources/submodules/appium-xcuitest-driver/test/assets/TestApp-iphonesimulator.app/Default-568h@2x.png +0 -0
  542. package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
  543. package/src/schema.ts +5 -0
  544. package/src/scripts/simple-index-documentation.ts +93 -0
  545. package/src/scripts/simple-query-documentation.ts +61 -0
  546. package/src/server.ts +40 -0
  547. package/src/tests/README.md +83 -0
  548. package/src/tests/__mocks__/@appium/support.ts +31 -0
  549. package/src/tests/generate-all-locators.test.ts +179 -0
  550. package/src/tests/test-setup-wda.ts +247 -0
  551. package/src/tools/README.md +170 -0
  552. package/src/tools/answer-appium.ts +75 -0
  553. package/src/tools/boot-simulator.ts +87 -0
  554. package/src/tools/create-session.ts +270 -0
  555. package/src/tools/delete-session.ts +46 -0
  556. package/src/tools/documentation/index.ts +97 -0
  557. package/src/tools/documentation/reasoning-rag.ts +434 -0
  558. package/src/tools/documentation/sentence-transformers-embeddings.ts +142 -0
  559. package/src/tools/documentation/simple-pdf-indexer.ts +509 -0
  560. package/src/tools/documentation/uploads/documents.json +1 -0
  561. package/src/tools/generate-tests.ts +50 -0
  562. package/src/tools/index.ts +133 -0
  563. package/src/tools/install-wda.ts +277 -0
  564. package/src/tools/interactions/activate-app.ts +46 -0
  565. package/src/tools/interactions/click.ts +47 -0
  566. package/src/tools/interactions/double-tap.ts +87 -0
  567. package/src/tools/interactions/find.ts +58 -0
  568. package/src/tools/interactions/get-text.ts +47 -0
  569. package/src/tools/interactions/install-app.ts +45 -0
  570. package/src/tools/interactions/list-apps.ts +65 -0
  571. package/src/tools/interactions/screenshot.ts +56 -0
  572. package/src/tools/interactions/set-value.ts +48 -0
  573. package/src/tools/interactions/terminate-app.ts +47 -0
  574. package/src/tools/interactions/uninstall-app.ts +47 -0
  575. package/src/tools/locators.ts +83 -0
  576. package/src/tools/scroll-to-element.ts +188 -0
  577. package/src/tools/scroll.ts +97 -0
  578. package/src/tools/select-device.ts +298 -0
  579. package/src/tools/select-platform.ts +243 -0
  580. package/src/tools/session-store.ts +72 -0
  581. package/src/tools/setup-wda.ts +218 -0
  582. package/src/types/appium-ios-device.d.ts +8 -0
  583. package/src/types/appium-xcuitest-driver.d.ts +5 -0
  584. package/tsconfig.json +23 -0
  585. package/index.js +0 -0
@@ -0,0 +1,135 @@
1
+ ---
2
+ title: Run Prebuilt WebDriverAgentRunner
3
+ ---
4
+
5
+ The XCUITest driver runs `xcodebuild` to build and install the WebDriverAgentRunner (WDA) app on the
6
+ target device. Running the command every time could slow down new session creation.
7
+ You can manually run a modified version of this command in order to prebuild the WDA.
8
+
9
+ ## Understanding How `xcodebuild` Works
10
+
11
+ By default, `xcodebuild` is run with two commands: `build-for-testing` and `test-without-building`.
12
+ `build-for-testing` builds a test bundle package, whereas `test-without-building` actually runs it.
13
+
14
+ For instance, XCUITest driver issues an `xcodebuild` command like so:
15
+
16
+ ```bash
17
+ xcodebuild build-for-testing test-without-building \
18
+ -project WebDriverAgent.xcodeproj \
19
+ -derivedDataPath wda_build \
20
+ -scheme WebDriverAgentRunner \
21
+ -destination "platform=iOS Simulator,name=iPhone 14 Pro" \
22
+ CODE_SIGNING_ALLOWED=NO
23
+ ```
24
+
25
+ This translates to `xcodebuild` building `WebDriverAgent.xcodeproj` and running the resulting
26
+ package on the specified device. The built package will be located in the `wda_build` path.
27
+
28
+ The command can be split into `build-for-testing` and `test-without-building` parts as follows:
29
+
30
+ ```bash
31
+ xcodebuild build-for-testing \
32
+ -project WebDriverAgent.xcodeproj \
33
+ -derivedDataPath wda_build \
34
+ -scheme WebDriverAgentRunner \
35
+ -destination "platform=iOS Simulator,name=iPhone 14 Pro" \
36
+ CODE_SIGNING_ALLOWED=NO
37
+ ```
38
+
39
+ ```bash
40
+ xcodebuild test-without-building \
41
+ -xctestrun wda_build/Build/Products/WebDriverAgentRunner_iphonesimulator16.2-arm64.xctestrun \
42
+ -destination "platform=iOS Simulator,name=iPhone 14 Pro"
43
+ ```
44
+
45
+ * The `build-for-testing` command generates two files: an `.app` package and an `.xctestrun` file, e.g.:
46
+
47
+ ```
48
+ wda_build/Build/Products/Debug-iphonesimulator/WebDriverAgentRunner-Runner.app
49
+ wda_build/Build/Products/WebDriverAgentRunner_iphonesimulator16.2-arm64.xctestrun
50
+ ```
51
+
52
+ The `.xctestrun` file name depends on the `-destination` preference. The file contains metadata
53
+ about the package (the `DependentProductPaths` key).
54
+
55
+ * The `test-without-building` command starts the WDA application for testing by referencing the
56
+ provided `.xctestrun` file. Once this is done, `http://localhost:8100` will be able to receive
57
+ commands for the target device.
58
+
59
+ ## Preparation performance improvement ideas
60
+
61
+ ### Download Prebuilt WDA and run them with `appium:prebuiltWDAPath` and `appium:usePreinstalledWDA`
62
+
63
+ This approach allows the XCUITest driver to start WDA without running `xcodebuild` by using prebuilt WDA packages.
64
+ We recommend this method if you don't need to modify the WDA source code.
65
+
66
+ [The Appium WebDriverAgent GitHub page](https://github.com/appium/WebDriverAgent/releases) provides
67
+ downloads for WebDriverAgent packages for real devices and simulators.
68
+ WebDriverAgent packages for real devices do not have embedded XCTest frameworks so that
69
+ they can run on iOS 17+ devices. Please read [Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md)
70
+ for more details about running on real devices. Understanding app signing is also important when working with real devices.
71
+ Simulators need everything, so WDA package sizes for simulators are greater than for real devices.
72
+ The [Release](https://github.com/appium/appium-xcuitest-driver/actions/workflows/publish.js.yml) and
73
+ [Building WebDriverAgent](https://github.com/appium/WebDriverAgent/actions/workflows/wda-package.yml)
74
+ workflows may help with validating the build script.
75
+
76
+ [Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md) provides `appium:prebuiltWDAPath`
77
+ and `appium:usePreinstalledWDA` capabilities.
78
+ These capabilities allow the XCUITest driver to install prebuilt WDA specified with
79
+ `appium:prebuiltWDAPath` and start it **without** running `xcodebuild`.
80
+
81
+ The `download-wda-sim` command helps to download the proper version of WDA for your XCUITest driver version
82
+ for simulator use.
83
+
84
+ ```bash
85
+ appium driver run xcuitest download-wda-sim --outdir=/path/to/target/directory
86
+ ```
87
+
88
+ Then, starting a new session with capabilities below:
89
+
90
+ ```json
91
+ {
92
+ "appium:usePreinstalledWDA": true,
93
+ "appium:prebuiltWDAPath": "/path/to/target/directory/WebDriverAgentRunner-Runner.app"
94
+ }
95
+ ```
96
+
97
+ The new session starts without an `xcodebuild` run.
98
+
99
+ ### Capabilities for Prebuilt WDA with `appium:useXctestrunFile`, `appium:usePrebuiltWDA` or `appium:prebuildWDA`
100
+
101
+ The XCUITest driver provides two capabilities that allow skipping the `build-for-testing` command,
102
+ and executing only the `test-without-building` command: __`appium:useXctestrunFile`__ and
103
+ __`appium:bootstrapPath`__ (see [Capabilities](../reference/capabilities.md#webdriveragent)).
104
+
105
+ !!! note
106
+
107
+ These capabilities expect that the WDA files are already prebuild, so make sure to first run
108
+ `xcodebuild` to create the files.
109
+
110
+ This method can be used on both real devices and simulators, but real devices requires proper
111
+ signing as described in [Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md).
112
+
113
+ The capabilities can be used as follows:
114
+
115
+ ```json
116
+ {
117
+ "platformName": "ios",
118
+ "appium:automationName": "xcuitest",
119
+ "appium:platformVersion": "18.4",
120
+ "appium:deviceName": "iPhone 16",
121
+ "appium:useXctestrunFile": true,
122
+ "appium:bootstrapPath": "/path/to/wda_build/Build/Products"
123
+ }
124
+ ```
125
+
126
+ Not all combinations have been tested, but the target device can probably be anything.
127
+
128
+ The same thing can be achieved with the __`appium:derivedDataPath`__ and __`appium:usePrebuiltWDA`__
129
+ capabilities, but this may fail if `xcodebuild` cannot find or handle the `.xctestrun` file
130
+ properly. The stability depends on Xcode.
131
+
132
+ __`appium:prebuildWDA`__ lets the XCUITest driver build the WDA before running it, then the session
133
+ will be handled with `appium:usePrebuiltWDA`.
134
+ It might have additional building steps than with `appium:derivedDataPath` and `appium:usePrebuiltWDA`
135
+ combination, but it could help `appium:usePrebuiltWDA` to not manage the WDA project.
@@ -0,0 +1,178 @@
1
+ ---
2
+ title: Run Preinstalled WebDriverAgentRunner
3
+ ---
4
+
5
+ The XCUITest driver can be configured to launch an already-installed `WebDriverAgentRunner-Runner`
6
+ application (WDA) on a real device and a simulator. This allows you to start a session without the `xcodebuild`
7
+ command execution, improving the session startup performance.
8
+
9
+ !!! warning
10
+
11
+ iOS/tvOS 17+ specific:
12
+
13
+ This method currently works over `devicectl` for iOS 17+ with Xcode 15+ environment since XCUITest driver v7.5.0.
14
+ This may not work for tvOS 17+.
15
+ iOS/tvOS 16 and lower ones work over [appium-ios-device](https://github.com/appium/appium-ios-device) directly.
16
+
17
+ ## Capabilities
18
+
19
+ - Required
20
+ - [`appium:usePreinstalledWDA`](../reference/capabilities.md#webdriveragent)
21
+ - Optional
22
+ - [`appium:updatedWDABundleId`](../reference/capabilities.md#webdriveragent)
23
+ - [`appium:updatedWDABundleIdSuffix`](../reference/capabilities.md#webdriveragent)
24
+ - Since XCUITest driver v7.6.0
25
+ - [`appium:prebuiltWDAPath`](../reference/capabilities.md#webdriveragent)
26
+
27
+ ## Install WebDriverAgent
28
+
29
+ ### Using Xcode
30
+
31
+ Running a test for the WDA package in Xcode is the easiest way to prepare the device environment:
32
+
33
+ 1. Open WebDriverAgent project in Xcode
34
+ - You can run `appium driver run xcuitest open-wda` if using XCUITest driver 4.13 or newer
35
+ 2. Select the _WebDriverAgentRunner_ scheme
36
+ 3. Select the scheme as _Product -> Scheme -> WebDriverAgentRunner_ (or _WebDriverAgentRunner\_tvOS_ for tvOS)
37
+ 4. Select your device in _Product -> Destination_
38
+ 5. Select _Product -> Test_ to build and install the WDA app
39
+
40
+ If using a real device, you may need to change your bundle ID. Please check the
41
+ [Full Manual Provisioning Profile setup](../preparation/prov-profile-full-manual.md) for details.
42
+
43
+ ### Using 3rd Party Tools
44
+
45
+ Some 3rd party tools such as [pymobiledevice3](https://github.com/doronz88/pymobiledevice3),
46
+ [ios-deploy](https://github.com/ios-control/ios-deploy), [go-ios](https://github.com/danielpaulus/go-ios) and
47
+ [tidevice](https://github.com/alibaba/taobao-iphone-device), [ios-app-signer](https://github.com/DanTheMan827/ios-app-signer)
48
+ can install the WebDriverAgent package.
49
+
50
+ Some tools let you set an arbitrary bundle identifier (`CFBundleIdentifier` for the `Info.plist`) and sign it with the bundle identifier.
51
+ It may not have `.xctrunner` as the bundle identifier.
52
+ XCUITest driver automatically adds the `.xctrunner` suffix to the provided bundle identifier unless a different suffix is specified by the `appium:updatedWDABundleIdSuffix` capability.
53
+ If the value is an empty string, then no suffix will be added to the provided bundle identifier.
54
+
55
+ The WDA app package (`WebDriverAgentRunner-Runner.app`) can be generated in the _derivedDataPath_
56
+ directory, as explained in [Manual Configuration for a Generic Device](../preparation/prov-profile-generic-manual.md).
57
+ The app can then be installed without `xcodebuild` using the 3rd party tools.
58
+
59
+ ### Additional requirement for iOS 17+/tvOS17+
60
+
61
+ To launch the WebDriverAgentRunner package with `xcrun devicectl device process launch` for real devices it should not have `Frameworks/XC**` files.
62
+
63
+ For example, after building the WebDriverAgent with Xcode with proper sign, it generates `/Users/<user>/Library/Developer/Xcode/DerivedData/WebDriverAgent-ezumztihszjoxgacuhatrhxoklbh/Build/Products/Debug-appletvos/WebDriverAgentRunner-Runner.app`.
64
+ Then you can remove `Frameworks/XC**` in `WebDriverAgentRunner-Runner.app` like `rm Frameworks/WebDriverAgentRunner-Runner.app/XC**`.
65
+
66
+ Configuring `appium:prebuiltWDAPath` to the `/Users/<user>/Library/Developer/Xcode/DerivedData/WebDriverAgent-ezumztihszjoxgacuhatrhxoklbh/Build/Products/Debug-appletvos/WebDriverAgentRunner-Runner.app` would install the `WebDriverAgentRunner-Runner.app`, which has no `Frameworks/XC**` to the target device and launch it with `devicectl` command as part of `appium:usePreinstalledWDA` functionality.
67
+
68
+ !!! note
69
+
70
+ You can also remove `Frameworks/Testing.framework` and `Frameworks/libXCTestSwiftSupport.dylib` to reduce the package size
71
+ because WebDriverAgent doesn't need both. Then, the total size of the WebDriverAgent runner app can be 3MB or less.
72
+ `Testing.framework` is almost 6MB and `libXCTestSwiftSupport.dylib` is 2.6MB with Xcode 16 build.
73
+
74
+
75
+ ## Launch the Session
76
+
77
+ After installing the `WebDriverAgentRunner-Runner` application, you can start the Appium server
78
+ and launch an XCUITest driver session with the specified capabilities:
79
+
80
+ ```
81
+ appium
82
+ ```
83
+
84
+ ```ruby
85
+ # Ruby
86
+ capabilities: {
87
+ "platformName": "ios",
88
+ "appium:automationName": "xcuitest",
89
+ "appium:udid": "<udid>",
90
+ "appium:usePreinstalledWDA": true,
91
+ "appium:updatedWDABundleId": "com.appium.WebDriverAgentRunner"
92
+ }
93
+ @core = Appium::Core.for capabilities: capabilities
94
+ driver = @core.start_driver
95
+ # do something
96
+ driver.quit
97
+ ```
98
+
99
+ If the `<udid>` device has a WebDriverAgent package with `com.appium.WebDriverAgentRunner.xctrunner`
100
+ bundle ID, the session will launch the WebDriverAgent process without `xcodebuild`.
101
+
102
+ !!! note
103
+
104
+ Please ensure that the WDA application is launchable before starting an XCUITest driver session.
105
+ For example, check whether the provisioning profile is trusted.
106
+
107
+
108
+ !!! note
109
+
110
+ Please make sure the device under test has the developer disk image mounted.
111
+ This is necessary to start an XCTest session and load the required XCTest libraries from the device.
112
+ For example, starting Xcode after connecting the device to the host machine will mount the developer disk image automatically.
113
+ Using third-party tools can also help to mount the developer disk image service.
114
+ Please check the documentation for each tool to understand how to mount the developer disk image.
115
+
116
+
117
+ ```ruby
118
+ # Ruby
119
+ capabilities: {
120
+ "platformName": "ios",
121
+ "appium:automationName": "xcuitest",
122
+ "appium:udid": "<udid>",
123
+ "appium:usePreinstalledWDA": true,
124
+ "appium:updatedWDABundleId": "io.appium.wda"
125
+ "appium:updatedWDABundleIdSuffix": ""
126
+ }
127
+ @core = Appium::Core.for capabilities: capabilities
128
+ driver = @core.start_driver
129
+ # do something
130
+ driver.quit
131
+ ```
132
+
133
+ If the `<udid>` device has a WebDriverAgent package with `io.appium.wda` bundle ID (it does not have `.xctrunner`),
134
+ the session will launch the WebDriverAgent process without `xcodebuild`.
135
+
136
+ ## Set `appium:prebuiltWDAPath`
137
+
138
+ If the `appium:prebuiltWDAPath` capability is provided with a `WebDriverAgentRunner-Runner.app` test bundle,
139
+ the XCUITest driver will install the application and launch it every test session.
140
+ Test bundles cannot be versioned using `CFBundleVersion` as vanilla applications do usually,
141
+ which is why it is necessary to (re)install them for every test session.
142
+ The test bundle should be signed properly for real devices.
143
+
144
+ Usually you can find the WDA application bundle at the below location if you use Xcode to build it.
145
+
146
+ ```
147
+ ~/Library/Developer/Xcode/DerivedData/WebDriverAgent-<random string>/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app
148
+ ```
149
+
150
+ You can then set your Appium capabilities as follows:
151
+
152
+ ```ruby
153
+ # Ruby
154
+ capabilities: {
155
+ "platformName": "ios",
156
+ "appium:automationName": "xcuitest",
157
+ "appium:udid": "<udid>",
158
+ "appium:usePreinstalledWDA": true,
159
+ "appium:prebuiltWDAPath": "/path/to/Library/Developer/Xcode/DerivedData/WebDriverAgent-<random string>/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app"
160
+ }
161
+ @core = Appium::Core.for capabilities: capabilities
162
+ driver = @core.start_driver
163
+ # do something
164
+ driver.quit
165
+ ```
166
+
167
+ !!! note
168
+
169
+ As of iOS 17, the testmanagerd service name has changed from `com.apple.testmanagerd` to
170
+ `com.apple.dt.testmanagerd.runner`. It causes an unexpected WDA process crash with embedded
171
+ XCTest frameworks while running a single WebDriverAgent package on various OS environments
172
+ without `xcodebuild`.
173
+
174
+ Since WDA v5.10.0, the module can refer to the device's local XCTest frameworks. It lets the
175
+ Appium/WebDriverAgent package use proper dependencies for the device with a single prebuilt
176
+ WebDriverAgent package. To set this up, you should remove the package internal frameworks from
177
+ `WebDriverAgentRunner-Runner.app` with `rm -rf WebDriverAgentRunner-Runner.app/Frameworks/XC*.framework`.
178
+ The WDA package itself is available from <https://github.com/appium/WebDriverAgent>.
@@ -0,0 +1,33 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Touch ID
6
+ ---
7
+
8
+ The XCUITest driver has the capability to simulate [Touch ID](https://support.apple.com/en-ca/HT201371).
9
+
10
+ !!! note
11
+
12
+ This functionality is only supported on simulators.
13
+
14
+ ## Configuration
15
+
16
+ To use Touch ID, the application that Appium launches from (Terminal, iTerm, etc.) must be added to
17
+ the accessibility preferences on your Mac. Navigate to _System Preferences -> Privacy & Security ->
18
+ Accessibility_ and under _Allow the apps below to control your computer_ add the application.
19
+
20
+ Why this is needed: The only way Appium can enable enrollment and toggling of Touch ID is to use
21
+ system-level accessibility APIs to simulate mouse clicks on the simulator menus via AppleScript.
22
+
23
+ ## Usage
24
+
25
+ * Set the capability `appium:allowTouchIdEnroll` to `true`.
26
+ * When the Simulator starts, Touch ID enrollment will be enabled by default
27
+ * You can toggle Touch ID enrollment by calling the
28
+ [`mobile: enrollBiometric`](../reference/execute-methods.md#mobile-enrollbiometric) extension
29
+
30
+ !!! note
31
+
32
+ Remember that not all iOS devices have Touch ID, so your tests should handle cases where
33
+ Touch ID is not supported.
@@ -0,0 +1,191 @@
1
+ ---
2
+ title: Troubleshooting
3
+ ---
4
+
5
+ ## Known Problems
6
+
7
+ * Real devices with iOS/iPadOS 15+ show an overlay with the text `Automation Running Hold both
8
+ volume buttons to stop` while WebDriverAgent is running. This is a known limitation of the XCTest
9
+ framework. Note that screenshotting functionality is not affected (i.e. the overlay is not visible
10
+ on taken screenshots).
11
+ * Real devices with iOS/iPadOS 15+ [require passcode or Touch ID](https://github.com/appium/appium/issues/15898#issuecomment-927340411)
12
+ when starting a new session. A workaround for this is to disable passcode/Touch ID on the device.
13
+ * After many failures on a real device, it could transition to a state where connections are no
14
+ longer being accepted. Rebooting the device can help remedy this problem. Please read
15
+ [this issue](https://github.com/facebook/WebDriverAgent/issues/507) for more details.
16
+ * `shake` is implemented via AppleScript and works only on Simulator due to lack of support from Apple
17
+
18
+ ## Interact with dialogs managed by `com.apple.springboard`
19
+
20
+ System dialogs, such as permission dialogs, might not be interactable directly when the active application is not `com.apple.springboard`.
21
+ Despite a similar look, dialogs belonging to the active session application (e.g. initially passed as `appium:app` or `appium:bundleId` capability value)
22
+ do not require such adjustment.
23
+
24
+ XCUITest driver offers a couple of approaches to handle them:
25
+
26
+ - Set the [respectSystemAlerts setting](../reference/settings.md) to `true`. It enforces the active application
27
+ detection algorithm to check a presence of system alerts and to return the Springboard app if this check succeeds.
28
+ Such approach emulates the driver behavior prior to version 6 of XCUITest driver, although it might slightly
29
+ slow down your scripts because each attempt to detect an active app would require to also query for alerts
30
+ presence.
31
+ - Start a session without `appium:app` nor `appium:bundleId`. Then XCUITest driver attempts to get the current active application. This requires you to start an application after a new session request with [`mobile: installApp`](../reference/execute-methods.md#mobile-installapp) to install an app if needed and [`mobile: launchApp`](../reference/execute-methods.md#mobile-launchapp)/[`mobile: activateApp`](../reference/execute-methods.md#mobile-activateapp), but it could automatically change the active application with `com.apple.springboard` or activate an application at the foreground. (Note that the automatic app detection might be lengthy, thus each action could take more time.)
32
+ - When a permission alert exists at the foreground, it could select the `com.apple.springboard`
33
+ - When another application is at the foreground by accepting/denying the system alert, or [`mobile: activateApp`](../reference/execute-methods.md#mobile-activateapp), the application would be selected as an active application.
34
+ - [`mobile: alert`](../reference/execute-methods.md#mobile-alert)
35
+ - `defaultActiveApplication` setting in [Settings](../reference/settings.md).
36
+ - e.g. With the [Appium Ruby client](https://github.com/appium/ruby_lib_core)
37
+ ```ruby
38
+ # Interacting with the test target
39
+ driver.settings.update({defaultActiveApplication: "com.apple.springboard"})
40
+ # to accept the alert
41
+ driver.find_element("accessibility_id", "Allow Once").click
42
+ driver.settings.update({defaultActiveApplication: "auto"})
43
+ # keep interacting with the test target
44
+ ```
45
+ - Enable `appium:autoAcceptAlerts`/`appium:autoDismissAlerts`, or interact with alerts via [User Prompts](https://www.w3.org/TR/webdriver1/#user-prompts) in WebDriver endpoints
46
+ - e.g. `driver.switch_to.alert.accept` with the [Appium Ruby client](https://github.com/appium/ruby_lib_core)
47
+ - It might be necessary to coordinate element selection via `acceptAlertButtonSelector`/`dismissAlertButtonSelector` settings in [Settings](../reference/settings.md)
48
+ - Activate `com.apple.springboard` with [`mobile: activateApp`](../reference/execute-methods.md#mobile-activateapp) before interacting with dialogs
49
+
50
+ [`mobile: activeAppInfo`](../reference/execute-methods.md#mobile-activateappinfo) helps to understand what application (bundleId) is considered as active for the XCUITest driver.
51
+
52
+ ## Interact with dialogs managed by `com.apple.ContactsUI.LimitedAccessPromptView`
53
+
54
+ iOS 18 introduced a new process named `com.apple.ContactsUI.LimitedAccessPromptView`. See [this issue](https://github.com/appium/appium/issues/20591) for more details.
55
+ As of XCUITest driver v7.26.4, the only workaround to interact with views available through the process is the below method:
56
+
57
+ - `defaultActiveApplication` setting in [Settings](../reference/settings.md).
58
+ - e.g. With the [Appium Ruby client](https://github.com/appium/ruby_lib_core)
59
+ ```ruby
60
+ # Interacting with the test target
61
+ driver.settings.update({defaultActiveApplication: "com.apple.ContactsUI.LimitedAccessPromptView"})
62
+ # to accept the alert
63
+ driver.find_element("accessibility_id", "Select Contacts").click
64
+ driver.settings.update({defaultActiveApplication: "auto"})
65
+ # keep interacting with the test target
66
+ ```
67
+
68
+ The `com.apple.ContactsUI.LimitedAccessPromptView` process can get elements available through `com.apple.springboard`, such as several system permission dialogs.
69
+ iOS 18+ devices may be possible to use `com.apple.ContactsUI.LimitedAccessPromptView` to interact with elements managed either by `com.apple.ContactsUI.LimitedAccessPromptView` or `com.apple.springboard`.
70
+
71
+ ## Leftover Application Data on Real Devices
72
+
73
+ There might be a situation where application data is present on the real device, even if the
74
+ application itself is not installed. This could happen if:
75
+
76
+ - The app is in an [offloaded state](https://discussions.apple.com/thread/254887240)
77
+ - The application state is cached
78
+ - There was an unexpected failure while installing the app. An example of such failure is the
79
+ `ApplicationVerificationFailed` which happens while installing an app signed with an invalid provisioning profile.
80
+
81
+ In the above cases, the application identifier will not be listed in the output of
82
+ [`mobile: listApps`](../reference/execute-methods.md#mobile-listapps), and it will not be detected
83
+ by [`mobile: isAppInstalled`](../reference/execute-methods.md#mobile-isappinstalled). Setting
84
+ `appium:fullReset` or `appium:enforceAppInstall` capabilities to `true` also will not help clear this data.
85
+
86
+ The only way to completely get rid of the cached application data is to call the
87
+ [`mobile: removeApp`](../reference/execute-methods.md#mobile-removeapp) command with the appropriate
88
+ bundle identifier.
89
+
90
+ The driver does automatically try to resolve application installs that failed because of the
91
+ `MismatchedApplicationIdentifierEntitlement` error. However, in cases when the previously installed
92
+ application's provisioning profile is different from what currently the driver is trying to
93
+ install, and if you explicitly set the driver to _not_ perform application uninstall, then consider
94
+ calling [`mobile: removeApp`](../reference/execute-methods.md#mobile-removeapp) before the
95
+ `MismatchedApplicationIdentifierEntitlement` error occurs. Example steps can be as follows:
96
+
97
+ 1. Start a session without `appium:app` and `appium:bundleId` capabilities
98
+ 2. Call [`mobile: removeApp`](../reference/execute-methods.md#mobile-removeapp) for the target
99
+ application's bundle id
100
+ 3. Install the test target with [`mobile: installApp`](../reference/execute-methods.md#mobile-installapp)
101
+ 4. Launch the application with [`mobile: launchApp`](../reference/execute-methods.md#mobile-launchapp)
102
+ or [`mobile: activateApp`](../reference/execute-methods.md#mobile-activateapp)
103
+
104
+
105
+ !!! note
106
+
107
+ We observed that iOS 18+ environments can retain the permission preference even after reinstallation.
108
+ Please refer to [this issue](https://github.com/appium/appium-xcuitest-driver/issues/2572) for more information about this behavior.
109
+
110
+
111
+ ## Weird State
112
+
113
+ ### Real Device Stops Responding
114
+
115
+ Running tests on a real device is particularly flakey. If things stop responding, the only recourse
116
+ is, most often, to restart the device. Logs in the form of the following _may_ start to occur:
117
+
118
+ ```shell
119
+ info JSONWP Proxy Proxying [POST /session] to [POST http://10.35.4.122:8100/session] with body: {"desiredCapabilities":{"ap..."
120
+ dbug WebDriverAgent Device: Jul 26 13:20:42 iamPhone XCTRunner[240] <Warning>: Listening on USB
121
+ dbug WebDriverAgent Device: Jul 26 13:21:42 iamPhone XCTRunner[240] <Warning>: Enqueue Failure: UI Testing Failure - Unable to update application state promptly. <unknown> 0 1
122
+ dbug WebDriverAgent Device: Jul 26 13:21:57 iamPhone XCTRunner[240] <Warning>: Enqueue Failure: UI Testing Failure - Failed to get screenshot within 15s <unknown> 0 1
123
+ dbug WebDriverAgent Device: Jul 26 13:22:57 iamPhone XCTRunner[240] <Warning>: Enqueue Failure: UI Testing Failure - App state of (null) is still unknown <unknown> 0 1
124
+ ```
125
+
126
+ ### Command Takes 60+ Seconds
127
+
128
+ Sometimes it is possible to encounter slowdowns for an additional 60 seconds for a command that
129
+ usually should not take long. This may be caused by a crash in the `testmanagerd` process on the
130
+ device under test. In such a case, the OS tries to restore the process, then wait for the resurrected
131
+ daemon to connect to the target process, which causes the aforementioned delay.
132
+
133
+ This can be fixed by terminating the target application process. For example, if this behavior
134
+ occurs while calling `mobile: queryAppState`, you can terminate the application once, or restart the
135
+ device entirely. Please check [this pull request](https://github.com/appium/WebDriverAgent/pull/774)
136
+ for more details.
137
+
138
+ ## Real Device Security Settings
139
+
140
+ On some systems, especially CI ones, where tests are executed by command line agents, macOS
141
+ Accessibility restrictions result in the WebDriverAgent process being unable to retrieve the
142
+ development keys from the system keychain. This usually manifests by `xcodebuild` returning error
143
+ code `65`. One workaround for this is to use a private key that is not stored on the system
144
+ keychain. See [this issue](https://github.com/appium/appium/issues/6955) and
145
+ [this Stack Exchange post](http://stackoverflow.com/questions/16550594/jenkins-xcode-build-works-codesign-fails).
146
+
147
+ To export the key, use
148
+
149
+ ```
150
+ security create-keychain -p [keychain_password] MyKeychain.keychain
151
+ security import MyPrivateKey.p12 -t agg -k MyKeychain.keychain -P [p12_Password] -A
152
+ ```
153
+
154
+ where `MyPrivateKey.p12` is the private development key exported from the system keychain.
155
+
156
+ You can then use the [`appium:keychainPath`](../reference/capabilities.md#webdriveragent) and
157
+ [`appium:keychainPassword`](../reference/capabilities.md#webdriveragent) capabilities to pass this
158
+ keychain to WebDriverAgent.
159
+
160
+ ## Simulator Resetting
161
+
162
+ When testing on simulators, the driver tries to leave the simulator state as it found it:
163
+
164
+ * If no `udid` is provided, the driver will create a new iOS simulator, run tests on it, and then
165
+ delete the simulator
166
+ * If a specific `udid` is provided for a simulator that _is not_ running, the driver will boot the
167
+ specified simulator, run tests on it, and then shut the simulator down
168
+ * If a specific `udid` is provided for a simulator that _is_ running, the driver will connect to the
169
+ existing simulator, run tests, and then leave the simulator running
170
+
171
+ You can use the `appium:noReset` capability to adjust this behavior: setting it to `true` will
172
+ leave the simulator running at the end of a test session.
173
+
174
+ ## Caching Issues During Build
175
+
176
+ Testing on iOS generates files that can sometimes get large. These include logs, temporary files,
177
+ and derived data from Xcode runs, all of which are safe to delete if any issues arise. The files are
178
+ usually found in the following locations, should they need to be deleted:
179
+
180
+ ```
181
+ $HOME/Library/Logs/CoreSimulator/*
182
+ $HOME/Library/Developer/Xcode/DerivedData/*
183
+ ```
184
+
185
+ ## Frequent `Disconnecting from remote debugger` error in iOS 17
186
+
187
+ Please try out iOS 17.6 or a newer version which includes [a possible fix by Apple](https://developer.apple.com/documentation/safari-release-notes/safari-17_6-release-notes#Web-Inspector).
188
+
189
+ Frequent Web Inspector debugger disconnection started since iOS 17.2 (or iOS 17.0), that eventually caused `Disconnecting from remote debugger` error.
190
+ It could be improved since iOS 17.6.
191
+ Please check [the corresponding pull request](https://github.com/appium/appium-xcuitest-driver/pull/2334) for more details.
@@ -0,0 +1,114 @@
1
+ ---
2
+ title: tvOS Support
3
+ ---
4
+
5
+ The XCUITest driver supports automation of the tvOS platform.
6
+
7
+ <img src="https://user-images.githubusercontent.com/5511591/55161297-876e0200-51a8-11e9-8313-8d9f15a0db9d.gif" width=50%>
8
+
9
+ !!! warning
10
+
11
+ Apple TV 4K is not supported. This is because [`appium-ios-device`](https://github.com/appium/appium-ios-device),
12
+ which is used to support low-level communication with devices, only supports devices connected via USB.
13
+
14
+ ## Setup
15
+
16
+ You can run tests for tvOS by setting the `platformName` capability to `tvOS`:
17
+
18
+ ```json
19
+ {
20
+ "platformName": "tvOS", // here
21
+ "appium:automationName": "XCUITest",
22
+ "appium:platformVersion": "12.2",
23
+ "appium:deviceName": "Apple TV",
24
+ ...
25
+ }
26
+ ```
27
+
28
+ !!! note
29
+
30
+ If using a simulator, make sure the tvOS simulator exists in your simulator list. You can run
31
+ `xcrun simctl list | grep "com.apple.CoreSimulator.SimRuntime.tvOS"` to verify this.
32
+
33
+ ## Basic Actions
34
+
35
+ tvOS provides [remote controller](https://developer.apple.com/design/human-interface-guidelines/tvos/remote-and-controllers/remote/)
36
+ based actions. The XCUITest driver implements these actions using the
37
+ [`mobile: pressButton`](../reference/execute-methods.md#mobile-pressbutton) extension, with the
38
+ following button values: `menu`, `up/down/left/right`, `home`, `playpause` and `select`.
39
+
40
+ All actions are performed on the _focused_ element (which has the `focus` attribute set). The
41
+ focused element is automatically changed after using `mobile: pressButton`.
42
+
43
+ It is also possible to use the standard `findElement` and `click` methods. The XCUITest driver will
44
+ automatically calculate the necessary sequence of `up/down/left/right` and `select` button presses,
45
+ so you should not care about which keys should be pressed to reach an arbitrary element every time.
46
+
47
+ === "Java"
48
+
49
+ ```java
50
+ WebElement element = driver.findElementByAccessibilityId("element on the app");
51
+ element.getAttribute("focused"); // => 'true'
52
+ // Appium moves the focus to the element by pressing the corresponding keys and clicking the element
53
+ element.click();
54
+ driver.queryAppState("test.package.name"); // => :running_in_foreground
55
+ driver.executeScript("mobile: pressButton", ImmutableMap.of("name", "Home"));
56
+ driver.executeScript("mobile: pressButton", ImmutableMap.of("name", "Up"));
57
+ element = driver.switchTo().activeElement();
58
+ element.getAttribute("label");
59
+ ```
60
+
61
+ === "JS (WebdriverIO)"
62
+
63
+ ```javascript
64
+ const element = $('~SomeAccessibilityId');
65
+ element.getAttribute('focused');
66
+ element.click();
67
+ driver.execute('mobile: pressButton', {name: 'Home'});
68
+ driver.execute('mobile: pressButton', {name: 'Up'});
69
+ const activeElement = driver.getActiveElement();
70
+ activeElement.getAttribute('label');
71
+ ```
72
+
73
+ === "Python"
74
+
75
+ ```Python
76
+ element = driver.find_element_by_accessibility_id('element on the app')
77
+ element.get_attribute('focused')
78
+ element.click()
79
+ driver.query_app_state('test.package.name')
80
+ driver.execute_script('mobile: pressButton', { 'name': 'Home' })
81
+ driver.execute_script('mobile: pressButton', { 'name': 'Up' })
82
+ element = driver.switch_to.active_element
83
+ element.get_attribute('label')
84
+ ```
85
+
86
+ === "Ruby"
87
+
88
+ ```ruby
89
+ element = @driver.find_element :accessibility_id, 'element on the app'
90
+ element.focused
91
+ element.click
92
+ @driver.app_state('test.package.name')
93
+ @driver.execute_script 'mobile: pressButton', { name: 'Home' }
94
+ @driver.execute_script 'mobile: pressButton', { name: 'Up' }
95
+ element = @driver.switch_to.active_element
96
+ element.label
97
+ ```
98
+
99
+ ## More Actions
100
+
101
+ * Consider using `wait` methods, since tvOS also has animation
102
+ * The `menu` button works as _back_ for iOS context in tvOS
103
+
104
+ ## Known Limitations
105
+
106
+ * Gesture commands do not work for tvOS. Some commands such as pasteboard do not work as well.
107
+
108
+ ## Related Tickets
109
+
110
+ * <https://github.com/appium/appium/pull/12401>
111
+ * <https://github.com/appium/appium-xcuitest-driver/pull/911>
112
+ * <https://github.com/appium/appium-xcuitest-driver/pull/931>
113
+ * <https://github.com/appium/appium-xcuitest-driver/pull/939>
114
+ * <https://github.com/appium/WebDriverAgent/pull/163>