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,501 @@
1
+ import _ from 'lodash';
2
+ import * as XPath from 'xpath';
3
+ const xpathSelect = XPath.select;
4
+ import log from './logger.js';
5
+ import { childNodesOf, domToXML, findDOMNodeByPath, xmlToDOM, } from './source-parsing.js';
6
+ // Attributes on nodes that are likely to be unique to the node so we should consider first when
7
+ // suggesting xpath locators. These are considered IN ORDER.
8
+ const UNIQUE_XPATH_ATTRIBUTES = [
9
+ 'name',
10
+ 'content-desc',
11
+ 'id',
12
+ 'resource-id',
13
+ 'accessibility-id',
14
+ ];
15
+ // Attributes that we should recommend as a fallback but ideally only in conjunction with other
16
+ // attributes
17
+ const MAYBE_UNIQUE_XPATH_ATTRIBUTES = ['label', 'text', 'value'];
18
+ const CHECKED_CLASS_CHAIN_ATTRIBUTES = ['name', 'label', 'value'];
19
+ const CHECKED_PREDICATE_ATTRIBUTES = ['name', 'label', 'value', 'type'];
20
+ // Map of element attributes to their UiAutomator syntax, ordered by (likely) decreasing uniqueness
21
+ const CHECKED_UIAUTOMATOR_ATTRIBUTES = [
22
+ ['resource-id', 'resourceId'],
23
+ ['text', 'text'],
24
+ ['content-desc', 'description'],
25
+ ['class', 'className'],
26
+ ];
27
+ // Map of element attributes to their matching simple (optimal) locator strategies
28
+ const SIMPLE_STRATEGY_MAPPINGS = [
29
+ ['name', 'accessibility id'],
30
+ ['content-desc', 'accessibility id'],
31
+ ['id', 'id'],
32
+ ['rntestid', 'id'],
33
+ ['resource-id', 'id'],
34
+ ['class', 'class name'],
35
+ ['type', 'class name'],
36
+ ];
37
+ /**
38
+ * Check whether the provided attribute & value are unique in the source
39
+ */
40
+ export function areAttrAndValueUnique(attrName, attrValue, sourceDoc) {
41
+ // If no sourceDoc provided, assume it's unique
42
+ if (!sourceDoc || _.isEmpty(sourceDoc)) {
43
+ return true;
44
+ }
45
+ const result = xpathSelect(`//*[@${attrName}="${attrValue.replace(/"/g, '')}"]`, sourceDoc);
46
+ return Array.isArray(result) ? result.length < 2 : false;
47
+ }
48
+ /**
49
+ * Get suggested selectors for simple locator strategies (which match a specific attribute)
50
+ */
51
+ export function getSimpleSuggestedLocators(attributes, sourceDoc, isNative = true) {
52
+ const res = {};
53
+ for (let [strategyAlias, strategy] of SIMPLE_STRATEGY_MAPPINGS) {
54
+ // accessibility id is only supported in native context
55
+ if (!(strategy === 'accessibility id' && !isNative)) {
56
+ const value = attributes[strategyAlias];
57
+ if (value && areAttrAndValueUnique(strategyAlias, value, sourceDoc)) {
58
+ res[strategy] = value;
59
+ }
60
+ }
61
+ }
62
+ return res;
63
+ }
64
+ /**
65
+ * Get suggested selectors for complex locator strategies (multiple attributes, axes, etc.)
66
+ */
67
+ export function getComplexSuggestedLocators(path, sourceDoc, isNative, automationName) {
68
+ let complexLocators = {};
69
+ const domNode = findDOMNodeByPath(path, sourceDoc);
70
+ if (isNative) {
71
+ switch (automationName) {
72
+ case 'xcuitest':
73
+ case 'mac2': {
74
+ const optimalClassChain = getOptimalClassChain(sourceDoc, domNode);
75
+ complexLocators['-ios class chain'] = optimalClassChain
76
+ ? '**' + optimalClassChain
77
+ : null;
78
+ complexLocators['-ios predicate string'] = getOptimalPredicateString(sourceDoc, domNode);
79
+ break;
80
+ }
81
+ case 'uiautomator2': {
82
+ complexLocators['-android uiautomator'] = getOptimalUiAutomatorSelector(sourceDoc, domNode, path);
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ complexLocators.xpath = getOptimalXPath(sourceDoc, domNode);
88
+ // Remove entries for locators where the optimal selector could not be found
89
+ return _.omitBy(complexLocators, _.isNil);
90
+ }
91
+ /**
92
+ * Get suggested selectors for all locator strategies
93
+ */
94
+ export function getSuggestedLocators(selectedElement, sourceXML, isNative, automationName) {
95
+ const sourceDoc = xmlToDOM(sourceXML);
96
+ const simpleLocators = getSimpleSuggestedLocators(selectedElement.attributes, sourceDoc, isNative);
97
+ const complexLocators = getComplexSuggestedLocators(selectedElement.path, sourceDoc, isNative, automationName);
98
+ // Combine all locators
99
+ const allLocators = { ...simpleLocators, ...complexLocators };
100
+ // Define priority order based on platform preference
101
+ let priorityOrder;
102
+ if (isNative &&
103
+ (automationName === 'xcuitest' || automationName === 'mac2')) {
104
+ // iOS priority: Accessibility Id > Predicate > Class Chain > XPath > Class Name
105
+ priorityOrder = [
106
+ 'id',
107
+ 'accessibility id',
108
+ '-ios predicate string',
109
+ '-ios class chain',
110
+ 'xpath',
111
+ 'class name',
112
+ ];
113
+ }
114
+ else if (isNative && automationName === 'uiautomator2') {
115
+ // Android priority: Accessibility Id > UiAutomator > XPath > Class Name
116
+ priorityOrder = [
117
+ 'id',
118
+ 'accessibility id',
119
+ 'xpath',
120
+ '-android uiautomator',
121
+ 'class name',
122
+ ];
123
+ }
124
+ else {
125
+ priorityOrder = ['id', 'class name', 'xpath'];
126
+ }
127
+ // Sort locators by priority order, keeping only available ones
128
+ const sortedLocators = [];
129
+ // Add locators in priority order
130
+ for (const strategy of priorityOrder) {
131
+ if (allLocators[strategy]) {
132
+ sortedLocators.push([strategy, allLocators[strategy]]);
133
+ }
134
+ }
135
+ // Add any remaining locators that weren't in the priority list (like 'id' for native contexts)
136
+ for (const [strategy, value] of _.toPairs(allLocators)) {
137
+ if (!priorityOrder.includes(strategy)) {
138
+ sortedLocators.push([strategy, value]);
139
+ }
140
+ }
141
+ // Return all valid locators, or empty array if none found
142
+ // Filter out any undefined entries
143
+ return sortedLocators.filter((locator) => Array.isArray(locator) &&
144
+ locator.length === 2 &&
145
+ typeof locator[0] === 'string' &&
146
+ typeof locator[1] === 'string' &&
147
+ locator[0] !== undefined &&
148
+ locator[1] !== undefined);
149
+ }
150
+ /**
151
+ * Return information about whether an xpath query results in a unique element, and the non-unique
152
+ * index of the element in the document if not unique
153
+ */
154
+ function determineXpathUniqueness(xpath, doc, domNode) {
155
+ let othersWithAttr = [];
156
+ // If the XPath does not parse, move to the next unique attribute
157
+ try {
158
+ const result = XPath.select(xpath, doc);
159
+ othersWithAttr = Array.isArray(result)
160
+ ? result
161
+ : [];
162
+ }
163
+ catch {
164
+ return [false];
165
+ }
166
+ if (othersWithAttr.length > 1) {
167
+ return [false, othersWithAttr.indexOf(domNode)];
168
+ }
169
+ return [true];
170
+ }
171
+ /**
172
+ * Given an xml doc and a current dom node, try to find a robust xpath selector qualified by
173
+ * key attributes, which is unique in the document (or unique plus index).
174
+ */
175
+ function getUniqueXPath(doc, domNode, attrs) {
176
+ let uniqueXpath, semiUniqueXpath;
177
+ const tagForXpath = domNode.nodeName || '*';
178
+ const isPairs = attrs.length > 0 && _.isArray(attrs[0]);
179
+ const isNodeName = attrs.length === 0;
180
+ // If we're looking for a unique //<nodetype>, return it only if it's actually unique. No
181
+ // semi-uniqueness here!
182
+ if (isNodeName) {
183
+ let xpath = `//${domNode.nodeName}`;
184
+ const [isUnique] = determineXpathUniqueness(xpath, doc, domNode);
185
+ if (isUnique) {
186
+ // even if this node name is unique, if it's the root node, we don't want to refer to it using
187
+ // '//' but rather '/'
188
+ if (!domNode.parentNode?.nodeName) {
189
+ xpath = `/${domNode.nodeName}`;
190
+ }
191
+ return [xpath, true];
192
+ }
193
+ return [undefined, undefined];
194
+ }
195
+ // Otherwise go through our various attributes to look for uniqueness
196
+ for (const attrName of attrs) {
197
+ let xpath;
198
+ if (isPairs) {
199
+ const [attr1Name, attr2Name] = attrName;
200
+ const attr1Value = domNode.getAttribute?.(attr1Name);
201
+ const attr2Value = domNode.getAttribute?.(attr2Name);
202
+ if (!attr1Value || !attr2Value) {
203
+ continue;
204
+ }
205
+ xpath = `//${tagForXpath}[@${attr1Name}="${attr1Value}" and @${attr2Name}="${attr2Value}"]`;
206
+ }
207
+ else {
208
+ const attrValue = domNode.getAttribute?.(attrName);
209
+ if (!attrValue) {
210
+ continue;
211
+ }
212
+ xpath = `//${tagForXpath}[@${attrName}="${attrValue}"]`;
213
+ }
214
+ const [isUnique, indexIfNotUnique] = determineXpathUniqueness(xpath, doc, domNode);
215
+ if (isUnique) {
216
+ uniqueXpath = xpath;
217
+ break;
218
+ }
219
+ // if the xpath wasn't totally unique it might still be our best bet. Store a less unique
220
+ // version qualified by an index for later in semiUniqueXpath. If we can't find a better
221
+ // unique option down the road, we'll fall back to this
222
+ if (!semiUniqueXpath && !_.isUndefined(indexIfNotUnique)) {
223
+ semiUniqueXpath = `(${xpath})[${indexIfNotUnique + 1}]`;
224
+ }
225
+ }
226
+ if (uniqueXpath) {
227
+ return [uniqueXpath, true];
228
+ }
229
+ if (semiUniqueXpath) {
230
+ return [semiUniqueXpath, false];
231
+ }
232
+ return [undefined, undefined];
233
+ }
234
+ /**
235
+ * Get an optimal XPath for a Node
236
+ */
237
+ export function getOptimalXPath(doc, domNode) {
238
+ try {
239
+ // BASE CASE #1: If this isn't an element, we're above the root, return empty string
240
+ if (!domNode.nodeName || domNode.nodeType !== 1) {
241
+ return '';
242
+ }
243
+ const attrsForPairs = [
244
+ ...UNIQUE_XPATH_ATTRIBUTES,
245
+ ...MAYBE_UNIQUE_XPATH_ATTRIBUTES,
246
+ ];
247
+ const attrPairsPermutations = attrsForPairs.flatMap((v1, i) => attrsForPairs.slice(i + 1).map(v2 => [v1, v2]));
248
+ const cases = [
249
+ // BASE CASE #2: If this node has a unique attribute or content attribute, return an absolute
250
+ // XPath with that attribute
251
+ UNIQUE_XPATH_ATTRIBUTES,
252
+ // BASE CASE #3: If this node has a unique pair of attributes including 'maybe' attributes,
253
+ // return an xpath based on that pair
254
+ attrPairsPermutations,
255
+ // BASE CASE #4: Look for a 'maybe' unique attribute on its own. It's better if we find one
256
+ // of these that's unique in conjunction with another attribute, but if not, that's OK.
257
+ // Better than a hierarchical query.
258
+ MAYBE_UNIQUE_XPATH_ATTRIBUTES,
259
+ // BASE CASE #5: Look to see if the node type is unique in the document
260
+ [],
261
+ ];
262
+ // It's possible that in all of these cases we don't find a truly unique selector. But
263
+ // a selector qualified by attribute with an index attached like //*[@id="foo"][1] is still
264
+ // better than a fully path-based selector. We call this a 'semi unique xpath'
265
+ let semiUniqueXpath;
266
+ // Go through each of our cases and look for selectors for each case in order
267
+ for (const attrs of cases) {
268
+ const [xpath, isFullyUnique] = getUniqueXPath(doc, domNode, attrs);
269
+ if (isFullyUnique) {
270
+ // if we ever encounter an actually unique selector, return it straightaway
271
+ return xpath;
272
+ }
273
+ else if (!semiUniqueXpath && xpath) {
274
+ // if we have a semin unique selector, and haven't already captured a semi unique selector,
275
+ // hold onto it for later. If we end up without any unique selectors from any of the cases,
276
+ // then we'll return this. But we want to make sure to return our FIRST instance of a semi
277
+ // unique selector, since it might theoretically be the best.
278
+ semiUniqueXpath = xpath;
279
+ }
280
+ }
281
+ // Once we've gone through all our cases, if we do have a semi unique xpath, send that back
282
+ if (semiUniqueXpath) {
283
+ return semiUniqueXpath;
284
+ }
285
+ // Otherwise fall back to a purely hierarchical expression of this dom node's position in the
286
+ // document as a last resort.
287
+ // First get the relative xpath of this node using tagName
288
+ let xpath = `/${domNode.nodeName}`;
289
+ // If this node has siblings of the same tagName, get the index of this node
290
+ if (domNode.parentNode) {
291
+ // Get the siblings
292
+ const childNodes = Array.prototype.slice
293
+ .call(domNode.parentNode.childNodes, 0)
294
+ .filter((childNode) => childNode.nodeType === 1 && childNode.nodeName === domNode.nodeName);
295
+ // If there's more than one sibling, append the index
296
+ if (childNodes.length > 1) {
297
+ let index = childNodes.indexOf(domNode);
298
+ xpath += `[${index + 1}]`;
299
+ }
300
+ }
301
+ // Make a recursive call to this nodes parents and prepend it to this xpath
302
+ return getOptimalXPath(doc, domNode.parentNode) + xpath;
303
+ }
304
+ catch (error) {
305
+ // If there's an unexpected exception, abort
306
+ logLocatorError('XPath', error);
307
+ return null;
308
+ }
309
+ }
310
+ /**
311
+ * Get an optimal class chain for a Node based on the getOptimalXPath method
312
+ */
313
+ export function getOptimalClassChain(doc, domNode) {
314
+ try {
315
+ // BASE CASE #1: If this isn't an element, we're above the root, return empty string
316
+ // Also return empty for 'XCUIElementTypeApplication', which cannot be found via class chain
317
+ if (!domNode.nodeName ||
318
+ domNode.nodeType !== 1 ||
319
+ domNode.nodeName === 'XCUIElementTypeApplication') {
320
+ return '';
321
+ }
322
+ // BASE CASE #2: If this node has a unique class chain based on attributes, return it
323
+ let classChain, othersWithAttr;
324
+ for (let attrName of CHECKED_CLASS_CHAIN_ATTRIBUTES) {
325
+ const attrValue = domNode.getAttribute?.(attrName);
326
+ if (_.isEmpty(attrValue)) {
327
+ continue;
328
+ }
329
+ const xpath = `//${domNode.nodeName || '*'}[@${attrName}="${attrValue}"]`;
330
+ classChain = `/${domNode.nodeName || '*'}[\`${attrName} == "${attrValue}"\`]`;
331
+ // If the XPath does not parse, move to the next unique attribute
332
+ try {
333
+ const result = xpathSelect(xpath, doc);
334
+ othersWithAttr = Array.isArray(result)
335
+ ? result
336
+ : [];
337
+ }
338
+ catch {
339
+ continue;
340
+ }
341
+ // If the attribute isn't actually unique, get its index too
342
+ if (othersWithAttr.length > 1) {
343
+ let index = othersWithAttr.indexOf(domNode);
344
+ classChain = `${classChain}[${index + 1}]`;
345
+ }
346
+ return classChain;
347
+ }
348
+ // BASE CASE #3: If this node has no unique attributes, repeat checks for its parent
349
+ // Get the relative xpath of this node using tagName
350
+ classChain = `/${domNode.nodeName}`;
351
+ // If this node has siblings of the same tagName, get the index of this node
352
+ if (domNode.parentNode) {
353
+ // Get the siblings
354
+ const childNodes = Array.prototype.slice
355
+ .call(domNode.parentNode.childNodes, 0)
356
+ .filter((childNode) => childNode.nodeType === 1 && childNode.nodeName === domNode.nodeName);
357
+ // If there's more than one sibling, append the index
358
+ if (childNodes.length > 1) {
359
+ let index = childNodes.indexOf(domNode);
360
+ classChain += `[${index + 1}]`;
361
+ }
362
+ }
363
+ // Make a recursive call to this nodes parents and prepend it to this xpath
364
+ return getOptimalClassChain(doc, domNode.parentNode) + classChain;
365
+ }
366
+ catch (error) {
367
+ // If there's an unexpected exception, abort
368
+ logLocatorError('class chain', error);
369
+ return null;
370
+ }
371
+ }
372
+ /**
373
+ * Get an optimal predicate string for a Node based on the getOptimalXPath method
374
+ * Only works for a single element - no parent/child scope
375
+ */
376
+ export function getOptimalPredicateString(doc, domNode) {
377
+ try {
378
+ // BASE CASE #1: If this isn't an element, or we're above the root, return empty string
379
+ if (!domNode.nodeName || domNode.nodeType !== 1) {
380
+ return '';
381
+ }
382
+ // BASE CASE #2: Check all attributes and try to find the best way
383
+ let xpathAttributes = [];
384
+ let predicateString = [];
385
+ let othersWithAttr;
386
+ for (let attrName of CHECKED_PREDICATE_ATTRIBUTES) {
387
+ const attrValue = domNode.getAttribute?.(attrName);
388
+ if (_.isEmpty(attrValue)) {
389
+ continue;
390
+ }
391
+ xpathAttributes.push(`@${attrName}="${attrValue}"`);
392
+ const xpath = `//*[${xpathAttributes.join(' and ')}]`;
393
+ predicateString.push(`${attrName} == "${attrValue}"`);
394
+ // If the XPath does not parse, move to the next attribute
395
+ try {
396
+ const result = xpathSelect(xpath, doc);
397
+ othersWithAttr = Array.isArray(result)
398
+ ? result
399
+ : [];
400
+ }
401
+ catch {
402
+ continue;
403
+ }
404
+ // Return as soon as the accumulated attribute combination is unique
405
+ if (othersWithAttr.length === 1) {
406
+ return predicateString.join(' AND ');
407
+ }
408
+ }
409
+ }
410
+ catch (error) {
411
+ // If there's an unexpected exception, abort
412
+ logLocatorError('predicate string', error);
413
+ return null;
414
+ }
415
+ return null;
416
+ }
417
+ /**
418
+ * Get an optimal UiAutomator selector for a Node
419
+ * Only works for elements inside the last direct child of the hierarchy (xpath: /hierarchy/*[last()] )
420
+ */
421
+ export function getOptimalUiAutomatorSelector(doc, domNode, path) {
422
+ try {
423
+ // BASE CASE #1: If this isn't an element, or we're above the root, return empty string
424
+ if (!domNode.nodeName || domNode.nodeType !== 1) {
425
+ return '';
426
+ }
427
+ // UiAutomator can only find elements inside the last direct child of the hierarchy.
428
+ // hierarchy is the child of doc (which is <xml/>), so need to get the children of its child
429
+ // BASE CASE #2: If there is no hierarchy or its children, return null
430
+ const docChildren = childNodesOf(doc);
431
+ const hierarchyChildren = _.isEmpty(docChildren)
432
+ ? []
433
+ : childNodesOf(docChildren[0]);
434
+ if (_.isEmpty(hierarchyChildren)) {
435
+ return null;
436
+ }
437
+ // BASE CASE #3: If looking for an element that is not inside
438
+ // the last direct child of the hierarchy, return null
439
+ const lastHierarchyChildIndex = (hierarchyChildren.length - 1).toString();
440
+ let pathArray = path.split('.');
441
+ const requestedHierarchyChildIndex = pathArray[0];
442
+ if (requestedHierarchyChildIndex !== lastHierarchyChildIndex) {
443
+ return null;
444
+ }
445
+ // In order to use only the last direct child of the hierarchy as the new scope,
446
+ // need to recreate it as a Document (Node -> XML -> Document),
447
+ // then modify the path by changing the first index,
448
+ // and finally recreate the domNode, since it still references the original parent
449
+ const lastHierarchyChild = hierarchyChildren[parseInt(lastHierarchyChildIndex, 10)];
450
+ const newXml = domToXML(lastHierarchyChild);
451
+ // wrap the new XML in a dummy tag which will have the node type Document
452
+ const newDoc = xmlToDOM(`<dummy>${newXml}</dummy>`);
453
+ pathArray[0] = '0';
454
+ const newPath = pathArray.join('.');
455
+ const newDomNode = findDOMNodeByPath(newPath, newDoc);
456
+ // BASE CASE #4: Check all attributes and try to find unique ones
457
+ let uiSelector, othersWithAttr, othersWithAttrMinCount, mostUniqueSelector;
458
+ for (const [attrName, attrTranslation] of CHECKED_UIAUTOMATOR_ATTRIBUTES) {
459
+ const attrValue = newDomNode.getAttribute?.(attrName);
460
+ if (_.isEmpty(attrValue)) {
461
+ continue;
462
+ }
463
+ const xpath = `//${newDomNode.nodeName}[@${attrName}="${attrValue}"]`;
464
+ uiSelector = `new UiSelector().${attrTranslation}("${attrValue}")`;
465
+ // If the XPath does not parse, move to the next unique attribute
466
+ try {
467
+ const result = xpathSelect(xpath, newDoc);
468
+ othersWithAttr = Array.isArray(result)
469
+ ? result
470
+ : [];
471
+ }
472
+ catch {
473
+ continue;
474
+ }
475
+ // If the attribute is unique, return it, otherwise save it and add an index,
476
+ // but only if it returns the least number of elements
477
+ if (othersWithAttr.length === 1) {
478
+ return uiSelector;
479
+ }
480
+ else if (!othersWithAttrMinCount ||
481
+ othersWithAttr.length < othersWithAttrMinCount) {
482
+ othersWithAttrMinCount = othersWithAttr.length;
483
+ mostUniqueSelector = `${uiSelector}.instance(${othersWithAttr.indexOf(newDomNode)})`;
484
+ }
485
+ }
486
+ // BASE CASE #5: Did not find any unique attributes - use the 'most unique' selector
487
+ if (mostUniqueSelector) {
488
+ return mostUniqueSelector;
489
+ }
490
+ }
491
+ catch (error) {
492
+ // If there's an unexpected exception, abort
493
+ logLocatorError('uiautomator selector', error);
494
+ return null;
495
+ }
496
+ return null;
497
+ }
498
+ function logLocatorError(strategy, error) {
499
+ log.error(`The most optimal ${strategy} could not be determined because an error was thrown: '${error}'`);
500
+ }
501
+ //# sourceMappingURL=locator-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locator-generation.js","sourceRoot":"","sources":["../../src/locators/locator-generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const log: import("@appium/types/build/lib/logger.js").AppiumLogger;
2
+ export default log;
3
+ export { log };
4
+ export declare const trace: (message: string) => void;
5
+ export declare const error: (message: string) => void;
@@ -0,0 +1,9 @@
1
+ import { logger } from '@appium/support';
2
+ const log = logger.getLogger('mcp-appium');
3
+ export default log;
4
+ export { log };
5
+ // For backward compatibility, export as named exports
6
+ // Note: @appium/support logger doesn't have trace method, using debug instead
7
+ export const trace = (message) => log.debug(message);
8
+ export const error = (message) => log.error(message);
9
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/locators/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAE3C,eAAe,GAAG,CAAC;AACnB,OAAO,EAAE,GAAG,EAAE,CAAC;AAEf,sDAAsD;AACtD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Document as XMLDocument, Node as XMLNode } from '@xmldom/xmldom';
2
+ export declare const xmlToDOM: (string: string) => XMLDocument;
3
+ export declare const domToXML: (dom: XMLNode) => string;
4
+ /**
5
+ * Get the child nodes of a Node object
6
+ *
7
+ * @param {XMLNode} domNode
8
+ * @returns {Array<XMLNode>} list of Nodes
9
+ */
10
+ export declare function childNodesOf(domNode: XMLNode): XMLNode[];
11
+ /**
12
+ * Look up an element in the Document source using the provided path
13
+ *
14
+ * @param {string} path a dot-separated string of indices
15
+ * @param {XMLDocument} sourceDoc app source in Document format
16
+ * @returns {XMLNode} element node
17
+ */
18
+ export declare function findDOMNodeByPath(path: string, sourceDoc: XMLDocument): XMLNode;
19
+ interface ElementAttributes {
20
+ [key: string]: string;
21
+ }
22
+ interface JSONElement {
23
+ children: JSONElement[];
24
+ tagName: string;
25
+ attributes: ElementAttributes;
26
+ path: string;
27
+ }
28
+ /**
29
+ * Look up an element in the JSON source using the provided path
30
+ *
31
+ * @param {string} path a dot-separated string of indices
32
+ * @param {JSONElement} sourceJSON app source in JSON format
33
+ * @returns {JSONElement} element details in JSON format
34
+ */
35
+ export declare function findJSONElementByPath(path: string, sourceJSON: JSONElement): JSONElement;
36
+ /**
37
+ * Translates sourceXML to JSON
38
+ *
39
+ * @param {string} sourceXML
40
+ * @returns {JSONElement} source in JSON format
41
+ */
42
+ export declare function xmlToJSON(sourceXML: string): JSONElement;
43
+ export type { ElementAttributes, JSONElement };