@appium/mcp-documentation 1.0.2 → 1.0.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 (417) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +3 -6
  3. package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  4. package/src/resources/submodules/appium/.github/copilot-instructions.md +9 -0
  5. package/src/resources/submodules/appium/CHANGELOG.md +45 -0
  6. package/src/resources/submodules/appium/GOVERNANCE.md +189 -0
  7. package/src/resources/submodules/appium/README.md +221 -0
  8. package/src/resources/submodules/appium/ROADMAP.md +30 -0
  9. package/src/resources/submodules/appium/SPONSORS.md +3 -0
  10. package/src/resources/submodules/appium/docs/README.md +6 -0
  11. package/src/resources/submodules/appium/docs/payout.md +35 -0
  12. package/src/resources/submodules/appium/packages/appium/CHANGELOG.md +1547 -0
  13. package/src/resources/submodules/appium/packages/appium/README.md +221 -0
  14. package/src/resources/submodules/appium/packages/appium/docs/en/blog/index.md +2 -0
  15. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-appiumconf2024.md +45 -0
  16. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  17. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  18. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-development-partner.md +36 -0
  19. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-strategic-partner.md +42 -0
  20. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  21. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sponsorship-program.md +48 -0
  22. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/appium3.md +40 -0
  23. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/hello-world.md +15 -0
  24. package/src/resources/submodules/appium/packages/appium/docs/en/contributing/index.md +150 -0
  25. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-docs.md +86 -0
  26. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-doctor-checks.md +141 -0
  27. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-drivers.md +1002 -0
  28. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +523 -0
  29. package/src/resources/submodules/appium/packages/appium/docs/en/developing/config-system.md +451 -0
  30. package/src/resources/submodules/appium/packages/appium/docs/en/developing/index.md +18 -0
  31. package/src/resources/submodules/appium/packages/appium/docs/en/developing/sensitive.md +49 -0
  32. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/clients.md +132 -0
  33. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/drivers.md +207 -0
  34. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/index.md +45 -0
  35. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/plugins.md +138 -0
  36. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/tools.md +106 -0
  37. package/src/resources/submodules/appium/packages/appium/docs/en/guides/branch-testing.md +57 -0
  38. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caching.md +76 -0
  39. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caps.md +271 -0
  40. package/src/resources/submodules/appium/packages/appium/docs/en/guides/config.md +98 -0
  41. package/src/resources/submodules/appium/packages/appium/docs/en/guides/context.md +44 -0
  42. package/src/resources/submodules/appium/packages/appium/docs/en/guides/event-timing.md +73 -0
  43. package/src/resources/submodules/appium/packages/appium/docs/en/guides/execute-methods.md +122 -0
  44. package/src/resources/submodules/appium/packages/appium/docs/en/guides/grid.md +178 -0
  45. package/src/resources/submodules/appium/packages/appium/docs/en/guides/headers.md +17 -0
  46. package/src/resources/submodules/appium/packages/appium/docs/en/guides/log-filters.md +86 -0
  47. package/src/resources/submodules/appium/packages/appium/docs/en/guides/managing-exts.md +87 -0
  48. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-1-to-2.md +368 -0
  49. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-2-to-3.md +464 -0
  50. package/src/resources/submodules/appium/packages/appium/docs/en/guides/security.md +87 -0
  51. package/src/resources/submodules/appium/packages/appium/docs/en/guides/settings.md +68 -0
  52. package/src/resources/submodules/appium/packages/appium/docs/en/guides/tls.md +42 -0
  53. package/src/resources/submodules/appium/packages/appium/docs/en/index.md +59 -0
  54. package/src/resources/submodules/appium/packages/appium/docs/en/intro/appium.md +202 -0
  55. package/src/resources/submodules/appium/packages/appium/docs/en/intro/clients.md +127 -0
  56. package/src/resources/submodules/appium/packages/appium/docs/en/intro/drivers.md +188 -0
  57. package/src/resources/submodules/appium/packages/appium/docs/en/intro/history.md +196 -0
  58. package/src/resources/submodules/appium/packages/appium/docs/en/intro/index.md +39 -0
  59. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/index.md +29 -0
  60. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/install.md +50 -0
  61. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/next-steps.md +23 -0
  62. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/requirements.md +29 -0
  63. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-dotnet.md +105 -0
  64. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-java.md +23 -0
  65. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-js.md +75 -0
  66. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-py.md +60 -0
  67. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-rb.md +83 -0
  68. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/uiauto2-driver.md +144 -0
  69. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/appium.md +394 -0
  70. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/bidi.md +70 -0
  71. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/index.md +30 -0
  72. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/jsonwp.md +214 -0
  73. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/mjsonwp.md +151 -0
  74. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/others.md +736 -0
  75. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/plugins.md +289 -0
  76. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/webdriver.md +1114 -0
  77. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/env-vars.md +31 -0
  78. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/extensions.md +246 -0
  79. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +36 -0
  80. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/insecure-features.md +24 -0
  81. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +78 -0
  82. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/setup.md +76 -0
  83. package/src/resources/submodules/appium/packages/appium/docs/en/reference/index.md +31 -0
  84. package/src/resources/submodules/appium/packages/appium/docs/en/reference/session/caps.md +56 -0
  85. package/src/resources/submodules/appium/packages/appium/docs/en/reference/session/index.md +23 -0
  86. package/src/resources/submodules/appium/packages/appium/docs/en/resources/index.md +28 -0
  87. package/src/resources/submodules/appium/packages/appium/docs/en/sponsors/index.md +69 -0
  88. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/index.md +2 -0
  89. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-appiumconf2024.md +45 -0
  90. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  91. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  92. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-development-partner.md +34 -0
  93. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
  94. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  95. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sponsorship-program.md +48 -0
  96. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/appium3.md +40 -0
  97. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/hello-world.md +15 -0
  98. package/src/resources/submodules/appium/packages/appium/docs/ja/contributing/index.md +158 -0
  99. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-docs.md +86 -0
  100. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-doctor-checks.md +141 -0
  101. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-drivers.md +1010 -0
  102. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +529 -0
  103. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/config-system.md +468 -0
  104. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/index.md +18 -0
  105. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/sensitive.md +49 -0
  106. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/clients.md +143 -0
  107. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/drivers.md +219 -0
  108. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/index.md +45 -0
  109. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/plugins.md +140 -0
  110. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/tools.md +115 -0
  111. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/branch-testing.md +57 -0
  112. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caching.md +78 -0
  113. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caps.md +276 -0
  114. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/config.md +102 -0
  115. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/context.md +44 -0
  116. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/event-timing.md +75 -0
  117. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/execute-methods.md +142 -0
  118. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/grid.md +178 -0
  119. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/headers.md +17 -0
  120. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/log-filters.md +86 -0
  121. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/managing-exts.md +89 -0
  122. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-1-to-2.md +402 -0
  123. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-2-to-3.md +458 -0
  124. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/security.md +89 -0
  125. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/settings.md +70 -0
  126. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/tls.md +43 -0
  127. package/src/resources/submodules/appium/packages/appium/docs/ja/index.md +55 -0
  128. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/appium.md +191 -0
  129. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/clients.md +139 -0
  130. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/drivers.md +188 -0
  131. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/history.md +196 -0
  132. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/index.md +39 -0
  133. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/index.md +23 -0
  134. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/install.md +47 -0
  135. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/next-steps.md +19 -0
  136. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/requirements.md +29 -0
  137. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-dotnet.md +107 -0
  138. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-java.md +23 -0
  139. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-js.md +77 -0
  140. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-py.md +63 -0
  141. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-rb.md +85 -0
  142. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/uiauto2-driver.md +148 -0
  143. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/appium.md +395 -0
  144. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/bidi.md +71 -0
  145. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/index.md +30 -0
  146. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/jsonwp.md +215 -0
  147. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/mjsonwp.md +152 -0
  148. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/others.md +737 -0
  149. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/plugins.md +291 -0
  150. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/webdriver.md +1114 -0
  151. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/env-vars.md +31 -0
  152. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/extensions.md +247 -0
  153. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +36 -0
  154. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/insecure-features.md +23 -0
  155. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +78 -0
  156. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/setup.md +78 -0
  157. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/index.md +31 -0
  158. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/session/caps.md +56 -0
  159. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/session/index.md +23 -0
  160. package/src/resources/submodules/appium/packages/appium/docs/ja/resources/index.md +28 -0
  161. package/src/resources/submodules/appium/packages/appium/docs/ja/sponsors/index.md +66 -0
  162. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz-white.png +0 -0
  163. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png +0 -0
  164. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-white.png +0 -0
  165. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo.png +0 -0
  166. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png +0 -0
  167. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png +0 -0
  168. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-dark.png +0 -0
  169. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-light.png +0 -0
  170. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png +0 -0
  171. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-testmuai-dark.png +0 -0
  172. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-testmuai-light.png +0 -0
  173. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/index.md +2 -0
  174. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-appiumconf2024.md +45 -0
  175. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  176. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  177. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-development-partner.md +34 -0
  178. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
  179. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  180. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sponsorship-program.md +48 -0
  181. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/appium3.md +40 -0
  182. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/hello-world.md +15 -0
  183. package/src/resources/submodules/appium/packages/appium/docs/zh/contributing/index.md +132 -0
  184. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-docs.md +86 -0
  185. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-doctor-checks.md +141 -0
  186. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-drivers.md +1010 -0
  187. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +529 -0
  188. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/config-system.md +468 -0
  189. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/index.md +18 -0
  190. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/sensitive.md +49 -0
  191. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/clients.md +143 -0
  192. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/drivers.md +219 -0
  193. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/index.md +45 -0
  194. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/plugins.md +140 -0
  195. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/tools.md +115 -0
  196. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/branch-testing.md +57 -0
  197. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caching.md +78 -0
  198. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caps.md +279 -0
  199. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/config.md +102 -0
  200. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/context.md +44 -0
  201. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/event-timing.md +75 -0
  202. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/execute-methods.md +142 -0
  203. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/grid.md +178 -0
  204. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/headers.md +17 -0
  205. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/log-filters.md +86 -0
  206. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/managing-exts.md +89 -0
  207. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-1-to-2.md +410 -0
  208. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-2-to-3.md +459 -0
  209. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/security.md +89 -0
  210. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/settings.md +70 -0
  211. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/tls.md +43 -0
  212. package/src/resources/submodules/appium/packages/appium/docs/zh/index.md +54 -0
  213. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/appium.md +91 -0
  214. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +100 -0
  215. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +101 -0
  216. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +72 -0
  217. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +36 -0
  218. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/index.md +23 -0
  219. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/install.md +47 -0
  220. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/next-steps.md +19 -0
  221. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/requirements.md +21 -0
  222. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-dotnet.md +99 -0
  223. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-java.md +20 -0
  224. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-js.md +62 -0
  225. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-py.md +57 -0
  226. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-rb.md +80 -0
  227. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/uiauto2-driver.md +119 -0
  228. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/appium.md +395 -0
  229. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/bidi.md +71 -0
  230. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/index.md +30 -0
  231. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/jsonwp.md +215 -0
  232. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/mjsonwp.md +152 -0
  233. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/others.md +737 -0
  234. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/plugins.md +291 -0
  235. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/webdriver.md +1114 -0
  236. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/env-vars.md +31 -0
  237. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/extensions.md +247 -0
  238. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +36 -0
  239. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/insecure-features.md +23 -0
  240. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +78 -0
  241. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/setup.md +78 -0
  242. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/index.md +31 -0
  243. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/session/caps.md +56 -0
  244. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/session/index.md +23 -0
  245. package/src/resources/submodules/appium/packages/appium/docs/zh/resources/index.md +28 -0
  246. package/src/resources/submodules/appium/packages/appium/docs/zh/sponsors/index.md +66 -0
  247. package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +30 -0
  248. package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +1244 -0
  249. package/src/resources/submodules/appium/packages/base-driver/README.md +15 -0
  250. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/errors.md +82 -0
  251. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/protocol-methods.md +182 -0
  252. package/src/resources/submodules/appium/packages/base-driver/static/appium.png +0 -0
  253. package/src/resources/submodules/appium/packages/base-plugin/CHANGELOG.md +764 -0
  254. package/src/resources/submodules/appium/packages/base-plugin/README.md +15 -0
  255. package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +1038 -0
  256. package/src/resources/submodules/appium/packages/docutils/README.md +27 -0
  257. package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +790 -0
  258. package/src/resources/submodules/appium/packages/driver-test-support/README.md +103 -0
  259. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +256 -0
  260. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +47 -0
  261. package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +671 -0
  262. package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +55 -0
  263. package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +603 -0
  264. package/src/resources/submodules/appium/packages/fake-driver/README.md +7 -0
  265. package/src/resources/submodules/appium/packages/fake-driver/lib/screen.png +0 -0
  266. package/src/resources/submodules/appium/packages/fake-plugin/CHANGELOG.md +780 -0
  267. package/src/resources/submodules/appium/packages/fake-plugin/README.md +7 -0
  268. package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +691 -0
  269. package/src/resources/submodules/appium/packages/images-plugin/README.md +27 -0
  270. package/src/resources/submodules/appium/packages/images-plugin/docs/find-by-image.md +65 -0
  271. package/src/resources/submodules/appium/packages/images-plugin/docs/image-comparison.md +203 -0
  272. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/appstore.png +0 -0
  273. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img1.png +0 -0
  274. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2.png +0 -0
  275. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2_part.png +0 -0
  276. package/src/resources/submodules/appium/packages/logger/CHANGELOG.md +212 -0
  277. package/src/resources/submodules/appium/packages/logger/README.md +31 -0
  278. package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +446 -0
  279. package/src/resources/submodules/appium/packages/opencv/README.md +68 -0
  280. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/appium-diagram.jpg +0 -0
  281. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc1.png +0 -0
  282. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc2.png +0 -0
  283. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc_rotated.png +0 -0
  284. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/findwaldo.jpg +0 -0
  285. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/number5.png +0 -0
  286. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/waldo.jpg +0 -0
  287. package/src/resources/submodules/appium/packages/plugin-test-support/CHANGELOG.md +610 -0
  288. package/src/resources/submodules/appium/packages/plugin-test-support/README.md +49 -0
  289. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/CHANGELOG.md +209 -0
  290. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +35 -0
  291. package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +308 -0
  292. package/src/resources/submodules/appium/packages/schema/README.md +50 -0
  293. package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +157 -0
  294. package/src/resources/submodules/appium/packages/storage-plugin/README.md +83 -0
  295. package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +129 -0
  296. package/src/resources/submodules/appium/packages/strongbox/README.md +110 -0
  297. package/src/resources/submodules/appium/packages/support/CHANGELOG.md +1147 -0
  298. package/src/resources/submodules/appium/packages/support/README.md +161 -0
  299. package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +147 -0
  300. package/src/resources/submodules/appium/packages/tsconfig/README.md +19 -0
  301. package/src/resources/submodules/appium/packages/types/CHANGELOG.md +871 -0
  302. package/src/resources/submodules/appium/packages/types/README.md +21 -0
  303. package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +502 -0
  304. package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +53 -0
  305. package/src/resources/submodules/appium/renovate/README.md +55 -0
  306. package/src/resources/submodules/appium-skills/.github/dependabot.yml +11 -0
  307. package/src/resources/submodules/appium-skills/.github/workflows/pr-title.yml +10 -0
  308. package/src/resources/submodules/appium-skills/AGENTS.md +214 -0
  309. package/src/resources/submodules/appium-skills/LICENSE +201 -0
  310. package/src/resources/submodules/appium-skills/README.md +33 -0
  311. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/SKILL.md +66 -0
  312. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/community-search.md +51 -0
  313. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/uiautomator2-locators.md +34 -0
  314. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/uiautomator2-session-startup.md +53 -0
  315. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/xcuitest-element-lookup.md +23 -0
  316. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/xcuitest-locators.md +16 -0
  317. package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/xcuitest-troubleshooting.md +52 -0
  318. package/src/resources/submodules/appium-skills/skills/environment-setup-android/SKILL.md +346 -0
  319. package/src/resources/submodules/appium-skills/skills/environment-setup-bundletool/SKILL.md +91 -0
  320. package/src/resources/submodules/appium-skills/skills/environment-setup-chromium/SKILL.md +260 -0
  321. package/src/resources/submodules/appium-skills/skills/environment-setup-espresso/SKILL.md +216 -0
  322. package/src/resources/submodules/appium-skills/skills/environment-setup-ffmpeg/SKILL.md +91 -0
  323. package/src/resources/submodules/appium-skills/skills/environment-setup-node/SKILL.md +128 -0
  324. package/src/resources/submodules/appium-skills/skills/environment-setup-uiautomator2/SKILL.md +225 -0
  325. package/src/resources/submodules/appium-skills/skills/environment-setup-xcuitest/SKILL.md +153 -0
  326. package/src/resources/submodules/appium-skills/skills/xcuitest-real-device-config/SKILL.md +488 -0
  327. package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +1506 -0
  328. package/src/resources/submodules/appium-uiautomator2-driver/README.md +2253 -0
  329. package/src/resources/submodules/appium-uiautomator2-driver/docs/actions.md +72 -0
  330. package/src/resources/submodules/appium-uiautomator2-driver/docs/activity-startup.md +47 -0
  331. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-appbundle.md +69 -0
  332. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-mobile-gestures.md +352 -0
  333. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-multiwindow.md +872 -0
  334. package/src/resources/submodules/appium-uiautomator2-driver/docs/architecture.md +34 -0
  335. package/src/resources/submodules/appium-uiautomator2-driver/docs/bidi.md +50 -0
  336. package/src/resources/submodules/appium-uiautomator2-driver/docs/capability-sets.md +136 -0
  337. package/src/resources/submodules/appium-uiautomator2-driver/docs/mjpeg.md +111 -0
  338. package/src/resources/submodules/appium-uiautomator2-driver/docs/scheduled-actions.md +155 -0
  339. package/src/resources/submodules/appium-uiautomator2-driver/docs/uiautomator-uiselector.md +51 -0
  340. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/main.md +95 -0
  341. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen1.png +0 -0
  342. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen2.png +0 -0
  343. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/checkered-squares.png +0 -0
  344. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/start-button.png +0 -0
  345. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/stop-button.png +0 -0
  346. package/src/resources/submodules/appium-xcuitest-driver/.github/ISSUE_TEMPLATE.md +4 -0
  347. package/src/resources/submodules/appium-xcuitest-driver/CHANGELOG.md +3373 -0
  348. package/src/resources/submodules/appium-xcuitest-driver/README.md +55 -0
  349. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png +0 -0
  350. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo.png +0 -0
  351. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png +0 -0
  352. package/src/resources/submodules/appium-xcuitest-driver/docs/contributing.md +45 -0
  353. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints-wda.md +61 -0
  354. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints.md +95 -0
  355. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/device-setup.md +81 -0
  356. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/index.md +36 -0
  357. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/installation.md +38 -0
  358. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/check-prov-prof.png +0 -0
  359. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/create-new-project.png +0 -0
  360. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/create-single-page.png +0 -0
  361. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/no-prov-prof.png +0 -0
  362. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/project-prov-prof.png +0 -0
  363. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/set-up-bundle.png +0 -0
  364. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/untrusted-dev.png +0 -0
  365. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-bundle-id.png +0 -0
  366. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-config.png +0 -0
  367. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-facebook-fail.png +0 -0
  368. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-facebook-succeed.png +0 -0
  369. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/auto-config.md +54 -0
  370. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/basic-manual-config.md +40 -0
  371. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/full-manual-config.md +49 -0
  372. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/generic-device-config.md +75 -0
  373. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/index.md +117 -0
  374. package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/system-requirements.md +131 -0
  375. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/keynote.png +0 -0
  376. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/on_my_iphone.png +0 -0
  377. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/top_files.png +0 -0
  378. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/attach-to-running-wda.md +43 -0
  379. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/audio-capture.md +78 -0
  380. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/biometric-auth.md +29 -0
  381. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/capability-sets.md +169 -0
  382. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/ci-setup.md +47 -0
  383. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/clipboard.md +47 -0
  384. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/file-transfer.md +147 -0
  385. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/gestures.md +55 -0
  386. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/hybrid.md +137 -0
  387. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/input-events.md +67 -0
  388. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/install-certificate.md +20 -0
  389. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/mjpeg.md +98 -0
  390. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/multiple-xcode-versions.md +37 -0
  391. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/parallel-tests.md +39 -0
  392. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/remotexpc-tunnels-real-devices.md +148 -0
  393. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-prebuilt-wda.md +147 -0
  394. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +177 -0
  395. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +246 -0
  396. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +283 -0
  397. package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +36 -0
  398. package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +137 -0
  399. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/assets/images/useXctestrunFile.png +0 -0
  400. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/bidi.md +192 -0
  401. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +164 -0
  402. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +468 -0
  403. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +157 -0
  404. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/env-vars.md +18 -0
  405. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +2269 -0
  406. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/ios-predicate.md +196 -0
  407. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/locator-strategies.md +107 -0
  408. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +555 -0
  409. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +28 -0
  410. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +19 -0
  411. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +467 -0
  412. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/xpath-extensions.md +167 -0
  413. package/src/resources/submodules/appium-xcuitest-driver/docs/troubleshooting/element-lookup.md +202 -0
  414. package/src/resources/submodules/appium-xcuitest-driver/docs/troubleshooting/index.md +204 -0
  415. package/src/resources/submodules/appium-xcuitest-driver/docs/troubleshooting/wda-slowness.md +206 -0
  416. package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
  417. package/src/resources/submodules.zip +0 -0
@@ -0,0 +1,23 @@
1
+ # XCUITest Element Lookup Troubleshooting
2
+
3
+ ## Official Reference
4
+ - `https://appium.github.io/appium-xcuitest-driver/latest/guides/elements-lookup-troubleshooting/`
5
+
6
+ ## When To Read This
7
+ - elements visible to a human are missing in Appium Inspector
8
+ - source dumps look incomplete
9
+ - an iOS locator works intermittently
10
+ - lookup is unexpectedly slow
11
+
12
+ Use the official guide for the full symptom matrix. This page keeps only the local checks that are easiest to miss.
13
+
14
+ ## Local Triage
15
+ 1. Collect source from the same environment as the failing test: same simulator or device, OS version, app build, orientation, and permission state.
16
+ 2. Confirm the element exists in the current source dump before changing selector syntax.
17
+ 3. Inspect the attributes the element actually exposes: `name`, `label`, `value`, type, visibility, and enabled state.
18
+ 4. Verify the active application and window in WebDriverAgent. System alerts, share sheets, and other overlays may belong to a different active app.
19
+ 5. Change snapshot-related settings only after confirming a deep or incomplete tree problem, then compare the same single lookup before and after.
20
+
21
+ ## Notes
22
+ - A missing element in source is usually an accessibility, app-state, or active-application problem first, not a locator problem.
23
+ - If the app uses web content, confirm the current context before continuing native lookup debugging.
@@ -0,0 +1,16 @@
1
+ # XCUITest Locators
2
+
3
+ ## Official Reference
4
+ - `https://appium.github.io/appium-xcuitest-driver/latest/reference/locator-strategies/`
5
+
6
+ Use the driver docs for the full strategy ordering and syntax. This page keeps only the local debugging notes that help choose among them.
7
+
8
+ ## Local Guidance
9
+ - On XCUITest, `id`, `name`, and `accessibility id` are treated as synonyms over the element `name` attribute. Check the current source before assuming that attribute is stable in this app.
10
+ - Use `-ios predicate string` or `-ios class chain` when you need native filtering or hierarchy scoping; keep the query tied to attributes that are visible in source.
11
+ - Treat `xpath` as a fallback for cases where the source does not expose a simpler native path. If `xpath` is the first thing that works, use it to learn the tree and then replace it if a native selector is available.
12
+ - If the element is absent from source, stop iterating locator syntax and switch to the element-lookup troubleshooting flow.
13
+
14
+ ## Validation
15
+ - Re-run the exact failing lookup against the same screen.
16
+ - Prefer the simplest native selector that still uniquely identifies the element.
@@ -0,0 +1,52 @@
1
+ # XCUITest Troubleshooting
2
+
3
+ ## Official References
4
+ - `https://appium.github.io/appium-xcuitest-driver/latest/guides/troubleshooting/`
5
+ - `https://github.com/appium/appium-xcuitest-driver`
6
+
7
+ ## When To Read This
8
+ - WebDriverAgent does not build, install, or stay reachable
9
+ - session startup stalls or fails on simulator or real device
10
+ - app install or launch fails on iOS
11
+ - system alerts block automation
12
+ - simulator or real-device state looks corrupted
13
+
14
+ This page is a compact entry point into the official XCUITest troubleshooting guide.
15
+
16
+ ## Local Triage Map
17
+ | Symptom | Verify First | Avoid Until Confirmed |
18
+ |---|---|---|
19
+ | WDA build or signing failure | `xcode-select`, `xcodebuild -version`, `appium driver doctor xcuitest`, and real-device signing setup | changing unrelated test capabilities |
20
+ | Proxy timeout or connection reset right after session start | fresh Appium logs, WDA reachability, and real-device unlock/trust/Developer Mode state | blaming locators or app logic |
21
+ | App install or launch fails | app binary compatibility with the target runtime or device | treating it as a generic WDA failure |
22
+ | System alert blocks the test | whether the alert should be explicitly handled or automatically accepted/dismissed | enabling auto-alert handling without matching test intent |
23
+ | One simulator behaves differently from others | one clean shutdown and retry | erase/reset before confirming corruption |
24
+
25
+ ## Useful Checks
26
+ ```bash
27
+ xcodebuild -version
28
+ xcode-select -p
29
+ appium driver doctor xcuitest
30
+ xcrun simctl list devices
31
+ xcrun simctl list runtimes
32
+ grep -i "WebDriverAgent\|Proxying\|timed out" <appium-server-log-file>
33
+ ```
34
+
35
+ ## Real Device WDA Reachability
36
+ - If WDA builds but commands time out right after session start on a real device, verify that the Appium log is actually proxying to a reachable WDA URL, typically `http://localhost:8100` when port forwarding is active.
37
+ - If you manage WDA yourself, confirm the `appium:webDriverAgentUrl` value points to the actual reachable WDA endpoint, and supply `appium:wdaRemotePort` when the remote device port differs from the local forwarded port.
38
+ - Prefer this real-device check before simulator-only recovery steps.
39
+
40
+ ## Real Device WDA Reachability Sequence
41
+ 1. Capture the Appium server log lines around the first timed out command and confirm which WDA URL Appium is proxying to.
42
+ 2. If the environment forwards the device port locally, run:
43
+ ```bash
44
+ curl -sf http://localhost:8100/status
45
+ ```
46
+ A healthy response means the forwarded WDA endpoint is reachable from the host.
47
+ 3. If you set `appium:webDriverAgentUrl`, compare it directly with the reachable endpoint. If the device-side port is not the default `8100`, set `appium:wdaRemotePort` to the device-side port that WDA actually listens on.
48
+ 4. Only after the reachability check passes should you move on to deeper app or locator troubleshooting.
49
+
50
+ ## Notes
51
+ - Do not treat every iOS launch failure as a locator issue; many are WDA or device-state problems.
52
+ - If the issue only happens on one real device or one simulator runtime, include that environment detail in the root-cause summary.
@@ -0,0 +1,346 @@
1
+ ---
2
+ name: "environment-setup-android"
3
+ description: "Prepare and validate Android SDK, Java, and device tooling for Appium Android drivers"
4
+ metadata:
5
+ last_modified: "Mon, 27 Apr 2026 22:00:00 GMT"
6
+
7
+ ---
8
+ # environment-setup-android
9
+
10
+ ## Goal
11
+ Prepares a working Android automation environment for Appium by validating Java, Android SDK command-line tools, required SDK packages, environment variables, and ADB device visibility, with a verify-and-fix loop until all mandatory checks pass.
12
+
13
+ ## Decision Logic
14
+ - If host OS is unsupported for Android SDK setup: stop and ask the user to switch to macOS, Linux, or Windows.
15
+ - If `java -version` and `javac -version` already succeed: keep the existing Java setup and do not reconfigure `JAVA_HOME`.
16
+ - If host OS is macOS and Java setup is needed (fresh environment): use Android Studio app setup as the primary method for both `ANDROID_HOME` (`$HOME/Library/Android/sdk`) and `JAVA_HOME` (Android Studio JBR). Check both `/Applications/Android Studio.app` and `$HOME/Applications/Android Studio.app`, and prefer the official direct download flow before Homebrew.
17
+ - If host OS is Linux and Java setup is needed (fresh environment): use Android Studio bundled JBR as the primary method when Android Studio is installed, then fallback to distro/package-manager OpenJDK.
18
+ - If host OS is Windows and Java setup is needed (fresh environment): use Android Studio bundled JBR as the primary method when Android Studio is installed, then fallback to Microsoft OpenJDK package install.
19
+ - If host OS is Linux: use package manager + `$HOME/Android/Sdk` conventions.
20
+ - If host OS is Windows: use Android SDK tools with persistent user environment variables.
21
+ - If `java` or `javac` is missing: run step 3 to install/configure Java.
22
+ - If the user wants official Android tooling setup flow: download Android Studio from the official site first, use its bundled JBR for Java, then bootstrap the SDK with the official `sdkmanager`.
23
+ - If `ANDROID_HOME` is unset/empty or the `ANDROID_HOME` path does not exist: run step 2 to install command-line tools and create the SDK path.
24
+ - If Java tooling is missing or broken (`java`/`javac` checks fail): run step 3 before Android SDK package/license commands.
25
+ - If `adb` is missing: install `platform-tools` via `sdkmanager`.
26
+ - If emulator binary is missing under `ANDROID_HOME/emulator/emulator` (or Windows equivalent): install emulator packages.
27
+ - Prepare emulator instances using the latest stable system-image version by default.
28
+ - Use host-optimized emulator architecture (native architecture first, then fallback architecture).
29
+ - Skip step 7 emulator preparation if at least one device is already connected or at least one emulator instance already exists.
30
+ - If required SDK packages are missing: install them and re-run checks.
31
+
32
+ ## Instructions
33
+ 1. **Detect OS and validate Java/base tooling**
34
+ macOS/Linux:
35
+ ```bash
36
+ uname -s
37
+ java -version
38
+ javac -version
39
+ echo "$JAVA_HOME"
40
+ command -v adb
41
+ ls "$ANDROID_HOME/emulator/emulator"
42
+ test -x "$ANDROID_HOME/emulator/emulator" && echo "emulator binary: OK"
43
+ ```
44
+ Windows PowerShell:
45
+ ```powershell
46
+ [System.Environment]::OSVersion.VersionString
47
+ java -version
48
+ javac -version
49
+ $env:JAVA_HOME
50
+ Get-Command adb.exe -ErrorAction SilentlyContinue
51
+ Test-Path "$env:ANDROID_HOME\emulator\emulator.exe"
52
+ ```
53
+
54
+ 2. **Install Android SDK tooling when `ANDROID_HOME` path is missing**
55
+ Trigger checks:
56
+ - macOS/Linux:
57
+ ```bash
58
+ [ -n "$ANDROID_HOME" ] && [ -d "$ANDROID_HOME" ] || echo "run step 2"
59
+ ```
60
+ - Windows PowerShell:
61
+ ```powershell
62
+ if (-not $env:ANDROID_HOME -or -not (Test-Path $env:ANDROID_HOME)) { "run step 2" }
63
+ ```
64
+ Option A (Android Studio app path; macOS priority when app exists):
65
+ - Download Android Studio from `https://developer.android.com/studio`.
66
+ - On macOS, check for the app in both `/Applications/Android Studio.app` and `$HOME/Applications/Android Studio.app`.
67
+ - You may either complete first launch and install SDK components from SDK Manager, or use the bundled JBR plus the official command-line tools zip to bootstrap the SDK non-interactively with `sdkmanager`.
68
+ - Use platform default SDK path after setup:
69
+ - macOS: `$HOME/Library/Android/sdk`
70
+ - Linux: `$HOME/Android/Sdk`
71
+ - Windows: `%LOCALAPPDATA%\Android\Sdk`
72
+
73
+ Option B (CLI tools only):
74
+ - macOS official command-line tools example:
75
+ ```bash
76
+ curl -L -o /tmp/commandlinetools-mac-latest.zip https://dl.google.com/android/repository/commandlinetools-mac-14742923_latest.zip
77
+ unzip -q /tmp/commandlinetools-mac-latest.zip -d /tmp/android-cmdline-tools
78
+ export JAVA_HOME="$HOME/Applications/Android Studio.app/Contents/jbr/Contents/Home"
79
+ if [ ! -d "$JAVA_HOME" ]; then
80
+ export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
81
+ fi
82
+ export PATH="$JAVA_HOME/bin:$PATH"
83
+ /tmp/android-cmdline-tools/cmdline-tools/bin/sdkmanager --sdk_root="$HOME/Library/Android/sdk" "cmdline-tools;latest"
84
+ ```
85
+ - macOS/Homebrew fallback example:
86
+ ```bash
87
+ [ -d "/Applications/Android Studio.app" ] || brew install --cask android-commandlinetools
88
+ mkdir -p "$HOME/Library/Android/sdk/cmdline-tools/latest"
89
+ cp -R /opt/homebrew/share/android-commandlinetools/* "$HOME/Library/Android/sdk/cmdline-tools/latest/"
90
+ ```
91
+ - Linux example (Debian/Ubuntu-style prerequisites + cmdline tools placement):
92
+ ```bash
93
+ sudo apt-get update
94
+ sudo apt-get install -y unzip wget openjdk-21-jdk
95
+ mkdir -p "$HOME/Android/Sdk/cmdline-tools/latest"
96
+ ```
97
+ - Windows example (PowerShell, after extracting Android command-line tools zip):
98
+ ```powershell
99
+ New-Item -ItemType Directory -Force "$env:LOCALAPPDATA\Android\Sdk\cmdline-tools\latest"
100
+ ```
101
+
102
+ 3. **Configure Java for fresh environments (skip if Java already works)**
103
+ Trigger checks:
104
+ - macOS/Linux:
105
+ ```bash
106
+ if command -v java >/dev/null 2>&1 && command -v javac >/dev/null 2>&1; then
107
+ java -version >/dev/null 2>&1 && javac -version >/dev/null 2>&1 && echo "Java already available; skip step 3" || echo "run step 3"
108
+ else
109
+ echo "run step 3"
110
+ fi
111
+ ```
112
+ - Windows PowerShell:
113
+ ```powershell
114
+ if ((Get-Command java.exe -ErrorAction SilentlyContinue) -and (Get-Command javac.exe -ErrorAction SilentlyContinue)) {
115
+ java -version *> $null
116
+ if ($LASTEXITCODE -eq 0) {
117
+ javac -version *> $null
118
+ if ($LASTEXITCODE -eq 0) { "Java already available; skip step 3" } else { "run step 3" }
119
+ } else { "run step 3" }
120
+ } else { "run step 3" }
121
+ ```
122
+ macOS primary method for fresh setup (Android Studio bundled JBR):
123
+ ```bash
124
+ if [ -d "$HOME/Applications/Android Studio.app/Contents/jbr/Contents/Home" ]; then
125
+ export JAVA_HOME="$HOME/Applications/Android Studio.app/Contents/jbr/Contents/Home"
126
+ export PATH="$JAVA_HOME/bin:$PATH"
127
+ java -version
128
+ javac -version
129
+ elif [ -d "/Applications/Android Studio.app/Contents/jbr/Contents/Home" ]; then
130
+ export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
131
+ export PATH="$JAVA_HOME/bin:$PATH"
132
+ java -version
133
+ javac -version
134
+ else
135
+ echo "Android Studio JBR not found; use fallback method below"
136
+ fi
137
+ ```
138
+ macOS fallback method (only when Android Studio is not installed):
139
+ ```bash
140
+ brew install --cask temurin
141
+ export JAVA_HOME="$(/usr/libexec/java_home -v 21)"
142
+ export PATH="$JAVA_HOME/bin:$PATH"
143
+ java -version
144
+ javac -version
145
+ ```
146
+ Linux primary method for fresh setup (Android Studio bundled JBR):
147
+ ```bash
148
+ if [ -d "$HOME/android-studio/jbr" ]; then
149
+ export JAVA_HOME="$HOME/android-studio/jbr"
150
+ elif [ -d "/opt/android-studio/jbr" ]; then
151
+ export JAVA_HOME="/opt/android-studio/jbr"
152
+ elif [ -d "/usr/local/android-studio/jbr" ]; then
153
+ export JAVA_HOME="/usr/local/android-studio/jbr"
154
+ else
155
+ echo "Android Studio JBR not found; use fallback method below"
156
+ fi
157
+ if [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ]; then
158
+ export PATH="$JAVA_HOME/bin:$PATH"
159
+ java -version
160
+ javac -version
161
+ fi
162
+ ```
163
+ Linux fallback method (OpenJDK 21 example):
164
+ ```bash
165
+ export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
166
+ export PATH="$JAVA_HOME/bin:$PATH"
167
+ java -version
168
+ javac -version
169
+ ```
170
+ Windows primary method for fresh setup (Android Studio bundled JBR, persist for current user):
171
+ ```powershell
172
+ $studioJbrCandidates = @(
173
+ "$env:LOCALAPPDATA\Programs\Android Studio\jbr",
174
+ "C:\Program Files\Android\Android Studio\jbr"
175
+ )
176
+ $studioJbr = $studioJbrCandidates | Where-Object { Test-Path $_ } | Select-Object -First 1
177
+ if ($studioJbr) {
178
+ [Environment]::SetEnvironmentVariable('JAVA_HOME', $studioJbr, 'User')
179
+ $currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
180
+ if ($currentPath -notlike "*$studioJbr\bin*") {
181
+ [Environment]::SetEnvironmentVariable('Path', "$currentPath;$studioJbr\bin", 'User')
182
+ }
183
+ $env:JAVA_HOME = [Environment]::GetEnvironmentVariable('JAVA_HOME', 'User')
184
+ $env:PATH = "$studioJbr\bin;$env:PATH"
185
+ java -version
186
+ javac -version
187
+ } else {
188
+ "Android Studio JBR not found; use fallback method below"
189
+ }
190
+ ```
191
+ Windows fallback method (only when Android Studio is not installed):
192
+ ```powershell
193
+ winget install -e --id Microsoft.OpenJDK.17 --accept-source-agreements --accept-package-agreements
194
+ $jdkRoot = Get-ChildItem "C:\Program Files\Microsoft" -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -like 'jdk-*' } | Sort-Object Name -Descending | Select-Object -First 1
195
+ if ($jdkRoot) {
196
+ [Environment]::SetEnvironmentVariable('JAVA_HOME', $jdkRoot.FullName, 'User')
197
+ $currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
198
+ if ($currentPath -notlike "*$($jdkRoot.FullName)\\bin*") {
199
+ [Environment]::SetEnvironmentVariable('Path', "$currentPath;$($jdkRoot.FullName)\\bin", 'User')
200
+ }
201
+ $env:JAVA_HOME = [Environment]::GetEnvironmentVariable('JAVA_HOME', 'User')
202
+ $env:PATH = "$env:JAVA_HOME\\bin;$env:PATH"
203
+ }
204
+ java -version
205
+ javac -version
206
+ ```
207
+
208
+ 4. **Configure Android environment variables and PATH**
209
+ macOS (priority: Android Studio SDK path):
210
+ ```bash
211
+ export ANDROID_HOME="$HOME/Library/Android/sdk"
212
+ export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/emulator:$PATH"
213
+ echo "$ANDROID_HOME"
214
+ command -v adb
215
+ ls "$ANDROID_HOME/emulator/emulator"
216
+ ```
217
+ Linux:
218
+ ```bash
219
+ export ANDROID_HOME="$HOME/Android/Sdk"
220
+ export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
221
+ echo "$ANDROID_HOME"
222
+ command -v adb
223
+ ls "$ANDROID_HOME/emulator/emulator"
224
+ ```
225
+ Windows PowerShell (persist for current user):
226
+ ```powershell
227
+ [Environment]::SetEnvironmentVariable('ANDROID_HOME', "$env:LOCALAPPDATA\Android\Sdk", 'User')
228
+ $androidPaths = "$env:LOCALAPPDATA\Android\Sdk\platform-tools;$env:LOCALAPPDATA\Android\Sdk\cmdline-tools\latest\bin"
229
+ $currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
230
+ if ($currentPath -notlike "*$androidPaths*") {
231
+ [Environment]::SetEnvironmentVariable('Path', "$currentPath;$androidPaths", 'User')
232
+ }
233
+ $env:ANDROID_HOME = [Environment]::GetEnvironmentVariable('ANDROID_HOME', 'User')
234
+ ```
235
+
236
+ 5. **Accept SDK licenses and install required packages**
237
+ macOS/Linux:
238
+ ```bash
239
+ if command -v sdkmanager >/dev/null 2>&1; then yes | sdkmanager --sdk_root="$ANDROID_HOME" --licenses; fi
240
+ if command -v sdkmanager >/dev/null 2>&1; then sdkmanager --sdk_root="$ANDROID_HOME" "platform-tools" "build-tools;34.0.0" "platforms;android-34" "emulator"; fi
241
+ ```
242
+ Windows PowerShell:
243
+ ```powershell
244
+ if (Get-Command sdkmanager.bat -ErrorAction SilentlyContinue) { cmd /c "(for /l %i in (1,1,200) do @echo y)| sdkmanager.bat --licenses" }
245
+ if (Get-Command sdkmanager.bat -ErrorAction SilentlyContinue) { sdkmanager.bat "platform-tools" "build-tools;34.0.0" "platforms;android-34" "emulator" }
246
+ ```
247
+ If license acceptance still fails in headless CI-like runs, pre-seed license hashes and retry package install:
248
+ ```powershell
249
+ $licensesDir = "$env:ANDROID_HOME\licenses"
250
+ New-Item -ItemType Directory -Force $licensesDir | Out-Null
251
+ Set-Content -Path "$licensesDir\android-sdk-license" -Value "24333f8a63b6825ea9c5514f83c2829b004d1fee`n8933bad161af4178b1185d1a37fbf41ea5269c55`nd56f5187479451eabf01fb78af6dfcb131a6481e"
252
+ ```
253
+
254
+ 6. **Verify Android SDK and ADB state**
255
+ macOS/Linux:
256
+ ```bash
257
+ if command -v sdkmanager >/dev/null 2>&1; then sdkmanager --list | head -n 80; fi
258
+ adb version
259
+ command -v emulator
260
+ ls "$ANDROID_HOME/emulator/emulator"
261
+ test -x "$ANDROID_HOME/emulator/emulator" && echo "emulator binary: OK"
262
+ ```
263
+ Windows PowerShell:
264
+ ```powershell
265
+ if (Get-Command sdkmanager.bat -ErrorAction SilentlyContinue) { sdkmanager.bat --list }
266
+ adb.exe version
267
+ Test-Path "$env:ANDROID_HOME\emulator\emulator.exe"
268
+ ```
269
+
270
+ 7. **Optional emulator instance preparation (if no physical device is connected and no emulator exists)**
271
+ Skip step 7 when either of the following is true:
272
+ - At least one device is already connected (`adb devices` shows a `device` entry)
273
+ - At least one emulator instance already exists (`emulator -list-avds` is non-empty)
274
+
275
+ Prepare an emulator instance using the latest stable system-image version and host-optimized architecture only when both are false.
276
+ macOS/Linux (prefer native architecture first, then fallback):
277
+ ```bash
278
+ ARCH=$(uname -m)
279
+ if [ "$ARCH" = "arm64" ] || [ "$ARCH" = "aarch64" ]; then
280
+ PRIMARY_ARCH="arm64-v8a"
281
+ FALLBACK_ARCH="x86_64"
282
+ else
283
+ PRIMARY_ARCH="x86_64"
284
+ FALLBACK_ARCH="arm64-v8a"
285
+ fi
286
+ LATEST_API=$(sdkmanager --list | grep -o "system-images;android-[0-9]\+;google_apis;${PRIMARY_ARCH}" | sed 's/.*android-\([0-9]\+\).*/\1/' | sort -n | tail -1)
287
+ IMAGE_ARCH="$PRIMARY_ARCH"
288
+ if [ -z "$LATEST_API" ]; then
289
+ LATEST_API=$(sdkmanager --list | grep -o "system-images;android-[0-9]\+;google_apis;${FALLBACK_ARCH}" | sed 's/.*android-\([0-9]\+\).*/\1/' | sort -n | tail -1)
290
+ IMAGE_ARCH="$FALLBACK_ARCH"
291
+ fi
292
+ IMAGE="system-images;android-${LATEST_API};google_apis;${IMAGE_ARCH}"
293
+ sdkmanager "$IMAGE"
294
+ echo "no" | avdmanager create avd -n "api${LATEST_API}-google-${IMAGE_ARCH}" -k "$IMAGE"
295
+ emulator -list-avds
296
+ ```
297
+ Windows PowerShell (prefer x86_64, fallback arm64-v8a):
298
+ ```powershell
299
+ $primaryArch = "x86_64"
300
+ $fallbackArch = "arm64-v8a"
301
+ $matches = sdkmanager.bat --list | Select-String "system-images;android-[0-9]+;google_apis;$primaryArch"
302
+ $imageArch = $primaryArch
303
+ if (-not $matches) {
304
+ $matches = sdkmanager.bat --list | Select-String "system-images;android-[0-9]+;google_apis;$fallbackArch"
305
+ $imageArch = $fallbackArch
306
+ }
307
+ $latestApi = ($matches | ForEach-Object { [int]([regex]::Match($_.Line, 'android-(\d+)').Groups[1].Value) } | Sort-Object)[-1]
308
+ $image = "system-images;android-$latestApi;google_apis;$imageArch"
309
+ sdkmanager.bat $image
310
+ cmd /c "echo no| avdmanager.bat create avd -n api$latestApi-google-$imageArch -k $image"
311
+ emulator.exe -list-avds
312
+ ```
313
+ Report version details in the task result:
314
+ - macOS/Linux:
315
+ ```bash
316
+ emulator -version
317
+ emulator -list-avds
318
+ if command -v sdkmanager >/dev/null 2>&1; then sdkmanager --list | grep "system-images;android-" | head -n 20; fi
319
+ ```
320
+ - Windows PowerShell:
321
+ ```powershell
322
+ emulator.exe -version
323
+ emulator.exe -list-avds
324
+ if (Get-Command sdkmanager.bat -ErrorAction SilentlyContinue) { sdkmanager.bat --list | Select-String "system-images;android-" | Select-Object -First 20 }
325
+ ```
326
+
327
+ 8. **Completion criteria**
328
+ Mark complete only when all are true:
329
+ - `java -version` and `javac -version` succeed
330
+ - `adb` is executable from `PATH`
331
+ - Emulator binary exists under `ANDROID_HOME/emulator/emulator` (or `%ANDROID_HOME%\emulator\emulator.exe` on Windows)
332
+ - Required SDK packages are installed (`platform-tools`, one platform, one build-tools version)
333
+ - Existing Java setup is preserved when Java already works (no forced reconfiguration)
334
+ - On fresh setup, Android Studio bundled JBR is used as `JAVA_HOME` when Android Studio is present (macOS/Linux/Windows)
335
+ - Android environment checks pass without requiring a connected device
336
+ - Latest stable emulator/system-image version is prepared with host-optimized architecture only when no connected devices and no existing emulators are present; otherwise step 7 is skipped and current version details are reported in the task result
337
+
338
+ ## Constraints
339
+ - Always use detect-first behavior and install only missing components.
340
+ - Re-run validation commands after each install/config change.
341
+ - Do not report success if `adb` is unavailable or emulator binary check fails.
342
+ - Treat optional dependencies and optional doctor warnings as non-blocking unless the user requests those features.
343
+ - Ask the user before installing optional dependencies; do not install them by default.
344
+ - If privileged commands are needed, pause and provide exact commands for user execution.
345
+ - Keep Android setup independent from Appium driver installation steps.
346
+ - Use shell-appropriate commands (`bash` for macOS/Linux, PowerShell/cmd for Windows).
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: "environment-setup-bundletool"
3
+ description: "Install and validate bundletool.jar from GitHub releases for optional UiAutomator2/Espresso capabilities"
4
+ metadata:
5
+ last_modified: "Thu, 12 Mar 2026 03:25:00 GMT"
6
+
7
+ ---
8
+ # environment-setup-bundletool
9
+
10
+ ## Goal
11
+ Installs and validates `bundletool.jar` from official GitHub releases so Android App Bundle tooling is available when explicitly requested for UiAutomator2 or Espresso setup.
12
+
13
+ ## Decision Logic
14
+ - If host OS is unsupported: stop and ask the user to run on macOS, Linux, or Windows.
15
+ - If user did not explicitly request bundletool setup: skip this skill.
16
+ - If `bundletool.jar` is already resolvable via `PATH`: do not reinstall; validate and report current version.
17
+ - If `bundletool.jar` is not present in `PATH`: download the latest release asset (`bundletool-all-*.jar`) from `https://github.com/google/bundletool/releases` and place it in a `PATH` directory.
18
+
19
+ ## Instructions
20
+ 1. **Detect OS and current bundletool availability**
21
+ macOS/Linux:
22
+ ```bash
23
+ uname -s
24
+ command -v bundletool.jar || echo "bundletool.jar not found"
25
+ if command -v bundletool.jar >/dev/null 2>&1; then java -jar "$(command -v bundletool.jar)" version; fi
26
+ ```
27
+ Windows PowerShell:
28
+ ```powershell
29
+ [System.Environment]::OSVersion.VersionString
30
+ $btPath = ($env:Path -split ';' | Where-Object { $_ -and (Test-Path (Join-Path $_ 'bundletool.jar')) } | ForEach-Object { Join-Path $_ 'bundletool.jar' } | Select-Object -First 1)
31
+ $btPath
32
+ if ($btPath) { java -jar $btPath version }
33
+ ```
34
+
35
+ 2. **Download latest `bundletool-all-*.jar` when missing**
36
+ macOS/Linux:
37
+ ```bash
38
+ mkdir -p "$HOME/bin"
39
+ RELEASE_API="https://api.github.com/repos/google/bundletool/releases/latest"
40
+ DOWNLOAD_URL=$(curl -fsSL "$RELEASE_API" | grep -Eo 'https://github.com/google/bundletool/releases/download/[^\"]+/bundletool-all-[^\"]+\.jar' | head -n 1)
41
+ test -n "$DOWNLOAD_URL"
42
+ curl -fL "$DOWNLOAD_URL" -o "$HOME/bin/bundletool.jar"
43
+ chmod +x "$HOME/bin/bundletool.jar"
44
+ export PATH="$HOME/bin:$PATH"
45
+ ```
46
+ Windows PowerShell:
47
+ ```powershell
48
+ $targetDir = "$HOME\bin"
49
+ New-Item -ItemType Directory -Force $targetDir | Out-Null
50
+ $release = Invoke-RestMethod "https://api.github.com/repos/google/bundletool/releases/latest"
51
+ $asset = $release.assets | Where-Object { $_.name -match '^bundletool-all-.*\.jar$' } | Select-Object -First 1
52
+ if (-not $asset) { throw "bundletool release asset not found" }
53
+ Invoke-WebRequest -Uri $asset.browser_download_url -OutFile "$targetDir\bundletool.jar"
54
+ $currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
55
+ if ($currentPath -notlike "*$targetDir*") {
56
+ [Environment]::SetEnvironmentVariable('Path', "$currentPath;$targetDir", 'User')
57
+ }
58
+ $env:Path = [Environment]::GetEnvironmentVariable('Path', 'User')
59
+ ```
60
+
61
+ 3. **Validate installation**
62
+ macOS/Linux:
63
+ ```bash
64
+ command -v bundletool.jar
65
+ java -jar "$(command -v bundletool.jar)" version
66
+ ```
67
+ Windows PowerShell:
68
+ ```powershell
69
+ $btPath = ($env:Path -split ';' | Where-Object { $_ -and (Test-Path (Join-Path $_ 'bundletool.jar')) } | ForEach-Object { Join-Path $_ 'bundletool.jar' } | Select-Object -First 1)
70
+ if (-not $btPath) { throw "bundletool.jar not found in PATH directories" }
71
+ $btPath
72
+ java -jar $btPath version
73
+ ```
74
+
75
+ 4. **Report task result**
76
+ Include:
77
+ - resolved `bundletool.jar` path
78
+ - `bundletool` version output
79
+ - whether installation was skipped because bundletool was already present
80
+
81
+ ## Completion criteria
82
+ Mark complete only when all are true:
83
+ - `bundletool.jar` is resolvable from `PATH`
84
+ - `java -jar <bundletool.jar> version` succeeds
85
+ - result summary states whether install was performed or skipped
86
+
87
+ ## Constraints
88
+ - This is an optional skill; run only when the user explicitly requests bundletool setup.
89
+ - Ask the user before installing optional dependencies.
90
+ - If privileged commands are required, pause and provide exact commands for user execution.
91
+ - Do not modify unrelated Appium, Android SDK, Java, or Xcode configuration in this skill.