@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,246 @@
1
+ ---
2
+ title: tvOS Automation
3
+ ---
4
+
5
+ The XCUITest driver supports automation of the tvOS platform. The driver is compatible not only
6
+ with simulators, but also with real wired and wireless devices.
7
+
8
+ All tvOS sessions must set their `platformName` capability to `tvOS` (instead of `iOS`).
9
+
10
+ ## Simulator Setup
11
+
12
+ Apart from installing the simulator itself, no additional configuration is needed - you can start a
13
+ session right away. Make sure to provide the simulator's `deviceName` and `platformVersion`:
14
+
15
+ ```json
16
+ {
17
+ "platformName": "tvOS",
18
+ "appium:automationName": "XCUITest",
19
+ "appium:deviceName": "<apple-tv-simulator-name>",
20
+ "appium:platformVersion": "<tvos-version>",
21
+ ...
22
+ }
23
+ ```
24
+
25
+ ## Real Device Setup
26
+
27
+ Similarly to real iOS/iPadOS devices, real tvOS devices also have several additional prerequisites.
28
+ For wireless devices, configuration is highly dependent on your tvOS version.
29
+
30
+ ### Wireless tvOS 18 or Later
31
+
32
+ Devices running tvOS 18 or later use Remote XPC services for pairing and communication. This
33
+ functionality is provided by the optional [`appium-ios-remotexpc`](https://github.com/appium/appium-ios-remotexpc/)
34
+ library. You can also skip this Remote XPC approach and use the solutions described in the tvOS 17
35
+ section, though they are limited and less reliable compared to Remote XPC.
36
+
37
+ 1. Ensure you are using XCUITest driver `>= 10.30.0`, and have installed `appium-ios-remotexpc >= 0.13.0`
38
+
39
+ 2. Set up the common configuration described in the [Real Device Setup](../getting-started/device-setup.md#real-devices)
40
+ document, including the provisioning profile
41
+
42
+ 3. Pair your Apple TV device to the driver, similarly to how it was paired to Xcode in step 2:
43
+
44
+ 1. Enable discovery mode in _Settings_ -> _Remotes and Devices_ -> _Remote App and Device_
45
+ 2. Run the dedicated driver script for pairing (`sudo` required):
46
+
47
+ ```bash
48
+ sudo appium driver run xcuitest pair-appletv
49
+ ```
50
+
51
+ The above command will return a prompt for selecting a specific device. You can also skip
52
+ interactive selection by using the `--device` option. See [the Scripts reference page](../reference/scripts.md#pair-appletv)
53
+ for more information.
54
+
55
+ 3. When prompted, enter the PIN that appears on the Apple TV
56
+
57
+ If successful, the script will print an identifier for the paired Apple TV device. This
58
+ identifier _may_ be different from the device's standard UDID - in such cases it should replace
59
+ the standard UDID in all future actions.
60
+
61
+ For additional details on this procedure (discovery, cryptography, credential storage,
62
+ troubleshooting), refer to [the full pairing guide](https://github.com/appium/appium-ios-remotexpc/blob/main/docs/apple-tv-pairing-guide.md)
63
+ in the `appium-ios-remotexpc` project.
64
+
65
+ 4. Start a Remote XPC tunnel for your Apple TV, using another driver script (`sudo` required):
66
+
67
+ ```bash
68
+ sudo appium driver run xcuitest tunnel-creation -- --appletv-device-id <udid-from-pairing-script>
69
+ ```
70
+
71
+ It is also recommended to set the `--disconnect-retry-max-attempts` flag to `3` or more, as
72
+ disconnects are likely to occur. Refer to the [Remote XPC guide](./remotexpc-tunnels-real-devices.md)
73
+ and [Scripts reference page](../reference/scripts.md#tunnel-creation) for more details.
74
+
75
+ 5. Launch the Appium server (in a separate process from the Remote XPC tunnel), then start a
76
+ session as normal, making sure to use the UDID from step 3:
77
+
78
+ ```json
79
+ {
80
+ "platformName": "tvOS",
81
+ "appium:automationName": "XCUITest",
82
+ "appium:udid": "<udid-from-pairing-script>",
83
+ "appium:platformVersion": "<tvos-version>",
84
+ ...
85
+ }
86
+ ```
87
+
88
+ ### Wireless tvOS 17 or Later
89
+
90
+ For devices running tvOS 17, the approach slightly differs depending on your Xcode version. It also
91
+ works for devices running tvOS 18 or later, but is discouraged in favor of [the aforementioned Remote XPC approach](#wireless-tvos-18-or-later).
92
+
93
+ 1. Ensure you are using XCUITest driver `>= 10.10.0`
94
+
95
+ 2. Set up the common configuration described in the [Real Device Setup](../getting-started/device-setup.md#real-devices)
96
+ document, including the provisioning profile
97
+
98
+ 3. Launch the Appium server with the `APPIUM_XCUITEST_PREFER_DEVICECTL` flag:
99
+
100
+ ```sh
101
+ APPIUM_XCUITEST_PREFER_DEVICECTL=1 appium
102
+ ```
103
+
104
+ 4. If running Xcode `>= 26.1`:
105
+
106
+ 1. Start a session with the additional `appium:wdaBaseUrl` capability, which must be set to the
107
+ IP address of the Apple TV:
108
+
109
+ ```json
110
+ {
111
+ "platformName": "tvOS",
112
+ "appium:automationName": "XCUITest",
113
+ "appium:udid": "<apple-tv-udid>",
114
+ "appium:platformVersion": "<tvos-version>",
115
+ "appium:wdaBaseUrl": "http://<apple-tv-ip-address>",
116
+ ...
117
+ }
118
+ ```
119
+
120
+ You can omit this capability if using [the Preinstalled WDA approach](./run-preinstalled-wda.md).
121
+
122
+ 5. If running Xcode `<= 26.0.1`:
123
+
124
+ 1. Manually build and launch WebDriverAgentRunner (WDA) yourself. This can be done through the
125
+ Xcode GUI or otherwise. You can also refer to the steps in the [Run Preinstalled WDA](./run-preinstalled-wda.md#install-webdriveragent)
126
+ guide.
127
+
128
+ 2. Follow the [Attach to Running WDA](./attach-to-running-wda.md) guide and start a session
129
+ with the `appium:webDriverAgentUrl` capability.
130
+
131
+ ### Wireless tvOS 16 or Earlier
132
+
133
+ Such devices have not been officially tested, but [user reports](https://github.com/appium/appium/issues/19343)
134
+ have shown that they are discoverable and automatable with the same real device requirements as
135
+ iOS/iPadOS. You can therefore follow the [Real Device Setup](../getting-started/device-setup.md#real-devices)
136
+ document, then start a session as normal:
137
+
138
+ ```json
139
+ {
140
+ "platformName": "tvOS",
141
+ "appium:automationName": "XCUITest",
142
+ "appium:udid": "<apple-tv-udid>",
143
+ "appium:platformVersion": "<tvos-version>",
144
+ ...
145
+ }
146
+ ```
147
+
148
+ ### Wired
149
+
150
+ Wired tvOS devices (Apple TV HD) use the same approach as iOS/iPadOS devices. Simply follow the
151
+ [Real Device Setup](../getting-started/device-setup.md#real-devices) document, then start a session
152
+ as normal:
153
+
154
+ ```json
155
+ {
156
+ "platformName": "tvOS",
157
+ "appium:automationName": "XCUITest",
158
+ "appium:udid": "<apple-tv-udid>",
159
+ "appium:platformVersion": "<tvos-version",
160
+ ...
161
+ }
162
+ ```
163
+
164
+ ## Session Actions
165
+
166
+ Unlike iOS/iPadOS, interactions with tvOS use [remote controller](https://developer.apple.com/design/human-interface-guidelines/tvos/remote-and-controllers/remote/)
167
+ based actions. The XCUITest driver implements these actions using the
168
+ [`mobile: pressButton`](../reference/execute-methods.md#mobile-pressbutton) extension, with support
169
+ for over 10 different buttons. The `menu` button functions as a back button in the iOS context.
170
+
171
+ All actions are performed on the _focused_ element (which has the `focus` attribute set). The
172
+ focused element is automatically changed after using `mobile: pressButton`.
173
+
174
+ It is also possible to use the standard `findElement` and `click` methods. The XCUITest driver will
175
+ automatically calculate the necessary sequence of `up/down/left/right` and `select` button presses,
176
+ so you should not care about which keys should be pressed to reach an arbitrary element every time.
177
+
178
+ You may want to consider using `wait` methods, since tvOS also has animation.
179
+
180
+ Here are a few example action sequences in different client languages:
181
+
182
+ === "Java"
183
+
184
+ ```java
185
+ WebElement element = driver.findElementByAccessibilityId("element on the app");
186
+ element.getAttribute("focused");
187
+ element.click();
188
+ driver.queryAppState("test.package.name");
189
+ driver.executeScript("mobile: pressButton", ImmutableMap.of("name", "Home"));
190
+ driver.executeScript("mobile: pressButton", ImmutableMap.of("name", "Up"));
191
+ element = driver.switchTo().activeElement();
192
+ element.getAttribute("label");
193
+ ```
194
+
195
+ === "JS (WebdriverIO)"
196
+
197
+ ```javascript
198
+ const element = $('element on the app');
199
+ element.getAttribute('focused');
200
+ element.click();
201
+ driver.queryAppState("test.package.name");
202
+ driver.execute('mobile: pressButton', {name: 'Home'});
203
+ driver.execute('mobile: pressButton', {name: 'Up'});
204
+ const activeElement = driver.getActiveElement();
205
+ activeElement.getAttribute('label');
206
+ ```
207
+
208
+ === "Python"
209
+
210
+ ```Python
211
+ element = driver.find_element_by_accessibility_id('element on the app')
212
+ element.get_attribute('focused')
213
+ element.click()
214
+ driver.query_app_state('test.package.name')
215
+ driver.execute_script('mobile: pressButton', { 'name': 'Home' })
216
+ driver.execute_script('mobile: pressButton', { 'name': 'Up' })
217
+ element = driver.switch_to.active_element
218
+ element.get_attribute('label')
219
+ ```
220
+
221
+ === "Ruby"
222
+
223
+ ```ruby
224
+ element = @driver.find_element :accessibility_id, 'element on the app'
225
+ element.focused
226
+ element.click
227
+ @driver.app_state('test.package.name')
228
+ @driver.execute_script 'mobile: pressButton', { name: 'Home' }
229
+ @driver.execute_script 'mobile: pressButton', { name: 'Up' }
230
+ element = @driver.switch_to.active_element
231
+ element.label
232
+ ```
233
+
234
+ ## Known Limitations
235
+
236
+ * Gesture commands do not work
237
+ * Certain commands such as pasteboard do not work
238
+
239
+ ## Related Tickets
240
+
241
+ * <https://github.com/appium/appium/pull/12401>
242
+ * <https://github.com/appium/appium-xcuitest-driver/pull/911>
243
+ * <https://github.com/appium/appium-xcuitest-driver/pull/931>
244
+ * <https://github.com/appium/appium-xcuitest-driver/pull/939>
245
+ * <https://github.com/appium/WebDriverAgent/pull/163>
246
+ * <https://github.com/appium/appium-xcuitest-driver/pull/2194>
@@ -0,0 +1,283 @@
1
+ ---
2
+ title: Manage WDA by Yourself
3
+ ---
4
+
5
+ The XCUITest driver uses [WebDriverAgent](https://github.com/appium/WebDriverAgent) (WDA) as the
6
+ automation backend. This backend is based on Apple's XCTest framework and shares all the known
7
+ problems that are present in XCTest. For some of them we have workarounds, but there are some that
8
+ are hardly possible to workaround ([here is one example](https://github.com/facebookarchive/WebDriverAgent/issues/507)).
9
+ The approach described in this article enables you to have full control over how WDA is built,
10
+ managed, and run on the device. This way you may fine-tune your automated tests in a CI environment
11
+ and make them more stable inlong-running perspective.
12
+
13
+ !!! note
14
+
15
+ * The steps below are not necessary if default Appium capabilities are used. The server will do
16
+ everything for you, however, you will not have so much control over WDA.
17
+ * It is mandatory to have SSH or physical access to the machine to which the device under test
18
+ is connected.
19
+
20
+
21
+ ### WDA Setup
22
+
23
+ In order to setup and launch WDA, please check the provided steps in the
24
+ [Run Preinstalled WDA](./run-preinstalled-wda.md#using-xcode) documentation.
25
+
26
+ ### WDA Startup via Code
27
+
28
+ WebDriverAgent application acts as a REST server, which proxies external API requests to native
29
+ XCTest calls for your application under test. The server address will be `localhost` if you run your
30
+ tests on a simulator, or the actual phone IP address in case of real device. Appium uses
31
+ [`appium-ios-device`](https://github.com/appium/appium-ios-device) to route network requests to a
32
+ real device from `localhost` via USB, which means one can use this tool to unify the WDA network
33
+ addresses for a simulator and real device.
34
+
35
+ You can use `appium-ios-device` to connect to a remote device by requiring the module from your
36
+ JavaScript code. Alternatively, you can use [`iproxy`](https://github.com/libimobiledevice/libusbmuxd#iproxy),
37
+ [`go-ios`](https://github.com/danielpaulus/go-ios) or [`tidevice`](https://github.com/alibaba/taobao-iphone-device)
38
+ to handle the WDA process outside Appium, by installing and launching the WDA package. For instance,
39
+ `iproxy` can be installed using `npm`: `npm install -g iproxy`.
40
+
41
+ This helper class written in Java illustrates the main implementation details with `iproxy`:
42
+
43
+ ```java
44
+ public class WDAServer {
45
+ private static final Logger log = ZLogger.getLog(WDAServer.class.getSimpleName());
46
+
47
+ private static final int MAX_REAL_DEVICE_RESTART_RETRIES = 1;
48
+ private static final Timedelta REAL_DEVICE_RUNNING_TIMEOUT = Timedelta.ofMinutes(4);
49
+ private static final Timedelta RESTART_TIMEOUT = Timedelta.ofMinutes(1);
50
+
51
+ // These settings are needed to properly sign WDA for real device tests
52
+ // See https://github.com/appium/appium-xcuitest-driver for more details
53
+ private static final File KEYCHAIN = new File(String.format("%s/%s",
54
+ System.getProperty("user.home"), "/Library/Keychains/MyKeychain.keychain"));
55
+ private static final String KEYCHAIN_PASSWORD = "******";
56
+
57
+ private static final File IPROXY_EXECUTABLE = new File("/usr/local/bin/iproxy");
58
+ private static final File XCODEBUILD_EXECUTABLE = new File("/usr/bin/xcodebuild");
59
+ private static final File WDA_PROJECT =
60
+ new File("~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent" +
61
+ "/WebDriverAgent.xcodeproj");
62
+ private static final String WDA_SCHEME = "WebDriverAgentRunner";
63
+ private static final String WDA_CONFIGURATION = "Debug";
64
+ private static final File XCODEBUILD_LOG = new File("/usr/local/var/log/appium/build.log");
65
+ private static final File IPROXY_LOG = new File("/usr/local/var/log/appium/iproxy.log");
66
+
67
+ private static final int PORT = 8100;
68
+ public static final String SERVER_URL = String.format("http://127.0.0.1:%d", PORT);
69
+
70
+ private static final String[] IPROXY_CMDLINE = new String[]{
71
+ IPROXY_EXECUTABLE.getAbsolutePath(),
72
+ Integer.toString(PORT),
73
+ Integer.toString(PORT),
74
+ String.format("> %s 2>&1 &", IPROXY_LOG.getAbsolutePath())
75
+ };
76
+
77
+ private static WDAServer instance = null;
78
+ private final boolean isRealDevice;
79
+ private final String deviceId;
80
+ private final String platformVersion;
81
+ private int failedRestartRetriesCount = 0;
82
+
83
+ private WDAServer() {
84
+ try {
85
+ this.isRealDevice = !getIsSimulatorFromConfig(getClass());
86
+ final String udid;
87
+ if (isRealDevice) {
88
+ udid = IOSRealDeviceHelpers.getUDID();
89
+ } else {
90
+ udid = IOSSimulatorHelpers.getId();
91
+ }
92
+ this.deviceId = udid;
93
+ this.platformVersion = getPlatformVersionFromConfig(getClass());
94
+ } catch (Exception e) {
95
+ throw new RuntimeException(e);
96
+ }
97
+ ensureToolsExistence();
98
+ ensureParentDirExistence();
99
+ }
100
+
101
+ public synchronized static WDAServer getInstance() {
102
+ if (instance == null) {
103
+ instance = new WDAServer();
104
+ }
105
+ return instance;
106
+ }
107
+
108
+ private boolean waitUntilIsRunning(Timedelta timeout) throws Exception {
109
+ final URL status = new URL(SERVER_URL + "/status");
110
+ try {
111
+ if (timeout.asSeconds() > 5) {
112
+ log.debug(String.format("Waiting max %s until WDA server starts responding...", timeout));
113
+ }
114
+ new UrlChecker().waitUntilAvailable(timeout.asMillis(), TimeUnit.MILLISECONDS, status);
115
+ return true;
116
+ } catch (UrlChecker.TimeoutException e) {
117
+ return false;
118
+ }
119
+ }
120
+
121
+ private static void ensureParentDirExistence() {
122
+ if (!XCODEBUILD_LOG.getParentFile().exists()) {
123
+ if (!XCODEBUILD_LOG.getParentFile().mkdirs()) {
124
+ throw new IllegalStateException(String.format(
125
+ "The script has failed to create '%s' folder for Appium logs. " +
126
+ "Please make sure your account has correct access permissions on the parent folder(s)",
127
+ XCODEBUILD_LOG.getParentFile().getAbsolutePath()));
128
+ }
129
+ }
130
+ }
131
+
132
+ private void ensureToolsExistence() {
133
+ if (isRealDevice && !IPROXY_EXECUTABLE.exists()) {
134
+ throw new IllegalStateException(String.format("%s tool is expected to be installed (`npm install -g iproxy`)",
135
+ IPROXY_EXECUTABLE.getAbsolutePath()));
136
+ }
137
+ if (!XCODEBUILD_EXECUTABLE.exists()) {
138
+ throw new IllegalStateException(String.format("xcodebuild tool is not detected on the current system at %s",
139
+ XCODEBUILD_EXECUTABLE.getAbsolutePath()));
140
+ }
141
+ if (!WDA_PROJECT.exists()) {
142
+ throw new IllegalStateException(String.format("WDA project is expected to exist at %s",
143
+ WDA_PROJECT.getAbsolutePath()));
144
+ }
145
+ }
146
+
147
+ private List<String> generateXcodebuildCmdline() {
148
+ final List<String> result = new ArrayList<>();
149
+ result.add(XCODEBUILD_EXECUTABLE.getAbsolutePath());
150
+ result.add("clean build-for-testing test-without-building");
151
+ result.add(String.format("-project %s", WDA_PROJECT.getAbsolutePath()));
152
+ result.add(String.format("-scheme %s", WDA_SCHEME));
153
+ result.add(String.format("-destination id=%s", deviceId));
154
+ result.add(String.format("-configuration %s", WDA_CONFIGURATION));
155
+ result.add(String.format("IPHONEOS_DEPLOYMENT_TARGET=%s", platformVersion));
156
+ result.add(String.format("> %s 2>&1 &", XCODEBUILD_LOG.getAbsolutePath()));
157
+ return result;
158
+ }
159
+
160
+ private static List<String> generateKeychainUnlockCmdlines() throws Exception {
161
+ final List<String> result = new ArrayList<>();
162
+ result.add(String.format("/usr/bin/security -v list-keychains -s %s", KEYCHAIN.getAbsolutePath()));
163
+ result.add(String.format("/usr/bin/security -v unlock-keychain -p %s %s",
164
+ KEYCHAIN_PASSWORD, KEYCHAIN.getAbsolutePath()));
165
+ result.add(String.format("/usr/bin/security set-keychain-settings -t 3600 %s", KEYCHAIN.getAbsolutePath()));
166
+ return result;
167
+ }
168
+
169
+ public synchronized void restart() throws Exception {
170
+ if (isRealDevice && failedRestartRetriesCount >= MAX_REAL_DEVICE_RESTART_RETRIES) {
171
+ throw new IllegalStateException(String.format(
172
+ "WDA server cannot start on the connected device with udid %s after %s retries. " +
173
+ "Reboot the device manually and try again", deviceId, MAX_REAL_DEVICE_RESTART_RETRIES));
174
+ }
175
+
176
+ final String hostname = InetAddress.getLocalHost().getHostName();
177
+ log.info(String.format("Trying to (re)start WDA server on %s:%s...", hostname, PORT));
178
+ UnixProcessHelpers.killProcessesGracefully(IPROXY_EXECUTABLE.getName(), XCODEBUILD_EXECUTABLE.getName());
179
+
180
+ final File scriptFile = File.createTempFile("script", ".sh");
181
+ try {
182
+ final List<String> scriptContent = new ArrayList<>();
183
+ scriptContent.add("#!/bin/bash");
184
+ if (isRealDevice && isRunningInJenkinsNetwork()) {
185
+ scriptContent.add(String.join("\n", generateKeychainUnlockCmdlines()));
186
+ }
187
+ if (isRealDevice) {
188
+ scriptContent.add(String.join(" ", IPROXY_CMDLINE));
189
+ }
190
+ final String wdaBuildCmdline = String.join(" ", generateXcodebuildCmdline());
191
+ log.debug(String.format("Building WDA with command line:\n%s\n", wdaBuildCmdline));
192
+ scriptContent.add(wdaBuildCmdline);
193
+ try (Writer output = new BufferedWriter(new FileWriter(scriptFile))) {
194
+ output.write(String.join("\n", scriptContent));
195
+ }
196
+ new ProcessBuilder("/bin/chmod", "u+x", scriptFile.getCanonicalPath())
197
+ .redirectErrorStream(true).start().waitFor(5, TimeUnit.SECONDS);
198
+ final ProcessBuilder pb = new ProcessBuilder("/bin/bash", scriptFile.getCanonicalPath());
199
+ final Map<String, String> env = pb.environment();
200
+ // This is needed for Jenkins
201
+ env.put("BUILD_ID", "dontKillMe");
202
+ // This line is important. If USE_PORT environment variable is not set then WDA
203
+ // takes port number zero by default and won't accept any incoming requests
204
+ env.put("USE_PORT", Integer.toString(PORT));
205
+ log.info(String.format("Waiting max %s for WDA to be (re)started on %s:%s...", RESTART_TIMEOUT.toString(),
206
+ hostname, PORT));
207
+ final Timedelta started = Timedelta.now();
208
+ pb.redirectErrorStream(true).start().waitFor(RESTART_TIMEOUT.asMillis(), TimeUnit.MILLISECONDS);
209
+ if (!waitUntilIsRunning(RESTART_TIMEOUT)) {
210
+ ++failedRestartRetriesCount;
211
+ throw new IllegalStateException(
212
+ String.format("WDA server has failed to start after %s timeout on server '%s'.\n"
213
+ + "Please make sure that iDevice is properly connected and you can build "
214
+ + "WDA manually from XCode.\n"
215
+ + "Xcodebuild logs:\n\n%s\n\n\niproxy logs:\n\n%s\n\n\n",
216
+ RESTART_TIMEOUT, hostname,
217
+ getLog(XCODEBUILD_LOG).orElse("EMPTY"), getLog(IPROXY_LOG).orElse("EMPTY"))
218
+ );
219
+ }
220
+
221
+ log.info(String.format("WDA server has been successfully (re)started after %s " +
222
+ "and now is listening on %s:%s", Timedelta.now().diff(started).toString(), hostname, PORT));
223
+ } finally {
224
+ scriptFile.delete();
225
+ }
226
+ }
227
+
228
+ public boolean isRunning() throws Exception {
229
+ if (!isProcessRunning(XCODEBUILD_EXECUTABLE.getName())
230
+ || (isRealDevice && !isProcessRunning(IPROXY_EXECUTABLE.getName()))) {
231
+ return false;
232
+ }
233
+ return waitUntilIsRunning(isRealDevice ? REAL_DEVICE_RUNNING_TIMEOUT : Timedelta.ofSeconds(3));
234
+ }
235
+
236
+ public Optional<String> getLog(File logFile) {
237
+ if (logFile.exists()) {
238
+ try {
239
+ return Optional.of(new String(Files.readAllBytes(logFile.toPath()), Charset.forName("UTF-8")));
240
+ } catch (IOException e) {
241
+ e.printStackTrace();
242
+ }
243
+ }
244
+ return Optional.empty();
245
+ }
246
+ }
247
+ ```
248
+
249
+ The following piece of code should then be called before starting the XCUITest driver:
250
+
251
+ ```java
252
+ if (!WDAServer.getInstance().isRunning()) {
253
+ WDAServer.getInstance().restart();
254
+ }
255
+ ```
256
+
257
+ It is important to set the `appium:webDriverAgentUrl` capability for the driver to let it know
258
+ that WDA is ready for use:
259
+
260
+ ```java
261
+ capabilities.setCapability("webDriverAgentUrl", WDAServer.SERVER_URL);
262
+ ```
263
+
264
+ ### Important Notes
265
+
266
+ * The process does not have direct access to keychain if it is executed by a continuous integration
267
+ agent, so the keychain must be prepared before compiling WDA for real device, otherwise
268
+ codesigning will fail. Check the [CI Setup](./ci-setup.md) documentation for details.
269
+ * The `xcodebuild` and `iproxy` processes are killed before restart to make sure compilation
270
+ succeeds, in case the processes are frozen
271
+ * A dedicated `bash` script is used to detach the `iproxy`/`xcodebuild` processes, so they can
272
+ continue running in background even after the actual code execution is finished. This is extremely
273
+ important if multiple tests/suites are executed on the same machine/node in automation lab, which
274
+ requires minimum human interaction
275
+ * The value of the `BUILD_ID` environment variable is changed to avoid the CI agent killing the
276
+ background process after the job is finished
277
+ * The `isRunning` check is done by verifying the actual network endpoint
278
+ * The output of daemonized processes is logged, so it is possible to track errors and unexpected
279
+ failures. The content of the log files is automatically added to the actual error message if the
280
+ server fails to (re)start.
281
+ * Real device id can be parsed from `system_profiler SPUSBDataType` output
282
+ * Simulator id can be parsed from `xcrun simctl list` output
283
+ * The `UrlChecker` class is imported from the `org.openqa.selenium.net` package
@@ -0,0 +1,36 @@
1
+ ---
2
+ hide:
3
+ - navigation
4
+ - toc
5
+
6
+ title: Welcome
7
+ ---
8
+ <style>
9
+ .md-typeset h1 {
10
+ display: none;
11
+ }
12
+ </style>
13
+
14
+ <div style="text-align: center">
15
+ <img src="assets/images/appium-plus-xctest.png" style="max-width: 500px;" />
16
+ </div>
17
+
18
+ Welcome to the Appium XCUITest Driver documentation! The XCUITest driver is a test automation
19
+ framework for iOS, iPadOS and tvOS devices, enabling automated black-box testing of native, hybrid
20
+ and WebKit web apps, on both emulators and real devices.
21
+
22
+ The XCUITest driver is part of the Appium test automation tool. For information on Appium itself,
23
+ please visit [the Appium documentation](https://appium.io).
24
+
25
+ ## Explore the Documentation
26
+
27
+ <div class="grid cards" markdown>
28
+
29
+ - Check out the [__Overview__](./overview.md) to learn how the driver works
30
+ - Go through the [__Getting Started__](./getting-started/index.md) steps to get set up and prepare your test device
31
+ - Browse the [__Reference__](./reference/scripts.md) documentation for everything exposed by the driver
32
+ - Read the different [__Guides__](./guides/parallel-tests.md) for a variety of instructions, tips and tricks
33
+ - See the [__Troubleshooting__](./troubleshooting/index.md) section for a list of potential issues
34
+ - For contributions to the driver, refer to the [__Contributing__](./contributing.md) page
35
+
36
+ </div>