appium-mcp 1.8.10 → 1.8.12

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 (452) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.json +12 -3
  3. package/server.json +2 -2
  4. package/.github/dependabot.yml +0 -17
  5. package/.github/workflows/ci.yml +0 -44
  6. package/.github/workflows/pr-title.yml +0 -10
  7. package/.github/workflows/publish.yml +0 -66
  8. package/.gitmodules +0 -9
  9. package/.prettierignore +0 -29
  10. package/.prettierrc +0 -9
  11. package/.releaserc +0 -37
  12. package/docs/CONTRIBUTING.md +0 -424
  13. package/eslint.config.js +0 -23
  14. package/examples/android-gmail.md +0 -7
  15. package/examples/android-todo-app.md +0 -9
  16. package/jest.config.js +0 -23
  17. package/src/devicemanager/adb-manager.ts +0 -164
  18. package/src/devicemanager/ios-manager.ts +0 -145
  19. package/src/index.ts +0 -45
  20. package/src/locators/element-filter.ts +0 -136
  21. package/src/locators/generate-all-locators.ts +0 -150
  22. package/src/locators/locator-generation.ts +0 -657
  23. package/src/locators/source-parsing.ts +0 -149
  24. package/src/logger.ts +0 -11
  25. package/src/resources/caps.json +0 -697
  26. package/src/resources/index.ts +0 -8
  27. package/src/resources/java/template.ts +0 -83
  28. package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +0 -28
  29. package/src/resources/submodules/appium/CHANGELOG.md +0 -45
  30. package/src/resources/submodules/appium/CONDUCT.md +0 -48
  31. package/src/resources/submodules/appium/GOVERNANCE.md +0 -185
  32. package/src/resources/submodules/appium/IDEAS.md +0 -16
  33. package/src/resources/submodules/appium/README.md +0 -221
  34. package/src/resources/submodules/appium/ROADMAP.md +0 -30
  35. package/src/resources/submodules/appium/SPONSORS.md +0 -3
  36. package/src/resources/submodules/appium/docs/README.md +0 -6
  37. package/src/resources/submodules/appium/docs/payout.md +0 -35
  38. package/src/resources/submodules/appium/packages/appium/CHANGELOG.md +0 -1437
  39. package/src/resources/submodules/appium/packages/appium/README.md +0 -221
  40. package/src/resources/submodules/appium/packages/appium/docs/en/blog/index.md +0 -2
  41. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-appiumconf2024.md +0 -45
  42. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-browserstack-as-strategic-partner.md +0 -46
  43. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-headspin-as-development-partner.md +0 -47
  44. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-strategic-partner.md +0 -42
  45. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sauce-labs-as-strategic-partner.md +0 -36
  46. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sponsorship-program.md +0 -48
  47. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/appium3.md +0 -40
  48. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/hello-world.md +0 -15
  49. package/src/resources/submodules/appium/packages/appium/docs/en/contributing/index.md +0 -150
  50. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-docs.md +0 -86
  51. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-doctor-checks.md +0 -141
  52. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-drivers.md +0 -860
  53. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +0 -514
  54. package/src/resources/submodules/appium/packages/appium/docs/en/developing/config-system.md +0 -451
  55. package/src/resources/submodules/appium/packages/appium/docs/en/developing/index.md +0 -18
  56. package/src/resources/submodules/appium/packages/appium/docs/en/developing/sensitive.md +0 -49
  57. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/clients.md +0 -132
  58. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/drivers.md +0 -207
  59. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/index.md +0 -45
  60. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/plugins.md +0 -138
  61. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/tools.md +0 -83
  62. package/src/resources/submodules/appium/packages/appium/docs/en/guides/branch-testing.md +0 -57
  63. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caching.md +0 -76
  64. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caps.md +0 -275
  65. package/src/resources/submodules/appium/packages/appium/docs/en/guides/config.md +0 -98
  66. package/src/resources/submodules/appium/packages/appium/docs/en/guides/context.md +0 -44
  67. package/src/resources/submodules/appium/packages/appium/docs/en/guides/event-timing.md +0 -73
  68. package/src/resources/submodules/appium/packages/appium/docs/en/guides/execute-methods.md +0 -122
  69. package/src/resources/submodules/appium/packages/appium/docs/en/guides/grid.md +0 -166
  70. package/src/resources/submodules/appium/packages/appium/docs/en/guides/headers.md +0 -17
  71. package/src/resources/submodules/appium/packages/appium/docs/en/guides/log-filters.md +0 -86
  72. package/src/resources/submodules/appium/packages/appium/docs/en/guides/managing-exts.md +0 -87
  73. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-1-to-2.md +0 -368
  74. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-2-to-3.md +0 -464
  75. package/src/resources/submodules/appium/packages/appium/docs/en/guides/security.md +0 -89
  76. package/src/resources/submodules/appium/packages/appium/docs/en/guides/settings.md +0 -68
  77. package/src/resources/submodules/appium/packages/appium/docs/en/guides/tls.md +0 -42
  78. package/src/resources/submodules/appium/packages/appium/docs/en/index.md +0 -59
  79. package/src/resources/submodules/appium/packages/appium/docs/en/intro/appium.md +0 -202
  80. package/src/resources/submodules/appium/packages/appium/docs/en/intro/clients.md +0 -127
  81. package/src/resources/submodules/appium/packages/appium/docs/en/intro/drivers.md +0 -188
  82. package/src/resources/submodules/appium/packages/appium/docs/en/intro/history.md +0 -196
  83. package/src/resources/submodules/appium/packages/appium/docs/en/intro/index.md +0 -39
  84. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/index.md +0 -29
  85. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/install.md +0 -50
  86. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/next-steps.md +0 -23
  87. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/requirements.md +0 -29
  88. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-dotnet.md +0 -105
  89. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-java.md +0 -23
  90. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-js.md +0 -75
  91. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-py.md +0 -60
  92. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-rb.md +0 -83
  93. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/uiauto2-driver.md +0 -144
  94. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/appium.md +0 -394
  95. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/bidi.md +0 -70
  96. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/index.md +0 -30
  97. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/jsonwp.md +0 -214
  98. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/mjsonwp.md +0 -151
  99. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/others.md +0 -671
  100. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/plugins.md +0 -289
  101. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/webdriver.md +0 -1114
  102. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/env-vars.md +0 -31
  103. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/extensions.md +0 -239
  104. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +0 -35
  105. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +0 -76
  106. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/setup.md +0 -76
  107. package/src/resources/submodules/appium/packages/appium/docs/en/reference/index.md +0 -25
  108. package/src/resources/submodules/appium/packages/appium/docs/en/resources/index.md +0 -28
  109. package/src/resources/submodules/appium/packages/appium/docs/en/sponsors/index.md +0 -64
  110. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/index.md +0 -2
  111. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-appiumconf2024.md +0 -45
  112. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-browserstack-as-strategic-partner.md +0 -46
  113. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-headspin-as-development-partner.md +0 -47
  114. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-strategic-partner.md +0 -41
  115. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sauce-labs-as-strategic-partner.md +0 -36
  116. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sponsorship-program.md +0 -48
  117. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/appium3.md +0 -40
  118. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/hello-world.md +0 -15
  119. package/src/resources/submodules/appium/packages/appium/docs/ja/contributing/index.md +0 -158
  120. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-docs.md +0 -86
  121. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-doctor-checks.md +0 -141
  122. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-drivers.md +0 -866
  123. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +0 -520
  124. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/config-system.md +0 -468
  125. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/index.md +0 -18
  126. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/sensitive.md +0 -49
  127. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/clients.md +0 -143
  128. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/drivers.md +0 -219
  129. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/index.md +0 -45
  130. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/plugins.md +0 -140
  131. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/tools.md +0 -87
  132. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/branch-testing.md +0 -57
  133. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caching.md +0 -78
  134. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caps.md +0 -259
  135. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/config.md +0 -102
  136. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/context.md +0 -44
  137. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/event-timing.md +0 -75
  138. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/execute-methods.md +0 -142
  139. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/grid.md +0 -166
  140. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/headers.md +0 -17
  141. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/log-filters.md +0 -86
  142. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/managing-exts.md +0 -89
  143. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-1-to-2.md +0 -402
  144. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-2-to-3.md +0 -458
  145. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/security.md +0 -89
  146. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/settings.md +0 -70
  147. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/tls.md +0 -43
  148. package/src/resources/submodules/appium/packages/appium/docs/ja/index.md +0 -55
  149. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/appium.md +0 -191
  150. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/clients.md +0 -139
  151. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/drivers.md +0 -188
  152. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/history.md +0 -196
  153. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/index.md +0 -39
  154. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/index.md +0 -23
  155. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/install.md +0 -47
  156. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/next-steps.md +0 -19
  157. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/requirements.md +0 -29
  158. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-dotnet.md +0 -107
  159. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-java.md +0 -23
  160. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-js.md +0 -77
  161. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-py.md +0 -63
  162. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-rb.md +0 -85
  163. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/uiauto2-driver.md +0 -148
  164. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/appium.md +0 -395
  165. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/bidi.md +0 -71
  166. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/index.md +0 -30
  167. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/jsonwp.md +0 -215
  168. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/mjsonwp.md +0 -152
  169. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/others.md +0 -672
  170. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/plugins.md +0 -291
  171. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/webdriver.md +0 -1114
  172. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/env-vars.md +0 -31
  173. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/extensions.md +0 -240
  174. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +0 -35
  175. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +0 -76
  176. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/setup.md +0 -78
  177. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/index.md +0 -25
  178. package/src/resources/submodules/appium/packages/appium/docs/ja/resources/index.md +0 -28
  179. package/src/resources/submodules/appium/packages/appium/docs/ja/sponsors/index.md +0 -61
  180. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz-white.png +0 -0
  181. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png +0 -0
  182. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-white.png +0 -0
  183. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo.png +0 -0
  184. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png +0 -0
  185. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png +0 -0
  186. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-dark.png +0 -0
  187. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-light.png +0 -0
  188. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png +0 -0
  189. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/index.md +0 -2
  190. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-appiumconf2024.md +0 -45
  191. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-browserstack-as-strategic-partner.md +0 -46
  192. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-headspin-as-development-partner.md +0 -47
  193. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-strategic-partner.md +0 -41
  194. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sauce-labs-as-strategic-partner.md +0 -36
  195. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sponsorship-program.md +0 -48
  196. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/appium3.md +0 -40
  197. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/hello-world.md +0 -15
  198. package/src/resources/submodules/appium/packages/appium/docs/zh/contributing/index.md +0 -132
  199. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-docs.md +0 -86
  200. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-doctor-checks.md +0 -141
  201. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-drivers.md +0 -866
  202. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +0 -520
  203. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/config-system.md +0 -468
  204. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/index.md +0 -18
  205. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/sensitive.md +0 -49
  206. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/clients.md +0 -143
  207. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/drivers.md +0 -219
  208. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/index.md +0 -45
  209. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/plugins.md +0 -140
  210. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/tools.md +0 -87
  211. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/branch-testing.md +0 -57
  212. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caching.md +0 -78
  213. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caps.md +0 -284
  214. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/config.md +0 -102
  215. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/context.md +0 -44
  216. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/event-timing.md +0 -75
  217. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/execute-methods.md +0 -142
  218. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/grid.md +0 -166
  219. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/headers.md +0 -17
  220. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/log-filters.md +0 -86
  221. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/managing-exts.md +0 -89
  222. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-1-to-2.md +0 -410
  223. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-2-to-3.md +0 -459
  224. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/security.md +0 -89
  225. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/settings.md +0 -70
  226. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/tls.md +0 -43
  227. package/src/resources/submodules/appium/packages/appium/docs/zh/index.md +0 -54
  228. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/appium.md +0 -200
  229. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +0 -139
  230. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +0 -188
  231. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +0 -196
  232. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +0 -39
  233. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/index.md +0 -23
  234. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/install.md +0 -47
  235. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/next-steps.md +0 -19
  236. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/requirements.md +0 -21
  237. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-dotnet.md +0 -99
  238. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-java.md +0 -20
  239. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-js.md +0 -62
  240. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-py.md +0 -57
  241. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-rb.md +0 -80
  242. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/uiauto2-driver.md +0 -148
  243. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/appium.md +0 -395
  244. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/bidi.md +0 -71
  245. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/index.md +0 -30
  246. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/jsonwp.md +0 -215
  247. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/mjsonwp.md +0 -152
  248. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/others.md +0 -672
  249. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/plugins.md +0 -291
  250. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/webdriver.md +0 -1114
  251. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/env-vars.md +0 -31
  252. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/extensions.md +0 -240
  253. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +0 -35
  254. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +0 -76
  255. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/setup.md +0 -78
  256. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/index.md +0 -25
  257. package/src/resources/submodules/appium/packages/appium/docs/zh/resources/index.md +0 -28
  258. package/src/resources/submodules/appium/packages/appium/docs/zh/sponsors/index.md +0 -61
  259. package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +0 -30
  260. package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +0 -1131
  261. package/src/resources/submodules/appium/packages/base-driver/README.md +0 -15
  262. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/errors.md +0 -82
  263. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/protocol-methods.md +0 -182
  264. package/src/resources/submodules/appium/packages/base-driver/static/appium.png +0 -0
  265. package/src/resources/submodules/appium/packages/base-plugin/CHANGELOG.md +0 -672
  266. package/src/resources/submodules/appium/packages/base-plugin/README.md +0 -15
  267. package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +0 -948
  268. package/src/resources/submodules/appium/packages/docutils/README.md +0 -27
  269. package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +0 -717
  270. package/src/resources/submodules/appium/packages/driver-test-support/README.md +0 -112
  271. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +0 -168
  272. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +0 -33
  273. package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +0 -603
  274. package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +0 -42
  275. package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +0 -545
  276. package/src/resources/submodules/appium/packages/fake-driver/README.md +0 -7
  277. package/src/resources/submodules/appium/packages/fake-driver/lib/screen.png +0 -0
  278. package/src/resources/submodules/appium/packages/fake-plugin/CHANGELOG.md +0 -683
  279. package/src/resources/submodules/appium/packages/fake-plugin/README.md +0 -7
  280. package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +0 -602
  281. package/src/resources/submodules/appium/packages/images-plugin/README.md +0 -27
  282. package/src/resources/submodules/appium/packages/images-plugin/docs/find-by-image.md +0 -65
  283. package/src/resources/submodules/appium/packages/images-plugin/docs/image-comparison.md +0 -203
  284. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/appstore.png +0 -0
  285. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img1.png +0 -0
  286. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2.png +0 -0
  287. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2_part.png +0 -0
  288. package/src/resources/submodules/appium/packages/logger/CHANGELOG.md +0 -162
  289. package/src/resources/submodules/appium/packages/logger/README.md +0 -31
  290. package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +0 -384
  291. package/src/resources/submodules/appium/packages/opencv/README.md +0 -68
  292. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/appium-diagram.jpg +0 -0
  293. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc1.png +0 -0
  294. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc2.png +0 -0
  295. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc_rotated.png +0 -0
  296. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/findwaldo.jpg +0 -0
  297. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/number5.png +0 -0
  298. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/waldo.jpg +0 -0
  299. package/src/resources/submodules/appium/packages/plugin-test-support/CHANGELOG.md +0 -539
  300. package/src/resources/submodules/appium/packages/plugin-test-support/README.md +0 -49
  301. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/CHANGELOG.md +0 -154
  302. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +0 -35
  303. package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +0 -271
  304. package/src/resources/submodules/appium/packages/schema/README.md +0 -50
  305. package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +0 -73
  306. package/src/resources/submodules/appium/packages/storage-plugin/README.md +0 -83
  307. package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +0 -94
  308. package/src/resources/submodules/appium/packages/strongbox/README.md +0 -96
  309. package/src/resources/submodules/appium/packages/support/CHANGELOG.md +0 -1054
  310. package/src/resources/submodules/appium/packages/support/README.md +0 -161
  311. package/src/resources/submodules/appium/packages/test-support/CHANGELOG.md +0 -712
  312. package/src/resources/submodules/appium/packages/test-support/README.md +0 -61
  313. package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +0 -131
  314. package/src/resources/submodules/appium/packages/tsconfig/README.md +0 -19
  315. package/src/resources/submodules/appium/packages/types/CHANGELOG.md +0 -793
  316. package/src/resources/submodules/appium/packages/types/README.md +0 -21
  317. package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +0 -435
  318. package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +0 -53
  319. package/src/resources/submodules/appium/renovate/README.md +0 -63
  320. package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +0 -1204
  321. package/src/resources/submodules/appium-uiautomator2-driver/README.md +0 -2077
  322. package/src/resources/submodules/appium-uiautomator2-driver/docs/actions.md +0 -72
  323. package/src/resources/submodules/appium-uiautomator2-driver/docs/activity-startup.md +0 -47
  324. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-appbundle.md +0 -69
  325. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-mobile-gestures.md +0 -352
  326. package/src/resources/submodules/appium-uiautomator2-driver/docs/bidi.md +0 -50
  327. package/src/resources/submodules/appium-uiautomator2-driver/docs/capability-sets.md +0 -136
  328. package/src/resources/submodules/appium-uiautomator2-driver/docs/scheduled-actions.md +0 -155
  329. package/src/resources/submodules/appium-uiautomator2-driver/docs/uiautomator-uiselector.md +0 -51
  330. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/main.md +0 -95
  331. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen1.png +0 -0
  332. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen2.png +0 -0
  333. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/checkered-squares.png +0 -0
  334. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/start-button.png +0 -0
  335. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/stop-button.png +0 -0
  336. package/src/resources/submodules/appium-xcuitest-driver/.github/ISSUE_TEMPLATE.md +0 -4
  337. package/src/resources/submodules/appium-xcuitest-driver/CHANGELOG.md +0 -2594
  338. package/src/resources/submodules/appium-xcuitest-driver/README.md +0 -55
  339. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png +0 -0
  340. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo.png +0 -0
  341. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png +0 -0
  342. package/src/resources/submodules/appium-xcuitest-driver/docs/contributing.md +0 -45
  343. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints-wda.md +0 -61
  344. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints.md +0 -98
  345. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/keynote.png +0 -0
  346. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/on_my_iphone.png +0 -0
  347. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/top_files.png +0 -0
  348. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/attach-to-running-wda.md +0 -43
  349. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/audio-capture.md +0 -78
  350. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/capability-sets.md +0 -169
  351. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/ci-setup.md +0 -47
  352. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/clipboard.md +0 -47
  353. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/elements-lookup-troubleshooting.md +0 -158
  354. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/file-transfer.md +0 -147
  355. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/gestures.md +0 -52
  356. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/hybrid.md +0 -137
  357. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/input-events.md +0 -67
  358. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/install-certificate.md +0 -19
  359. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/multiple-xcode-versions.md +0 -37
  360. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/parallel-tests.md +0 -39
  361. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-prebuilt-wda.md +0 -135
  362. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +0 -178
  363. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/touch-id.md +0 -33
  364. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/troubleshooting.md +0 -191
  365. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +0 -114
  366. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +0 -283
  367. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-slowness.md +0 -231
  368. package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +0 -36
  369. package/src/resources/submodules/appium-xcuitest-driver/docs/installation/index.md +0 -137
  370. package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +0 -19
  371. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/check-prov-prof.png +0 -0
  372. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-new-project.png +0 -0
  373. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-single-page.png +0 -0
  374. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/no-prov-prof.png +0 -0
  375. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/project-prov-prof.png +0 -0
  376. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/set-up-bundle.png +0 -0
  377. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/untrusted-dev.png +0 -0
  378. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-bundle-id.png +0 -0
  379. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-config.png +0 -0
  380. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-fail.png +0 -0
  381. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-succeed.png +0 -0
  382. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/index.md +0 -51
  383. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-auto.md +0 -49
  384. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-manual.md +0 -40
  385. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-full-manual.md +0 -50
  386. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-generic-manual.md +0 -49
  387. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/real-device-config.md +0 -100
  388. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/assets/images/useXctestrunFile.png +0 -0
  389. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/bidi.md +0 -75
  390. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +0 -165
  391. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +0 -490
  392. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +0 -27
  393. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +0 -2206
  394. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/ios-predicate.md +0 -196
  395. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/locator-strategies.md +0 -19
  396. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +0 -29
  397. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +0 -22
  398. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +0 -16
  399. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +0 -49
  400. package/src/resources/submodules/appium-xcuitest-driver/test/assets/TestApp-iphonesimulator.app/Default-568h@2x.png +0 -0
  401. package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
  402. package/src/schema.ts +0 -5
  403. package/src/scripts/simple-index-documentation.ts +0 -93
  404. package/src/scripts/simple-query-documentation.ts +0 -61
  405. package/src/server.ts +0 -40
  406. package/src/session-store.ts +0 -117
  407. package/src/tests/README.md +0 -83
  408. package/src/tests/__mocks__/@appium/support.ts +0 -30
  409. package/src/tests/generate-all-locators.test.ts +0 -178
  410. package/src/tests/screenshot.test.ts +0 -279
  411. package/src/tests/test-setup-wda.ts +0 -255
  412. package/src/tools/README.md +0 -179
  413. package/src/tools/app-management/activate-app.ts +0 -46
  414. package/src/tools/app-management/install-app.ts +0 -54
  415. package/src/tools/app-management/list-apps.ts +0 -87
  416. package/src/tools/app-management/terminate-app.ts +0 -56
  417. package/src/tools/app-management/uninstall-app.ts +0 -56
  418. package/src/tools/context/get-contexts.ts +0 -78
  419. package/src/tools/context/switch-context.ts +0 -106
  420. package/src/tools/documentation/answer-appium.ts +0 -73
  421. package/src/tools/documentation/index.ts +0 -98
  422. package/src/tools/documentation/reasoning-rag.ts +0 -435
  423. package/src/tools/documentation/sentence-transformers-embeddings.ts +0 -144
  424. package/src/tools/documentation/simple-pdf-indexer.ts +0 -508
  425. package/src/tools/documentation/uploads/documents.json +0 -1
  426. package/src/tools/index.ts +0 -159
  427. package/src/tools/interactions/click.ts +0 -50
  428. package/src/tools/interactions/double-tap.ts +0 -99
  429. package/src/tools/interactions/drag-and-drop.ts +0 -238
  430. package/src/tools/interactions/find.ts +0 -61
  431. package/src/tools/interactions/get-page-source.ts +0 -65
  432. package/src/tools/interactions/get-text.ts +0 -50
  433. package/src/tools/interactions/long-press.ts +0 -120
  434. package/src/tools/interactions/screenshot.ts +0 -119
  435. package/src/tools/interactions/set-value.ts +0 -54
  436. package/src/tools/ios/boot-simulator.ts +0 -88
  437. package/src/tools/ios/install-wda.ts +0 -277
  438. package/src/tools/ios/setup-wda.ts +0 -217
  439. package/src/tools/navigations/scroll-to-element.ts +0 -198
  440. package/src/tools/navigations/scroll.ts +0 -113
  441. package/src/tools/navigations/swipe.ts +0 -368
  442. package/src/tools/session/create-session.ts +0 -379
  443. package/src/tools/session/delete-session.ts +0 -56
  444. package/src/tools/session/select-device.ts +0 -326
  445. package/src/tools/session/select-platform.ts +0 -250
  446. package/src/tools/test-generation/generate-tests.ts +0 -48
  447. package/src/tools/test-generation/locators.ts +0 -101
  448. package/src/types/appium-ios-device.d.ts +0 -8
  449. package/src/types/appium-xcuitest-driver.d.ts +0 -5
  450. package/src/ui/mcp-ui-utils.ts +0 -1630
  451. package/tsconfig.json +0 -15
  452. package/tsconfig.tsbuildinfo +0 -1
@@ -1,117 +0,0 @@
1
- import { AndroidUiautomator2Driver } from 'appium-uiautomator2-driver';
2
- import { XCUITestDriver } from 'appium-xcuitest-driver';
3
- import type { Client } from 'webdriver';
4
- import log from './logger.js';
5
-
6
- let driver: any = null;
7
- let sessionId: string | null = null;
8
- let isDeletingSession = false; // Lock to prevent concurrent deletion
9
-
10
- export const PLATFORM = {
11
- android: 'Android',
12
- ios: 'iOS',
13
- };
14
-
15
- /**
16
- * Determine whether the provided driver represents a remote driver session.
17
- *
18
- * This checks for the presence of a string-valued `sessionId` property on the
19
- * driver object, which indicates a remote/WebDriver session.
20
- *
21
- * @param driver - The driver instance to inspect (may be a Client, AndroidUiautomator2Driver, XCUITestDriver, or null).
22
- * @returns `true` if `driver` is non-null and has a string `sessionId`; otherwise `false`.
23
- */
24
- export function isRemoteDriverSession(
25
- driver: Client | AndroidUiautomator2Driver | XCUITestDriver | null
26
- ): boolean {
27
- if (driver) {
28
- return (
29
- !(driver instanceof AndroidUiautomator2Driver) &&
30
- !(driver instanceof XCUITestDriver)
31
- );
32
- }
33
- return false;
34
- }
35
-
36
- export function setSession(
37
- d: Client | AndroidUiautomator2Driver | XCUITestDriver,
38
- id: string | null
39
- ) {
40
- driver = d;
41
- sessionId = id;
42
- // Reset deletion flag when setting a new session
43
- if (d && id) {
44
- isDeletingSession = false;
45
- }
46
- }
47
-
48
- export function getDriver():
49
- | Client
50
- | AndroidUiautomator2Driver
51
- | XCUITestDriver {
52
- return driver;
53
- }
54
-
55
- export function getSessionId() {
56
- return sessionId;
57
- }
58
-
59
- export function isDeletingSessionInProgress() {
60
- return isDeletingSession;
61
- }
62
-
63
- export function hasActiveSession(): boolean {
64
- return driver !== null && sessionId !== null && !isDeletingSession;
65
- }
66
-
67
- export async function safeDeleteSession(): Promise<boolean> {
68
- // Check if there's no session to delete
69
- if (!driver || !sessionId) {
70
- log.info('No active session to delete.');
71
- return false;
72
- }
73
-
74
- // Check if deletion is already in progress
75
- if (isDeletingSession) {
76
- log.info('Session deletion already in progress, skipping...');
77
- return false;
78
- }
79
-
80
- // Set lock
81
- isDeletingSession = true;
82
-
83
- try {
84
- log.info('Deleting current session');
85
- await driver.deleteSession();
86
-
87
- // Clear the session from store
88
- driver = null;
89
- sessionId = null;
90
-
91
- log.info('Session deleted successfully.');
92
- return true;
93
- } catch (error) {
94
- log.error('Error deleting session:', error);
95
- throw error;
96
- } finally {
97
- // Always release lock
98
- isDeletingSession = false;
99
- }
100
- }
101
-
102
- export const getPlatformName = (driver: any): string => {
103
- if (driver instanceof AndroidUiautomator2Driver) {
104
- return PLATFORM.android;
105
- }
106
- if (driver instanceof XCUITestDriver) {
107
- return PLATFORM.ios;
108
- }
109
-
110
- if ((driver as Client).isAndroid) {
111
- return PLATFORM.android;
112
- } else if ((driver as Client).isIOS) {
113
- return PLATFORM.ios;
114
- }
115
-
116
- throw new Error('Unknown driver type');
117
- };
@@ -1,83 +0,0 @@
1
- # Tests for Mobile Agent
2
-
3
- This directory contains unit tests for the Mobile Agent project.
4
-
5
- ## Running Tests
6
-
7
- To run all tests:
8
-
9
- ```bash
10
- npm test
11
- ```
12
-
13
- To run specific test files:
14
-
15
- ```bash
16
- # Run tests for the locator generation functionality
17
- npm run test:locators
18
- ```
19
-
20
- ## Test Files
21
-
22
- ### generate-all-locators.test.ts
23
-
24
- This file contains tests for the `generateAllElementLocators` function, which is responsible for generating locators for all elements in a page source XML.
25
-
26
- The tests cover:
27
-
28
- 1. Basic functionality with valid XML
29
- 2. Handling of invalid/empty XML
30
- 3. Various filtering options:
31
- - `includeTagNames` - Include only specific element types
32
- - `excludeTagNames` - Exclude specific element types
33
- - `minAttributeCount` - Filter elements by minimum attribute count
34
- - `fetchableOnly` - Include only interactable elements (platform-specific)
35
- - `clickableOnly` - Include only clickable elements
36
-
37
- ## Adding New Tests
38
-
39
- When adding new tests:
40
-
41
- 1. Create a new test file in the `src/tests` directory with the `.test.ts` extension
42
- 2. Import the necessary functions and types from the source files
43
- 3. Use Jest's `describe`, `test`, and `expect` functions to structure your tests
44
- 4. Add a new script to `package.json` for running your specific test file
45
-
46
- ## Test Structure
47
-
48
- Tests should follow this general structure:
49
-
50
- ```typescript
51
- import { describe, test, expect } from '@jest/globals';
52
- import { functionToTest } from '../path/to/function.js';
53
-
54
- describe('functionToTest', () => {
55
- test('should do something specific', () => {
56
- // Arrange - set up test data
57
- const input = 'some input';
58
-
59
- // Act - call the function
60
- const result = functionToTest(input);
61
-
62
- // Assert - verify the result
63
- expect(result).toBe('expected output');
64
- });
65
- });
66
- ```
67
-
68
- ## Mocking
69
-
70
- For tests that require mocking dependencies, use Jest's mocking capabilities:
71
-
72
- ```typescript
73
- import { jest } from '@jest/globals';
74
-
75
- // Mock a module
76
- jest.mock('../path/to/module.js');
77
-
78
- // Create a mock function
79
- const mockFunction = jest.fn();
80
- mockFunction.mockReturnValue('mocked value');
81
- ```
82
-
83
- Note that when working with ESM modules, you may need to use different mocking approaches than with CommonJS modules.
@@ -1,30 +0,0 @@
1
- // Mock @appium/support for Jest tests
2
- // This avoids the ESM/CommonJS mismatch with uuid dependency
3
-
4
- export const logger = {
5
- getLogger: (name: string) =>
6
- // Simple logger implementation for tests
7
- // No-op functions that match the logger interface
8
- ({
9
- debug: (message: string, ...args: any[]) => {
10
- // Silent in tests by default
11
- },
12
- info: (message: string, ...args: any[]) => {
13
- // Silent in tests by default
14
- },
15
- warn: (message: string, ...args: any[]) => {
16
- // Silent in tests by default
17
- },
18
- error: (message: string, ...args: any[]) => {
19
- // Silent in tests by default
20
- },
21
- trace: (message: string, ...args: any[]) => {
22
- // Silent in tests by default
23
- },
24
- }),
25
- };
26
-
27
- // Export other commonly used utilities from @appium/support if needed
28
- export default {
29
- logger,
30
- };
@@ -1,178 +0,0 @@
1
- import { describe, test, expect } from '@jest/globals';
2
- import {
3
- generateAllElementLocators,
4
- ElementWithLocators,
5
- } from '../locators/generate-all-locators.js';
6
-
7
- describe('generateAllElementLocators', () => {
8
- // Sample XML for testing
9
- const sampleXML = `
10
- <hierarchy>
11
- <android.widget.FrameLayout resource-id="android:id/content">
12
- <android.widget.LinearLayout>
13
- <android.widget.TextView text="Hello World" resource-id="com.example:id/text_view" clickable="true" enabled="true" displayed="true" />
14
- <android.widget.Button text="Click Me" resource-id="com.example:id/button" clickable="true" enabled="true" displayed="true" />
15
- <android.widget.EditText text="" resource-id="com.example:id/edit_text" clickable="true" enabled="true" displayed="true" />
16
- </android.widget.LinearLayout>
17
- </android.widget.FrameLayout>
18
- </hierarchy>
19
- `;
20
-
21
- // Sample iOS XML for testing
22
- const sampleIOSXML = `
23
- <hierarchy>
24
- <XCUIElementTypeApplication>
25
- <XCUIElementTypeWindow>
26
- <XCUIElementTypeButton name="Click Me" enabled="true" visible="true" />
27
- <XCUIElementTypeTextField name="Enter text" enabled="true" visible="true" />
28
- <XCUIElementTypeStaticText name="Hello World" enabled="true" visible="true" />
29
- </XCUIElementTypeWindow>
30
- </XCUIElementTypeApplication>
31
- </hierarchy>
32
- `;
33
-
34
- test('should return an array when given valid XML', () => {
35
- // Call the function with the sample XML
36
- const result = generateAllElementLocators(sampleXML, true, 'uiautomator2');
37
-
38
- // Basic validation of the result
39
- expect(Array.isArray(result)).toBe(true);
40
- expect(result.length).toBeGreaterThan(0);
41
-
42
- // Verify the structure of the returned elements
43
- if (result.length > 0) {
44
- const element = result[0];
45
- expect(element).toHaveProperty('tagName');
46
- expect(element).toHaveProperty('locators');
47
- expect(element).toHaveProperty('text');
48
- expect(element).toHaveProperty('contentDesc');
49
- expect(element).toHaveProperty('resourceId');
50
- expect(element).toHaveProperty('clickable');
51
- expect(element).toHaveProperty('enabled');
52
- expect(element).toHaveProperty('displayed');
53
- }
54
- });
55
-
56
- test('should return an empty array when given invalid XML', () => {
57
- // Call the function with invalid XML (just a root element with no content)
58
- const result = generateAllElementLocators(
59
- '<hierarchy></hierarchy>',
60
- true,
61
- 'uiautomator2'
62
- );
63
-
64
- // Verify the result is an empty array or at least doesn't throw an error
65
- expect(Array.isArray(result)).toBe(true);
66
- expect(result.length).toBe(0);
67
- });
68
-
69
- test('should apply includeTagNames filter correctly', () => {
70
- // Call the function with filters
71
- const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
72
- includeTagNames: ['android.widget.Button'],
73
- });
74
-
75
- // If the filter works, either the result will be empty (if no buttons found)
76
- // or all elements will be buttons
77
- if (result.length > 0) {
78
- expect(
79
- result.every((element) => element.tagName.includes('Button'))
80
- ).toBe(true);
81
- }
82
- });
83
-
84
- test('should apply excludeTagNames filter correctly', () => {
85
- // Call the function with excludeTagNames filter
86
- const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
87
- excludeTagNames: ['android.widget.Button'],
88
- });
89
-
90
- // Verify no Button elements are included
91
- expect(result.every((element) => !element.tagName.includes('Button'))).toBe(
92
- true
93
- );
94
- });
95
-
96
- test('should apply minAttributeCount filter correctly', () => {
97
- // Call the function with minAttributeCount filter
98
- const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
99
- minAttributeCount: 3,
100
- });
101
-
102
- // All elements should have at least 3 attributes
103
- if (result.length > 0) {
104
- // We can't directly check the attributes count since we only have the processed elements
105
- // But we can verify that elements with fewer attributes are filtered out
106
- expect(result.length).toBeLessThanOrEqual(
107
- generateAllElementLocators(sampleXML, true, 'uiautomator2').length
108
- );
109
- }
110
- });
111
-
112
- test('should handle fetchableOnly filter for Android', () => {
113
- // Call the function with fetchableOnly filter
114
- const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
115
- fetchableOnly: true,
116
- });
117
-
118
- // Verify the result contains only interactable elements
119
- if (result.length > 0) {
120
- const interactableTags = [
121
- 'EditText',
122
- 'Button',
123
- 'ImageButton',
124
- 'CheckBox',
125
- 'RadioButton',
126
- 'Switch',
127
- 'ToggleButton',
128
- 'TextView',
129
- ];
130
-
131
- expect(
132
- result.every(
133
- (element) =>
134
- interactableTags.some((tag) => element.tagName.includes(tag)) ||
135
- element.clickable === true
136
- )
137
- ).toBe(true);
138
- }
139
- });
140
-
141
- test('should handle fetchableOnly filter for iOS', () => {
142
- // Call the function with fetchableOnly filter for iOS
143
- const result = generateAllElementLocators(sampleIOSXML, true, 'xcuitest', {
144
- fetchableOnly: true,
145
- });
146
-
147
- // Verify the result contains only interactable iOS elements
148
- if (result.length > 0) {
149
- const interactableTags = [
150
- 'XCUIElementTypeTextField',
151
- 'XCUIElementTypeSecureTextField',
152
- 'XCUIElementTypeButton',
153
- 'XCUIElementTypeImage',
154
- 'XCUIElementTypeSwitch',
155
- 'XCUIElementTypeStaticText',
156
- 'XCUIElementTypeTextView',
157
- 'XCUIElementTypeCell',
158
- 'XCUIElementTypeLink',
159
- ];
160
-
161
- expect(
162
- result.every((element) =>
163
- interactableTags.some((tag) => element.tagName.includes(tag))
164
- )
165
- ).toBe(true);
166
- }
167
- });
168
-
169
- test('should handle clickableOnly filter correctly', () => {
170
- // Call the function with clickableOnly filter
171
- const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
172
- clickableOnly: true,
173
- });
174
-
175
- // Verify all elements are clickable
176
- expect(result.every((element) => element.clickable === true)).toBe(true);
177
- });
178
- });
@@ -1,279 +0,0 @@
1
- import {
2
- describe,
3
- test,
4
- expect,
5
- beforeEach,
6
- afterEach,
7
- jest,
8
- } from '@jest/globals';
9
- import { join, isAbsolute } from 'path';
10
- import * as os from 'node:os';
11
-
12
- /**
13
- * Local implementation of resolveScreenshotDir for testing.
14
- * This mirrors the implementation in screenshot.ts to avoid importing
15
- * the module which has heavy dependencies.
16
- */
17
- function resolveScreenshotDir(): string {
18
- const screenshotDir = process.env.SCREENSHOTS_DIR;
19
-
20
- if (!screenshotDir) {
21
- return os.tmpdir();
22
- }
23
-
24
- if (isAbsolute(screenshotDir)) {
25
- return screenshotDir;
26
- }
27
-
28
- return join(process.cwd(), screenshotDir);
29
- }
30
-
31
- /**
32
- * Interface for screenshot dependencies (mirrors screenshot.ts).
33
- */
34
- interface ScreenshotDeps {
35
- getDriver: () => { getScreenshot: () => Promise<string> } | null;
36
- writeFile: (path: string, data: Buffer) => Promise<void>;
37
- mkdir: (path: string, options: { recursive: boolean }) => Promise<void>;
38
- resolveScreenshotDir: () => string;
39
- dateNow: () => number;
40
- }
41
-
42
- /**
43
- * Local implementation of executeScreenshot for testing.
44
- * This mirrors the implementation in screenshot.ts.
45
- */
46
- async function executeScreenshot(deps: ScreenshotDeps): Promise<any> {
47
- const driver = deps.getDriver();
48
- if (!driver) {
49
- throw new Error('No driver found');
50
- }
51
-
52
- try {
53
- const screenshotBase64 = await driver.getScreenshot();
54
- const screenshotBuffer = Buffer.from(screenshotBase64, 'base64');
55
- const timestamp = deps.dateNow();
56
- const filename = `screenshot_${timestamp}.png`;
57
- const screenshotDir = deps.resolveScreenshotDir();
58
-
59
- await deps.mkdir(screenshotDir, { recursive: true });
60
- const filepath = join(screenshotDir, filename);
61
- await deps.writeFile(filepath, screenshotBuffer);
62
-
63
- return {
64
- content: [
65
- {
66
- type: 'text',
67
- text: `Screenshot saved successfully to: ${filename}`,
68
- },
69
- ],
70
- };
71
- } catch (err: any) {
72
- return {
73
- content: [
74
- {
75
- type: 'text',
76
- text: `Failed to take screenshot. err: ${err.toString()}`,
77
- },
78
- ],
79
- };
80
- }
81
- }
82
-
83
- describe('resolveScreenshotDir', () => {
84
- const originalEnv = process.env.SCREENSHOTS_DIR;
85
- const cwd = process.cwd();
86
-
87
- beforeEach(() => {
88
- delete process.env.SCREENSHOTS_DIR;
89
- });
90
-
91
- afterEach(() => {
92
- if (originalEnv !== undefined) {
93
- process.env.SCREENSHOTS_DIR = originalEnv;
94
- } else {
95
- delete process.env.SCREENSHOTS_DIR;
96
- }
97
- });
98
-
99
- test('should return os.tmpdir() when SCREENSHOTS_DIR is not set', () => {
100
- const result = resolveScreenshotDir();
101
- expect(result).toBe(os.tmpdir());
102
- });
103
-
104
- test('should return os.tmpdir() when SCREENSHOTS_DIR is empty string', () => {
105
- process.env.SCREENSHOTS_DIR = '';
106
- const result = resolveScreenshotDir();
107
- expect(result).toBe(os.tmpdir());
108
- });
109
-
110
- test('should return absolute path as-is when SCREENSHOTS_DIR is absolute', () => {
111
- const absolutePath = '/tmp/screenshots';
112
- process.env.SCREENSHOTS_DIR = absolutePath;
113
- const result = resolveScreenshotDir();
114
- expect(result).toBe(absolutePath);
115
- });
116
-
117
- test('should join relative path with process.cwd()', () => {
118
- const relativePath = 'screenshots';
119
- process.env.SCREENSHOTS_DIR = relativePath;
120
- const result = resolveScreenshotDir();
121
- expect(result).toBe(join(cwd, relativePath));
122
- });
123
-
124
- test('should handle nested relative paths', () => {
125
- const relativePath = 'output/screenshots/test';
126
- process.env.SCREENSHOTS_DIR = relativePath;
127
- const result = resolveScreenshotDir();
128
- expect(result).toBe(join(cwd, relativePath));
129
- });
130
-
131
- test('should handle relative path starting with ./', () => {
132
- const relativePath = './screenshots';
133
- process.env.SCREENSHOTS_DIR = relativePath;
134
- const result = resolveScreenshotDir();
135
- expect(result).toBe(join(cwd, relativePath));
136
- });
137
-
138
- test('should handle relative path with parent directory reference', () => {
139
- const relativePath = '../screenshots';
140
- process.env.SCREENSHOTS_DIR = relativePath;
141
- const result = resolveScreenshotDir();
142
- expect(result).toBe(join(cwd, relativePath));
143
- });
144
- });
145
-
146
- describe('executeScreenshot', () => {
147
- const mockBase64 = 'dGVzdA=='; // 'test' in base64
148
- const mockTimestamp = 1234567890;
149
-
150
- function createMockDeps(
151
- overrides: Partial<ScreenshotDeps> = {}
152
- ): ScreenshotDeps {
153
- return {
154
- getDriver: jest.fn(() => ({
155
- getScreenshot: jest.fn(() => Promise.resolve(mockBase64)),
156
- })) as any,
157
- writeFile: jest.fn(() => Promise.resolve()) as any,
158
- mkdir: jest.fn(() => Promise.resolve()) as any,
159
- resolveScreenshotDir: jest.fn(() => '/mock/screenshots') as any,
160
- dateNow: jest.fn(() => mockTimestamp) as any,
161
- ...overrides,
162
- };
163
- }
164
-
165
- test('should throw error when no driver found', async () => {
166
- const deps = createMockDeps({
167
- getDriver: jest.fn(() => null) as any,
168
- });
169
-
170
- await expect(executeScreenshot(deps)).rejects.toThrow('No driver found');
171
- });
172
-
173
- test('should return success content with filename', async () => {
174
- const deps = createMockDeps();
175
-
176
- const result = await executeScreenshot(deps);
177
-
178
- expect(result).toEqual({
179
- content: [
180
- {
181
- type: 'text',
182
- text: `Screenshot saved successfully to: screenshot_${mockTimestamp}.png`,
183
- },
184
- ],
185
- });
186
- });
187
-
188
- test('should use resolved screenshot directory from SCREENSHOTS_DIR', async () => {
189
- const customDir = '/custom/path/screenshots';
190
- const deps = createMockDeps({
191
- resolveScreenshotDir: jest.fn(() => customDir) as any,
192
- });
193
-
194
- await executeScreenshot(deps);
195
-
196
- expect(deps.mkdir).toHaveBeenCalledWith(customDir, { recursive: true });
197
- expect(deps.writeFile).toHaveBeenCalledWith(
198
- join(customDir, `screenshot_${mockTimestamp}.png`),
199
- expect.any(Buffer)
200
- );
201
- });
202
-
203
- test('should create directory with recursive option', async () => {
204
- const deps = createMockDeps();
205
-
206
- await executeScreenshot(deps);
207
-
208
- expect(deps.mkdir).toHaveBeenCalledWith('/mock/screenshots', {
209
- recursive: true,
210
- });
211
- });
212
-
213
- test('should write screenshot buffer to correct filepath', async () => {
214
- const deps = createMockDeps();
215
-
216
- await executeScreenshot(deps);
217
-
218
- expect(deps.writeFile).toHaveBeenCalledWith(
219
- `/mock/screenshots/screenshot_${mockTimestamp}.png`,
220
- Buffer.from(mockBase64, 'base64')
221
- );
222
- });
223
-
224
- test('should return error content when screenshot fails', async () => {
225
- const errorMessage = 'Screenshot capture failed';
226
- const deps = createMockDeps({
227
- getDriver: jest.fn(() => ({
228
- getScreenshot: jest.fn(() => Promise.reject(new Error(errorMessage))),
229
- })) as any,
230
- });
231
-
232
- const result = await executeScreenshot(deps);
233
-
234
- expect(result).toEqual({
235
- content: [
236
- {
237
- type: 'text',
238
- text: `Failed to take screenshot. err: Error: ${errorMessage}`,
239
- },
240
- ],
241
- });
242
- });
243
-
244
- test('should return error content when mkdir fails', async () => {
245
- const errorMessage = 'Permission denied';
246
- const deps = createMockDeps({
247
- mkdir: jest.fn(() => Promise.reject(new Error(errorMessage))) as any,
248
- });
249
-
250
- const result = await executeScreenshot(deps);
251
-
252
- expect(result).toEqual({
253
- content: [
254
- {
255
- type: 'text',
256
- text: `Failed to take screenshot. err: Error: ${errorMessage}`,
257
- },
258
- ],
259
- });
260
- });
261
-
262
- test('should return error content when writeFile fails', async () => {
263
- const errorMessage = 'Disk full';
264
- const deps = createMockDeps({
265
- writeFile: jest.fn(() => Promise.reject(new Error(errorMessage))) as any,
266
- });
267
-
268
- const result = await executeScreenshot(deps);
269
-
270
- expect(result).toEqual({
271
- content: [
272
- {
273
- type: 'text',
274
- text: `Failed to take screenshot. err: Error: ${errorMessage}`,
275
- },
276
- ],
277
- });
278
- });
279
- });