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,284 @@
1
+ ---
2
+ title: Session Capabilities
3
+ ---
4
+
5
+ "Capabilities" is the name given to the set of parameters used to start an Appium session. The
6
+ information in the set describes what sort of "capabilities" you want your session to have, for
7
+ example, a certain mobile operating system or a certain version of a device. Capabilities are
8
+ represented as key-value pairs, with values allowed to be any valid JSON type, including
9
+ other objects.
10
+
11
+ The W3C WebDriver spec's [section on Capabilities](https://w3c.github.io/webdriver/#capabilities)
12
+ identifies a small set of 10 standard capabilities, including the following:
13
+
14
+ | Capability Name | Type | Description |
15
+ | ---------------- | -------- | ---------------------------------------------- |
16
+ | `browserName` | `string` | The name of the browser to launch and automate |
17
+ | `browserVersion` | `string` | The specific version of the browser |
18
+ | `platformName` | `string` | The type of platform hosting the browser |
19
+
20
+ ## Common Appium Capabilities
21
+
22
+ Appium understands these browser-focused capabilities, but introduces a number of additional
23
+ capabilities. According to the WebDriver spec, any
24
+ non-standard "extension capabilities" must include a namespace prefix (signifying the vendor
25
+ introducing the capability), ending in a `:`. Appium's vendor prefix is
26
+ `appium:`, and so any Appium-specific capabilities must include this prefix. Depending on which
27
+ client you are using, the prefix may be added automatically or in conjunction with certain
28
+ interfaces, but it is always a good practice to explicitly include it for clarity.
29
+
30
+ Here is a list of all the globally-recognized Appium capabilities:
31
+
32
+ !!! info
33
+
34
+ ```
35
+ Individual drivers and plugins can support other capabilities, so refer to their documentation
36
+ for lists of specific capability names. Some drivers may also not support all of these capabilities
37
+ ```
38
+
39
+ | <div style="width:12em">Capability</div> | Type | Required? | Description |
40
+ | ---------------------------------------- | --------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | `platformName` | `string` | yes | The type of platform hosting the app or browser |
42
+ | `appium:automationName` | `string` | yes | The name of the Appium driver to use |
43
+ | `browserName` | `string` | no | The name of the browser to launch and automate, if the driver supports web browsers as a special case |
44
+ | `appium:app` | `string` | no | The path to an installable application |
45
+ | `appium:deviceName` | `string` | no | The name of a particular device to automate, e.g., `iPhone 14` (currently only actually useful for specifying iOS simulators, since in other situations it's typically recommended to use a specific device id via the `appium:udid` capability). |
46
+ | `appium:platformVersion` | `string` | no | The version of a platform, e.g., for iOS, `16.0` |
47
+ | `appium:newCommandTimeout` | `number` | no | The number of seconds the Appium server should wait for clients to send commands before deciding that the client has gone away and the session should shut down. `60` seconds by default. Setting it to zero disables the timer. |
48
+ | `appium:noReset` | `boolean` | no | If true, instruct an Appium driver to avoid its usual reset logic during session start and cleanup (default `false`) |
49
+ | `appium:fullReset` | `boolean` | no | If true, instruct an Appium driver to augment its usual reset logic with additional steps to ensure maximum environmental reproducibility (default `false`) |
50
+ | `appium:eventTimings` | `boolean` | no | If true, instruct an Appium driver to collect [Event Timings](./event-timing.md) (default `false`) |
51
+ | `appium:printPageSourceOnFindFailure` | `boolean` | no | If true, collect the page source and print it to the Appium log whenever a request to find an element fails (default `false`) |
52
+
53
+ Some drivers place more complex constraints on capabilities as a group. For example, while the
54
+ `appium:app` and `browserName` capabilities are listed above as optional, if you want to launch
55
+ a session with a specific app, the XCUITest driver requires that at least one of `appium:app`,
56
+ `browserName`, or `appium:bundleId` are included in the capabilities (otherwise it will not know
57
+ what app to install and/or launch and will simply open a session on the home screen). Each driver
58
+ will document how it interprets these capabilities and any other platform-specific requirements.
59
+
60
+ !!! note
61
+
62
+ ```
63
+ Capabilities are like parameters used when starting a session. After the capabilities are sent
64
+ and the session is started, they cannot be changed. If a driver supports updating aspects of
65
+ its behaviour in the course of a session, it will provide a [Setting](./settings.md) for this
66
+ purpose instead of, or in addition to, a capability.
67
+ ```
68
+
69
+ Each Appium client has its own way of constructing capabilities and starting a session. For
70
+ examples of doing this in each client library, head to the [Ecosystem](../ecosystem/index.md) page
71
+ and click through to the appropriate client documentation.
72
+
73
+ ## BiDi Protocol Support
74
+
75
+ Appium supports [WebDriver BiDi](https://w3c.github.io/webdriver-bidi/) protocol since base–driver 9.5.0.
76
+ The actual behavior depends on individual drivers while the Appium and the baseーdriver support the protocol.
77
+ Please make sure if a driver supports the protocol and what kind of commands/events it supports in the documentation.
78
+
79
+ | Capability Name | Type | Description |
80
+ | --------------- | --------- | ------------------------------------------------------- |
81
+ | `webSocketUrl` | `boolean` | To enable BiDi protocol in the session. |
82
+
83
+ ## Using `appium:options` to Group Capabilities
84
+
85
+ If you use a lot of `appium:` capabilities in your tests, it can get a little repetitive. You can
86
+ combine all capabilities as an object value of a single `appium:options` capability instead, in
87
+ which case you don't need to use prefixes on the capabilities inside the object. For example:
88
+
89
+ ```json
90
+ {
91
+ "platformName": "iOS",
92
+ "appium:options": {
93
+ "automationName": "XCUITest",
94
+ "platformVersion": "16.0",
95
+ "app": "/path/to/your.app",
96
+ "deviceName": "iPhone 12",
97
+ "noReset": true
98
+ }
99
+ }
100
+ ```
101
+
102
+ Note that constructing a capability value which is itself an object differs by language; refer to
103
+ your client documentation for further examples on how to achieve this.
104
+
105
+ !!! warning
106
+
107
+ ```
108
+ If you include the same capabilities both inside and outside of `appium:options`, the values
109
+ inside of `appium:options` take precedence.
110
+ ```
111
+
112
+ ## Always-Match and First-Match Capabilities
113
+
114
+ The W3C spec allows clients to give the Appium server some flexibility in the kind of session it
115
+ creates in response to a new session request. This is through the concept of "always-match" and
116
+ "first-match" capabilities:
117
+
118
+ - Always-match capabilities consist of a single set of capabilities, every member of which must
119
+ be satisfied by the server in order for the new session request to proceed.
120
+ - First-match capabilities consist of an array of capability sets. Each set is merged with the
121
+ always-match capabilities, and the first set that the server knows how to handle will be the set
122
+ that is used to start the session.
123
+
124
+ !!! note
125
+
126
+ ```
127
+ Check out the [spec itself](https://w3c.github.io/webdriver/#processing-capabilities) or
128
+ a [summarized version](https://github.com/jlipps/simple-wd-spec#processing-capabilities) for
129
+ a more in-depth description of how capabilities are processed.
130
+ ```
131
+
132
+ In practice, use of first-match capabilities is not necessary or recommended for use with Appium.
133
+ Instead, we recommend that you define the explicit set of capabilities you want the Appium
134
+ server to handle. These will be encoded as the always-match capabilities, and the array of
135
+ first-match capabilities will be empty.
136
+
137
+ That being said, Appium _does_ understand always-match and first-match capabilities as
138
+ defined in the W3C spec, so if you use these features, Appium will work as expected. The process of
139
+ defining always-match and first-match capabilities is unique to each client library, so refer to
140
+ the documentation for your client library to see examples of how it works.
141
+
142
+ ## Special Notes for Cloud Providers
143
+
144
+ !!! warning
145
+
146
+ ```
147
+ This section is not intended for end-users of Appium; it is intended for developers building
148
+ Appium-compatible cloud services.
149
+ ```
150
+
151
+ When managing an Appium cloud, your users may wish to target various independent versions of Appium
152
+ drivers and plugins. It is of course up to each service provider how they wish to implement the
153
+ discovery, installation, and availability of any official or third party drivers or plugins. But
154
+ the Appium team does provide several suggestions, for consistency across the industry. _These are
155
+ recommendations only,_ and not a standard, but adopting it will help users to navigate the increased
156
+ complexity that working with Appium in a cloud environment may bring.
157
+
158
+ ### Suggested capabilities
159
+
160
+ In addition to the standard `platformName`, `appium:deviceName`, `appium:automationName`, and
161
+ `appium:platformVersion`, we recommend adopting the capability `$cloud:appiumOptions`, where the
162
+ label `$cloud` is not meant to be interpreted literally but instead should be replaced by your
163
+ vendor prefix (so for HeadSpin it would be `headspin`, Sauce Labs it would be `sauce`, and
164
+ BrowserStack it would be `browserstack`, to name just a few examples). The `$cloud:appiumOptions`
165
+ capability would itself be a JSON object, with the following internal keys:
166
+
167
+ | <div style="width:10em">Capability</div> | Usage | Example |
168
+ | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
169
+ | `version` | The version of the Appium server that is used to host and manage drivers. If omitted, the behavior is left up to the provider, but the recommendation would be to provide the latest official version. | `2.0.0` |
170
+ | `automationVersion` | The version of the driver (as specified by `appium:automationName`) that should be used. | `1.55.2` |
171
+ | `automation` | The name of a custom driver to use (see below for more info). This would override `appium:automationName` and `$cloud:automationVersion`. | `{"name": "@org/custom-driver", "source": "github", "package": "custom-driver"}` |
172
+ | `plugins` | The list of plugins (and potentially versions of plugins) that should be activated (see below for more info). | `["images", "universal-xml"]` |
173
+
174
+ ### Basic example
175
+
176
+ Appium extensions (drivers and plugins) have a set of properties that specify where they can be
177
+ installed from. Cloud providers are obviously under no obligation to provide support for
178
+ arbitrarily specified extensions, seeing as these may represent untrusted code running in a managed
179
+ environment. In the case where arbitrary extensions are not supported, the `appium:automationName`,
180
+ `$cloud:automationVersion`, and `$cloud:appiumPlugins` capabilities should be sufficient. See the
181
+ following JSON object representing capabilities for a session:
182
+
183
+ ```json
184
+ {
185
+ "platformName": "iOS",
186
+ "appium:platformVersion": "14.4",
187
+ "appium:deviceName": "iPhone 11",
188
+ "appium:app": "Some-App.app.zip",
189
+ "appium:automationName": "XCUITest",
190
+ "$cloud:appiumOptions": {
191
+ "version": "2.0.0",
192
+ "automationVersion": "3.52.0",
193
+ "plugins": ["images"]
194
+ }
195
+ }
196
+ ```
197
+
198
+ This set of capabilities requests an Appium 2+ server supporting the XCUITest driver at version
199
+ `3.52.0`, and the `images` plugin active. This set is easy for a cloud provider to verify. The
200
+ cloud provider can obviously do anything it wants in response to these capabilities, including
201
+ downloading Appium and driver and plugin packages on the fly, or erroring out if the versions
202
+ requested are not in a supported set, or if the plugin is not supported, etc...
203
+
204
+ ### Basic example with `appium:options`
205
+
206
+ The previous example still looks a bit disorganized, so of course we also recommend that cloud
207
+ providers support the `appium:options` capability as detailed above, which could turn the previous
208
+ set of capabilities into the following:
209
+
210
+ ```json
211
+ {
212
+ "platformName": "iOS",
213
+ "appium:options": {
214
+ "platformVersion": "14.4",
215
+ "deviceName": "iPhone 11",
216
+ "app": "Some-App.app.zip",
217
+ "automationName": "XCUITest"
218
+ },
219
+ "$cloud:appiumOptions": {
220
+ "version": "2.0.0",
221
+ "automationVersion": "3.52.0",
222
+ "plugins": ["images"]
223
+ }
224
+ }
225
+ ```
226
+
227
+ ### Extension objects
228
+
229
+ Some service providers may wish to dynamically allow access to all of the features of the Appium
230
+ 2 CLI, including downloading arbitrary drivers and plugins. To represent these extensions, we can
231
+ define special JSON "extension objects", with the following keys:
232
+
233
+ - `name`: the name of the extension. This would be an `npm` package name (if downloading from `npm`),
234
+ or a `git` or GitHub spec (if downloading from a `git` server or GitHub).
235
+ - `version`: the version of the extension, e.g., the `npm` package version or `git` SHA.
236
+ - (optional) `source`: a denotation of where the extension can be downloaded from. It is recommended
237
+ to support the following values: `appium`, `npm`, `git`, `github`. Here, `appium` means "Appium's
238
+ own official list", and should be the default value if this key is not included.
239
+ - (optional) `package`: when downloading extensions from `git` or GitHub, the `npm` package name of
240
+ the extension must also be provided. This is optional for non-`git` sources.
241
+
242
+ Since each session is handled by a single driver, the `$cloud:appiumOptions`/`$automation`
243
+ capability could be used with an extension object value to denote this driver, for example:
244
+
245
+ ```json
246
+ {
247
+ "$cloud:appiumOptions": {
248
+ "automation": {
249
+ "name": "git+https://some-git-host.com/custom-driver-project.git",
250
+ "version": "some-git-sha",
251
+ "source": "git",
252
+ "package": "driver-npm-package-name"
253
+ }
254
+ }
255
+ }
256
+ ```
257
+
258
+ And since sessions can handle multiple plugins, each value in the list of `$cloud:appiumPlugins`
259
+ could also be an extension object rather than a string, so that specific versions could be
260
+ requested:
261
+
262
+ ```json
263
+ {
264
+ "$cloud:appiumOptions": {
265
+ "plugins": [{
266
+ "name": "images",
267
+ "version": "1.1.0"
268
+ }, {
269
+ "name": "my-github-org/my-custom-plugin",
270
+ "version": "a83f2e",
271
+ "source": "github",
272
+ "package": "custom-plugin"
273
+ }]
274
+ }
275
+ }
276
+ ```
277
+
278
+ These serve as illustrative examples for the recommendations here. Of course, it is up to the
279
+ service providers to implement the handling of these capabilities at their front end / load
280
+ balancer, to perform any error checking, or to actually run any of the `appium driver` or `appium
281
+ plugin` CLI commands that support the end user's request. This section is merely a suggestion as to
282
+ how service providers might design their user-facing capabilities API in a way which in principle
283
+ supports all of the capabilities that Appium itself would provide to the end user if they were
284
+ running Appium on their own.
@@ -0,0 +1,102 @@
1
+ ---
2
+ title: The Appium Config File
3
+ ---
4
+
5
+ Instead of passing arguments on the command line to Appium, you may add them to a special config
6
+ file. Appium will read values from this config file when it runs. (Please note that CLI arguments
7
+ have _precedence_ over configuration files; if a value is set in a config file _and_ via CLI
8
+ argument, the CLI argument is preferred.)
9
+
10
+ ## Supported Config File Formats
11
+
12
+ You can store your config data in the following kinds of files:
13
+
14
+ - JSON
15
+ - YAML
16
+ - JS (a JavaScript file exporting a JS object)
17
+ - CJS (the same as above; the extension is for common JS)
18
+
19
+ !!! warning
20
+
21
+ ```
22
+ Note: Configuration files in ESM format are not currently supported.
23
+ ```
24
+
25
+ ## Supported Config File Locations
26
+
27
+ Configuration files can be named anything, but the following filenames will be automatically
28
+ discovered and loaded by Appium:
29
+
30
+ - `.appiumrc.json` (recommended)
31
+ - `.appiumrc.yaml`
32
+ - `.appiumrc.yml`
33
+ - `.appiumrc.js`
34
+ - `.appiumrc.cjs`
35
+ - `appium.config.js`
36
+ - `appium.config.cjs`
37
+ - `.appiumrc` (which is considered to be JSON)
38
+
39
+ Further, _if your project uses Node.js,_ you can use store the configuration inside an `appium`
40
+ property in your `package.json` and it will be automatically discovered.
41
+
42
+ ### Config File Search
43
+
44
+ Appium will search _up_ the directory tree from the current working directory for one of these
45
+ files. If it reaches the current user's home directory or filesystem root, it will stop looking.
46
+
47
+ To specify a _custom_ location for your config file, use `appium --config /path/to/config/file`.
48
+
49
+ #### Configuration File Format
50
+
51
+ First, you might want to look at some examples:
52
+
53
+ - [Appium Configuration - JSON](https://github.com/appium/appium/blob/master/packages/appium/sample-code/appium.config.sample.json)
54
+ - [Appium Configuration - YAML](https://github.com/appium/appium/blob/master/packages/appium/sample-code/appium.config.sample.yaml)
55
+ - [Appium Configuration - JS](https://github.com/appium/appium/blob/master/packages/appium/sample-code/appium.config.sample.js)
56
+
57
+ A description of the format is available, as well:
58
+
59
+ - [Appium Configuration File JSON Schema](https://github.com/appium/appium/blob/master/packages/schema/lib/appium-config.schema.json)
60
+ - [TypeScript declarations for Appium Configuration](https://github.com/appium/appium/blob/master/packages/types/lib/config.ts)
61
+
62
+ To describe in words, the config file will have a root `server` property, and all arguments are
63
+ child properties. For certain properties which must be supplied on the command-line as
64
+ comma-delimited lists, JSON strings, and/or external filepaths, these instead will be of their
65
+ "native" type. For example, `--use-plugins <value>` needs `<value>` to be comma-delimited string
66
+ or path to a delimited file. However, the config file just wants an array, e.g.,:
67
+
68
+ ```json
69
+ {
70
+ "server": {
71
+ "use-plugins": ["my-plugin", "some-other-plugin"]
72
+ }
73
+ }
74
+ ```
75
+
76
+ ## Configuring extensions (drivers and plugins)
77
+
78
+ For `driver`-and-`plugin`-specific configuration, these live under the `server.driver` and
79
+ `server.plugin` properties, respectively. Each driver or plugin will have its own named property,
80
+ and the values of any specific configuration it provides are under this. For example:
81
+
82
+ ```json
83
+ {
84
+ "server": {
85
+ "driver": {
86
+ "xcuitest": {
87
+ "webkit-debug-proxy-port": 5400
88
+ }
89
+ }
90
+ }
91
+ }
92
+ ```
93
+
94
+ !!! note
95
+
96
+ ```
97
+ The above configuration corresponds to the `--driver-xcuitest-webkit-debug-proxy-port` CLI argument.
98
+ ```
99
+
100
+ All properties are case-sensitive and will be in
101
+ [kebab-case](https://en.wikipedia.org/wiki/Naming_convention_\(programming\)#Delimiter-separated_words).
102
+ For example, `callback-port` is allowed, but `callbackPort` is not.
@@ -0,0 +1,44 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Managing Contexts
6
+ ---
7
+
8
+ A common feature of many app platforms is the ability for developers to embed web content inside of
9
+ the platform-native app frame. This allows developers to leverage web technologies or existing web
10
+ content for some or all of the app functionality. However, the additional complexity of mixing
11
+ "modes" within a single application can make it difficult for automation tools that are designed to
12
+ target the "native" elements and behaviours.
13
+
14
+ Appium provides a set of APIs for working with different app modes, called "contexts", that Appium
15
+ drivers can implement if they support automation commands in these different modes. There are three
16
+ basic commands that Appium has added to the W3C WebDriver spec for this purpose:
17
+
18
+ | Command Name | Method/Route | Params | Description | Returns |
19
+ | --------------------- | --------------------------- | ------------------------------------ | --------------------------------------------- | --------------- |
20
+ | `Get Contexts` | `GET /session/:id/contexts` | | Get a list of the available contexts | `array<string>` |
21
+ | `Get Current Context` | `GET /session/:id/context` | | Get the name of the active context | `string` |
22
+ | `Set Context` | `POST /session/:id/context` | `name` (`string`) | Switch into the context with the given `name` | `null` |
23
+
24
+ This API is flexible enough to handle a variety of semantic interpretations on the part of the
25
+ driver. For example, the XCUITest driver includes two kinds of contexts: the native app context and
26
+ any active webviews, as one context per webview. A call to `Get Contexts` will return the list of
27
+ names, which you as a test author can sift through and use to switch into the appropriate context.
28
+ As another example, the Appium Altunity
29
+ Plugin introduces the concept of a `UNITY`
30
+ context, which encapsulates all the plugin's specific behaviour to ensure that when outside of the
31
+ `UNITY` context, the active driver's usual command implementations are used.
32
+
33
+ It is important to note that a call to `Get Contexts` will always contain at least one context,
34
+ conventionally but not necessarily named `NATIVE_APP`. This is the default active context.
35
+
36
+ Depending on the type of context you're in, the operation of the driver might change. The XCUITest
37
+ driver, when targeting a webview context, will not run its typical routines for finding and
38
+ interacting with elements. Instead, it will run a different set of routines appropriate to web
39
+ elements. This might have a variety of consequences, like supporting a different set of locator
40
+ strategies.
41
+
42
+ The command names in the table above are generic references to the commands and not code examples.
43
+ For examples of how to access the Context API in the language-specific client libraries, please
44
+ visit the documentation for a given library.
@@ -0,0 +1,75 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Retrieving Event Timings
6
+ ---
7
+
8
+ Appium comes with the ability to retrieve timing information about startup
9
+ information and command length. This is an advanced feature that is controlled
10
+ by the use of the `appium:eventTimings` capability (set it to `true` to log event
11
+ timings).
12
+
13
+ With this capability turned on, the `POST /session/:id/appium/events` response (i.e.,
14
+ the response to `driver.logs.events` or similar, depending on client) will be
15
+ decorated with an `events` property. This is the structure of that `events`
16
+ property:
17
+
18
+ ```
19
+ {
20
+ "<event_type>": [<occurence_timestamp_1>, ...],
21
+ "commands": [
22
+ {
23
+ "cmd": "<command_name>",
24
+ "startTime": <js_timestamp>,
25
+ "endTime": <js_timestamp>
26
+ },
27
+ ...
28
+ ]
29
+ }
30
+ ```
31
+
32
+ In other words, the `events` property has 2 kinds of properties of its own:
33
+
34
+ - Properties which are the names of event types
35
+ - The `commands` property
36
+
37
+ Properties which are names of event types correspond to an array of timestamps
38
+ when that event happened. It's an array because events might happen multiple
39
+ times in the course of a session. Examples of event types include:
40
+
41
+ - `newSessionRequested`
42
+ - `newSessionStarted`
43
+
44
+ (Individual drivers will define their own event types, so we do not have an
45
+ exhaustive list to share here. It's best to actually get one of these responses
46
+ from a real session to inspect the possible event types.)
47
+
48
+ The `commands` property is an array of objects. Each object has the name of the
49
+ Appium-internal command (for example `click`), as well as the time the command
50
+ started processing and the time it finished processing.
51
+
52
+ With this data, you can calculate the time between events, or a strict timeline
53
+ of events, or statistical information about average length of a certain type of
54
+ command, and so on.
55
+
56
+ You can only receive data about events that have happened when you make the
57
+ call to `/session/:id/appium/events`, so the best time to get data about an entire session is
58
+ right before quitting it.
59
+
60
+ The Appium team maintains an event timings parser tool that can be used to
61
+ generate various kinds of reports from event timings output:
62
+ [appium/appium-event-parser](https://github.com/appium/appium-event-parser).
63
+
64
+ !!! note
65
+
66
+ ```
67
+ In the past, events were available as a part of `GET /session/:id` response
68
+ ```
69
+
70
+ ## Add a custom event
71
+
72
+ You can add custom events that will show up in the event timings data. You can send a custom event
73
+ name to the Appium server using the [Log Custom Event API](../reference/api/appium.md#logcustomevent),
74
+ and the server will store the timestamp. The [Get Log Events](../reference/api/appium.md#getlogevents)
75
+ command can be used to retrieve named events' timestamps later on.
@@ -0,0 +1,142 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Execute Methods
6
+ ---
7
+
8
+ Because the scope of commands implemented in Appium drivers is broader than the scope of commands
9
+ defined by the W3C WebDriver spec, Appium needs a way for these "extended" commands to be accessible
10
+ by client libraries. There are two main strategies for this:
11
+
12
+ 1. Appium drivers define new W3C-compatible API routes, and Appium clients are updated to include
13
+ support for those new routes.
14
+ 2. Appium drivers define so-called "Execute Methods" which provide new functionality by
15
+ overloading the existing `Execute Script` command which is already available in any WebDriver-
16
+ based client library (including all Selenium and Appium clients).
17
+
18
+ There are pros and cons for each strategy, but it is ultimately up to the extension author to
19
+ decide how they wish implement new commands.
20
+
21
+ This guide is designed to specifically help you understand the "Execute Method" strategy. This
22
+ pattern is commonly used in official Appium drivers and other third-party extensions.
23
+ Here's an example of how the `Execute Script` command is designed to work in the world of WebDriver
24
+ and browser automation:
25
+
26
+ \=== "JS (WebDriverIO)"
27
+
28
+ ````
29
+ ```js
30
+ await driver.executeScript('return arguments[0] + arguments[1]', [3, 4])
31
+ ```
32
+ ````
33
+
34
+ \=== "Java"
35
+
36
+ ````
37
+ ```java
38
+ JavascriptExecutor jsDriver = (JavascriptExecutor) driver;
39
+ jsDriver.executeScript("return arguments[0] + arguments[1]", 3, 4);
40
+ ```
41
+ ````
42
+
43
+ \=== "Python"
44
+
45
+ ````
46
+ ```py
47
+ driver.execute_script('return arguments[0] + arguments[1]', 3, 4)
48
+ ```
49
+ ````
50
+
51
+ \=== "Ruby"
52
+
53
+ ````
54
+ ```rb
55
+ driver.execute_script 'return arguments[0] + arguments[1]', 3, 4
56
+ ```
57
+ ````
58
+
59
+ \=== "C#"
60
+
61
+ ````
62
+ ```dotnet
63
+ ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0] + arguments[1]", 3, 4);
64
+ ```
65
+ ````
66
+
67
+ What's happening here is that we are defining a snippet of Javascript (technically,
68
+ a function body) to be executed within the web browser. The client can send arguments which are
69
+ serialized, sent over HTTP, and finally provided to the function as parameters. In this example,
70
+ we are essentially defining an addition function. The return value of the `Execute Script` command
71
+ is whatever the return value of the Javascript snippet is! In the case of this example, that value
72
+ would be the number `7` (`3` + `4`).
73
+
74
+ Each client library has its own way of calling the command and providing any arguments to the script
75
+ function, but the function itself—the snippet—is always a string and is the same across all languages.
76
+
77
+ In the world of Appium, we are usually not automating a web browser, which means this command is
78
+ not particularly useful. But it _is_ useful as a way to encode the name of an arbitrary command and
79
+ to provide parameters. For example, the XCUITest
80
+ Driver has implemented a command that lets a client
81
+ terminate a running application if you know the ID (the `bundleId`) of the app. The way that the
82
+ driver makes this command available is via the Execute Method `mobile: terminateApp`. Instead of
83
+ providing a JavaScript function to the "Execute Script" command, the user provides a _known string_
84
+ as defined by the driver. The only other thing a client needs to know is the set of
85
+ parameters for the method, which are documented by the driver. In this case, we have a parameter
86
+ named `bundleId`, whose value should be a string encoding the ID of the app to terminate. Here is
87
+ how this Execute Method would be called:
88
+
89
+ \=== "JS (WebDriverIO)"
90
+
91
+ ````
92
+ ```js
93
+ await driver.executeScript('mobile: terminateApp', [{bundleId: 'com.my.app'}])
94
+ ```
95
+ ````
96
+
97
+ \=== "Java"
98
+
99
+ ````
100
+ ```java
101
+ JavascriptExecutor jsDriver = (JavascriptExecutor) driver;
102
+ jsDriver.executeScript("mobile: terminateApp", ImmutableMap.of("bundleId", "com.my.app"));
103
+ ```
104
+ ````
105
+
106
+ \=== "Python"
107
+
108
+ ````
109
+ ```py
110
+ driver.execute_script('mobile: terminateApp', {'bundleId': 'com.my.app'})
111
+ ```
112
+ ````
113
+
114
+ \=== "Ruby"
115
+
116
+ ````
117
+ ```rb
118
+ driver.execute_script 'mobile: terminateApp', { bundleId: 'com.my.app' }
119
+ ```
120
+ ````
121
+
122
+ \=== "C#"
123
+
124
+ ````
125
+ ```dotnet
126
+ ((IJavaScriptExecutor)driver).ExecuteScript("mobile: terminateApp",
127
+ new Dictionary<string, string> { { "bundleId", "com.my.app" } });
128
+
129
+ ```
130
+ ````
131
+
132
+ There are two important differences in using Appium Execute Methods from vanilla Selenium
133
+ Javascript execution:
134
+
135
+ 1. The script string is just a command name; it will be provided by the driver documentation
136
+ 2. The standard way to provide parameters is as a _single_ object with keys representing parameter
137
+ names and values representing parameter values. So in this case, we had to specify both the
138
+ parameter name (`bundleId`) as the key of the parameters object, and the parameter value
139
+ (`com.my.app`) as the value for that key. A driver can define parameters as _required_ or _optional_.
140
+
141
+ Of course, always refer to the documentation for the particular Execute Method in case the author
142
+ has made any alterations to the standard access method.