@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.
- package/CHANGELOG.md +15 -0
- package/package.json +3 -6
- package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- package/src/resources/submodules/appium/.github/copilot-instructions.md +9 -0
- package/src/resources/submodules/appium/CHANGELOG.md +45 -0
- package/src/resources/submodules/appium/GOVERNANCE.md +189 -0
- package/src/resources/submodules/appium/README.md +221 -0
- package/src/resources/submodules/appium/ROADMAP.md +30 -0
- package/src/resources/submodules/appium/SPONSORS.md +3 -0
- package/src/resources/submodules/appium/docs/README.md +6 -0
- package/src/resources/submodules/appium/docs/payout.md +35 -0
- package/src/resources/submodules/appium/packages/appium/CHANGELOG.md +1547 -0
- package/src/resources/submodules/appium/packages/appium/README.md +221 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/index.md +2 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-appiumconf2024.md +45 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-headspin-as-development-partner.md +47 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-development-partner.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-strategic-partner.md +42 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sponsorship-program.md +48 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/appium3.md +40 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/hello-world.md +15 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/contributing/index.md +150 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-docs.md +86 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-doctor-checks.md +141 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-drivers.md +1002 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +523 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/config-system.md +451 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/index.md +18 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/sensitive.md +49 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/clients.md +132 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/drivers.md +207 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/index.md +45 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/plugins.md +138 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/tools.md +106 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/branch-testing.md +57 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/caching.md +76 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/caps.md +271 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/config.md +98 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/context.md +44 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/event-timing.md +73 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/execute-methods.md +122 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/grid.md +178 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/headers.md +17 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/log-filters.md +86 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/managing-exts.md +87 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-1-to-2.md +368 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-2-to-3.md +464 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/security.md +87 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/settings.md +68 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/guides/tls.md +42 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/index.md +59 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/intro/appium.md +202 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/intro/clients.md +127 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/intro/drivers.md +188 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/intro/history.md +196 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/intro/index.md +39 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/index.md +29 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/install.md +50 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/next-steps.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/requirements.md +29 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-dotnet.md +105 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-java.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-js.md +75 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-py.md +60 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-rb.md +83 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/uiauto2-driver.md +144 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/appium.md +394 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/bidi.md +70 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/index.md +30 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/jsonwp.md +214 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/mjsonwp.md +151 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/others.md +736 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/plugins.md +289 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/webdriver.md +1114 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/env-vars.md +31 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/extensions.md +246 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/insecure-features.md +24 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/setup.md +76 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/index.md +31 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/session/caps.md +56 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/session/index.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/resources/index.md +28 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/sponsors/index.md +69 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/index.md +2 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-appiumconf2024.md +45 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-headspin-as-development-partner.md +47 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-development-partner.md +34 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sponsorship-program.md +48 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/appium3.md +40 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/hello-world.md +15 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/contributing/index.md +158 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-docs.md +86 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-doctor-checks.md +141 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-drivers.md +1010 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +529 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/config-system.md +468 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/index.md +18 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/sensitive.md +49 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/clients.md +143 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/drivers.md +219 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/index.md +45 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/plugins.md +140 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/tools.md +115 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/branch-testing.md +57 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caching.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caps.md +276 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/config.md +102 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/context.md +44 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/event-timing.md +75 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/execute-methods.md +142 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/grid.md +178 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/headers.md +17 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/log-filters.md +86 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/managing-exts.md +89 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-1-to-2.md +402 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-2-to-3.md +458 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/security.md +89 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/settings.md +70 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/guides/tls.md +43 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/index.md +55 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/intro/appium.md +191 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/intro/clients.md +139 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/intro/drivers.md +188 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/intro/history.md +196 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/intro/index.md +39 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/index.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/install.md +47 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/next-steps.md +19 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/requirements.md +29 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-dotnet.md +107 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-java.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-js.md +77 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-py.md +63 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-rb.md +85 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/uiauto2-driver.md +148 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/appium.md +395 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/bidi.md +71 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/index.md +30 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/jsonwp.md +215 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/mjsonwp.md +152 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/others.md +737 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/plugins.md +291 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/webdriver.md +1114 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/env-vars.md +31 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/extensions.md +247 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/insecure-features.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/setup.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/index.md +31 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/session/caps.md +56 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/session/index.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/resources/index.md +28 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/sponsors/index.md +66 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz-white.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-white.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-dark.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-light.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-testmuai-dark.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-testmuai-light.png +0 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/index.md +2 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-appiumconf2024.md +45 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-headspin-as-development-partner.md +47 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-development-partner.md +34 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sponsorship-program.md +48 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/appium3.md +40 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/hello-world.md +15 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/contributing/index.md +132 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-docs.md +86 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-doctor-checks.md +141 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-drivers.md +1010 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +529 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/config-system.md +468 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/index.md +18 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/sensitive.md +49 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/clients.md +143 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/drivers.md +219 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/index.md +45 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/plugins.md +140 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/tools.md +115 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/branch-testing.md +57 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caching.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caps.md +279 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/config.md +102 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/context.md +44 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/event-timing.md +75 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/execute-methods.md +142 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/grid.md +178 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/headers.md +17 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/log-filters.md +86 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/managing-exts.md +89 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-1-to-2.md +410 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-2-to-3.md +459 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/security.md +89 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/settings.md +70 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/guides/tls.md +43 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/index.md +54 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/appium.md +91 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +100 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +101 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +72 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/index.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/install.md +47 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/next-steps.md +19 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/requirements.md +21 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-dotnet.md +99 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-java.md +20 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-js.md +62 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-py.md +57 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-rb.md +80 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/uiauto2-driver.md +119 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/appium.md +395 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/bidi.md +71 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/index.md +30 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/jsonwp.md +215 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/mjsonwp.md +152 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/others.md +737 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/plugins.md +291 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/webdriver.md +1114 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/env-vars.md +31 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/extensions.md +247 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +36 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/insecure-features.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/setup.md +78 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/index.md +31 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/session/caps.md +56 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/session/index.md +23 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/resources/index.md +28 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/sponsors/index.md +66 -0
- package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +30 -0
- package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +1244 -0
- package/src/resources/submodules/appium/packages/base-driver/README.md +15 -0
- package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/errors.md +82 -0
- package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/protocol-methods.md +182 -0
- package/src/resources/submodules/appium/packages/base-driver/static/appium.png +0 -0
- package/src/resources/submodules/appium/packages/base-plugin/CHANGELOG.md +764 -0
- package/src/resources/submodules/appium/packages/base-plugin/README.md +15 -0
- package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +1038 -0
- package/src/resources/submodules/appium/packages/docutils/README.md +27 -0
- package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +790 -0
- package/src/resources/submodules/appium/packages/driver-test-support/README.md +103 -0
- package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +256 -0
- package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +47 -0
- package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +671 -0
- package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +55 -0
- package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +603 -0
- package/src/resources/submodules/appium/packages/fake-driver/README.md +7 -0
- package/src/resources/submodules/appium/packages/fake-driver/lib/screen.png +0 -0
- package/src/resources/submodules/appium/packages/fake-plugin/CHANGELOG.md +780 -0
- package/src/resources/submodules/appium/packages/fake-plugin/README.md +7 -0
- package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +691 -0
- package/src/resources/submodules/appium/packages/images-plugin/README.md +27 -0
- package/src/resources/submodules/appium/packages/images-plugin/docs/find-by-image.md +65 -0
- package/src/resources/submodules/appium/packages/images-plugin/docs/image-comparison.md +203 -0
- package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/appstore.png +0 -0
- package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img1.png +0 -0
- package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2.png +0 -0
- package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2_part.png +0 -0
- package/src/resources/submodules/appium/packages/logger/CHANGELOG.md +212 -0
- package/src/resources/submodules/appium/packages/logger/README.md +31 -0
- package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +446 -0
- package/src/resources/submodules/appium/packages/opencv/README.md +68 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/appium-diagram.jpg +0 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc1.png +0 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc2.png +0 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc_rotated.png +0 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/findwaldo.jpg +0 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/number5.png +0 -0
- package/src/resources/submodules/appium/packages/opencv/test/e2e/images/waldo.jpg +0 -0
- package/src/resources/submodules/appium/packages/plugin-test-support/CHANGELOG.md +610 -0
- package/src/resources/submodules/appium/packages/plugin-test-support/README.md +49 -0
- package/src/resources/submodules/appium/packages/relaxed-caps-plugin/CHANGELOG.md +209 -0
- package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +35 -0
- package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +308 -0
- package/src/resources/submodules/appium/packages/schema/README.md +50 -0
- package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +157 -0
- package/src/resources/submodules/appium/packages/storage-plugin/README.md +83 -0
- package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +129 -0
- package/src/resources/submodules/appium/packages/strongbox/README.md +110 -0
- package/src/resources/submodules/appium/packages/support/CHANGELOG.md +1147 -0
- package/src/resources/submodules/appium/packages/support/README.md +161 -0
- package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +147 -0
- package/src/resources/submodules/appium/packages/tsconfig/README.md +19 -0
- package/src/resources/submodules/appium/packages/types/CHANGELOG.md +871 -0
- package/src/resources/submodules/appium/packages/types/README.md +21 -0
- package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +502 -0
- package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +53 -0
- package/src/resources/submodules/appium/renovate/README.md +55 -0
- package/src/resources/submodules/appium-skills/.github/dependabot.yml +11 -0
- package/src/resources/submodules/appium-skills/.github/workflows/pr-title.yml +10 -0
- package/src/resources/submodules/appium-skills/AGENTS.md +214 -0
- package/src/resources/submodules/appium-skills/LICENSE +201 -0
- package/src/resources/submodules/appium-skills/README.md +33 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/SKILL.md +66 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/community-search.md +51 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/uiautomator2-locators.md +34 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/uiautomator2-session-startup.md +53 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/xcuitest-element-lookup.md +23 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/xcuitest-locators.md +16 -0
- package/src/resources/submodules/appium-skills/skills/appium-troubleshooting/references/xcuitest-troubleshooting.md +52 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-android/SKILL.md +346 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-bundletool/SKILL.md +91 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-chromium/SKILL.md +260 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-espresso/SKILL.md +216 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-ffmpeg/SKILL.md +91 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-node/SKILL.md +128 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-uiautomator2/SKILL.md +225 -0
- package/src/resources/submodules/appium-skills/skills/environment-setup-xcuitest/SKILL.md +153 -0
- package/src/resources/submodules/appium-skills/skills/xcuitest-real-device-config/SKILL.md +488 -0
- package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +1506 -0
- package/src/resources/submodules/appium-uiautomator2-driver/README.md +2253 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/actions.md +72 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/activity-startup.md +47 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/android-appbundle.md +69 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/android-mobile-gestures.md +352 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/android-multiwindow.md +872 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/architecture.md +34 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/bidi.md +50 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/capability-sets.md +136 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/mjpeg.md +111 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/scheduled-actions.md +155 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/uiautomator-uiselector.md +51 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/main.md +95 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen1.png +0 -0
- package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen2.png +0 -0
- package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/checkered-squares.png +0 -0
- package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/start-button.png +0 -0
- package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/stop-button.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/.github/ISSUE_TEMPLATE.md +4 -0
- package/src/resources/submodules/appium-xcuitest-driver/CHANGELOG.md +3373 -0
- package/src/resources/submodules/appium-xcuitest-driver/README.md +55 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/contributing.md +45 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints-wda.md +61 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints.md +95 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/device-setup.md +81 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/index.md +36 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/installation.md +38 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/check-prov-prof.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/create-new-project.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/create-single-page.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/no-prov-prof.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/project-prov-prof.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/set-up-bundle.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/untrusted-dev.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-bundle-id.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-config.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-facebook-fail.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/assets/images/xcode-facebook-succeed.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/auto-config.md +54 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/basic-manual-config.md +40 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/full-manual-config.md +49 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/generic-device-config.md +75 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/provisioning-profile/index.md +117 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/getting-started/system-requirements.md +131 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/keynote.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/on_my_iphone.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/top_files.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/attach-to-running-wda.md +43 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/audio-capture.md +78 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/biometric-auth.md +29 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/capability-sets.md +169 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/ci-setup.md +47 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/clipboard.md +47 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/file-transfer.md +147 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/gestures.md +55 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/hybrid.md +137 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/input-events.md +67 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/install-certificate.md +20 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/mjpeg.md +98 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/multiple-xcode-versions.md +37 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/parallel-tests.md +39 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/remotexpc-tunnels-real-devices.md +148 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-prebuilt-wda.md +147 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +177 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +246 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +283 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +36 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +137 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/assets/images/useXctestrunFile.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/bidi.md +192 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +164 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +468 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +157 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/env-vars.md +18 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +2269 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/ios-predicate.md +196 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/locator-strategies.md +107 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +555 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +28 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +19 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +467 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/xpath-extensions.md +167 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/troubleshooting/element-lookup.md +202 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/troubleshooting/index.md +204 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/troubleshooting/wda-slowness.md +206 -0
- package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
- package/src/resources/submodules.zip +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Running Tests in Parallel
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
It is possible to execute tests in parallel using XCUITest driver. Appium allows to do this on a
|
|
9
|
+
per-process (multiple server processes running on different ports managing single session) or a
|
|
10
|
+
per-request basis (single server process managing multiple sessions, more preferable, uses less
|
|
11
|
+
resources and ensures better control over running sessions).
|
|
12
|
+
|
|
13
|
+
!!! note
|
|
14
|
+
|
|
15
|
+
If you are _not_ going to run your tests in parallel, consider enabling the `--session-override`
|
|
16
|
+
Appium server argument. It forces the server to close all pending sessions before a new one
|
|
17
|
+
could be opened, which allows you to avoid possible issues with such sessions silently
|
|
18
|
+
running/expiring in the background.
|
|
19
|
+
|
|
20
|
+
### Important Real Device Capabilities
|
|
21
|
+
|
|
22
|
+
- `udid` must be a unique device UDID for each parallel session.
|
|
23
|
+
- `wdaLocalPort` must be a unique port number for each parallel session. The default value is `8100`.
|
|
24
|
+
- `derivedDataPath` set the unique derived data path root for each driver instance. This will help
|
|
25
|
+
to avoid possible conflicts and to speed up the parallel execution.
|
|
26
|
+
- `mjpegServerPort` must be a unique port number for each parallel session if you are going to
|
|
27
|
+
record a video stream from it. The default value is `9100`.
|
|
28
|
+
|
|
29
|
+
### Important Simulator Capabilities
|
|
30
|
+
|
|
31
|
+
- Either `udid`, which is the unique simulator UDID for each parallel session (it could be retrieved
|
|
32
|
+
from `xcrun simctl list` command output), or a unique combination of `deviceName` and
|
|
33
|
+
`platformVersion` capabilities to identify the appropriate simulator with the given name and
|
|
34
|
+
version number for each parallel session.
|
|
35
|
+
- `wdaLocalPort` must be a unique port number for each parallel session. The default value is `8100`.
|
|
36
|
+
- `derivedDataPath` set the unique derived data path root for each driver instance. This will help
|
|
37
|
+
to avoid possible conflicts and to speed up the parallel execution.
|
|
38
|
+
- `mjpegServerPort` must be a unique port number for each parallel session if you are going to
|
|
39
|
+
record a video stream from it. The default value is `9100`.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Remote XPC Tunnels
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Certain features of the XCUITest driver rely on Remote XPC services and IPv6 tunneling. This
|
|
6
|
+
functionality is provided by the optional [`appium-ios-remotexpc`](https://github.com/appium/appium-ios-remotexpc/)
|
|
7
|
+
library.
|
|
8
|
+
|
|
9
|
+
!!! info
|
|
10
|
+
|
|
11
|
+
The driver only uses remote XPC tunnels for ^^real devices running iOS/tvOS 18 or later^^.
|
|
12
|
+
Real devices running iOS/tvOS < 18 do not support this tunneling mechanism, whereas
|
|
13
|
+
simulators do not need to use it.
|
|
14
|
+
|
|
15
|
+
## Why Use Remote XPC
|
|
16
|
+
|
|
17
|
+
On iOS/tvOS 18+, Apple routes many system services (including XCTest-related ones) over IPv6-only
|
|
18
|
+
interfaces and Remote XPC endpoints. The XCUITest driver utilizes them for the following features
|
|
19
|
+
(non-exhaustive list):
|
|
20
|
+
|
|
21
|
+
- General communication with wireless Apple TV devices
|
|
22
|
+
- Retrieval of various logs
|
|
23
|
+
- Network monitoring
|
|
24
|
+
- Certificate management
|
|
25
|
+
- Execution of native XCTest test suites
|
|
26
|
+
|
|
27
|
+
## Prerequisites
|
|
28
|
+
|
|
29
|
+
- macOS or Linux host
|
|
30
|
+
- Real device running iOS/tvOS 18 or later, paired and trusted on its host
|
|
31
|
+
- The driver supports devices connected via `usbmuxd` (wired and wireless), as well as
|
|
32
|
+
wireless tvOS devices (must be paired first, [see tvOS guide](./tvos.md#wireless-tvos-18-or-later))
|
|
33
|
+
- `appium-ios-remotexpc` installed
|
|
34
|
+
- The driver declares this package as an **optional dependency**, so in a normal
|
|
35
|
+
installation npm will install it automatically. You only need to install it manually if
|
|
36
|
+
the optional dependency step failed or you are wiring a custom environment.
|
|
37
|
+
|
|
38
|
+
To verify that the optional dependency and tunnel infrastructure are available, you can run:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
appium driver doctor xcuitest
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Look for the optional checks related to `appium-ios-remotexpc` and “tunnel availability”.
|
|
45
|
+
|
|
46
|
+
## Creating Tunnels
|
|
47
|
+
|
|
48
|
+
The XCUITest driver exposes a high‑level convenience script that wraps the lower‑level
|
|
49
|
+
`appium-ios-remotexpc` tunnel workflow.
|
|
50
|
+
|
|
51
|
+
!!! warning
|
|
52
|
+
|
|
53
|
+
This script must be run as **sudo/root** to create TUN/TAP interfaces for the tunnel.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
sudo appium driver run xcuitest tunnel-creation
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Refer to [the script reference page](../reference/scripts.md#tunnel-creation) for a list of
|
|
60
|
+
additional options.
|
|
61
|
+
|
|
62
|
+
The script executes the following actions:
|
|
63
|
+
|
|
64
|
+
- Enumerates all connected and trusted iOS/tvOS devices
|
|
65
|
+
- The list of available devices can also be retrieved using the [`list-real-devices`](../reference/scripts.md#list-real-devices)
|
|
66
|
+
script
|
|
67
|
+
- For each device:
|
|
68
|
+
- Starts a Lockdown session
|
|
69
|
+
- Starts `com.apple.internal.devicecompute.CoreDeviceProxy` via Remote XPC
|
|
70
|
+
- Creates an IPv6 tunnel using `TunnelManager.getTunnel(...)`
|
|
71
|
+
- Starts a packet stream server on a local TCP port (default base: `50000`)
|
|
72
|
+
- Builds an in‑memory tunnel registry containing:
|
|
73
|
+
- Device UDID and device ID
|
|
74
|
+
- Tunnel IPv6 address (`Address`) and `RsdPort`
|
|
75
|
+
- Packet stream port and basic metadata
|
|
76
|
+
- Starts an HTTP tunnel registry API server and prints its address
|
|
77
|
+
- Persists the chosen registry port in a per‑driver strongbox entry so that the driver can find it
|
|
78
|
+
|
|
79
|
+
### Inspecting the Tunnel Registry
|
|
80
|
+
|
|
81
|
+
After a successful script execution, you should see log lines similar to:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
📁 Tunnel registry API:
|
|
85
|
+
The tunnel registry is now available through the API at:
|
|
86
|
+
http://localhost:<port>/remotexpc/tunnels
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
You can now use the registry endpoints to retrieve tunnel information:
|
|
90
|
+
|
|
91
|
+
- List all tunnels:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
curl http://localhost:<port>/remotexpc/tunnels
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- Get tunnel for a specific UDID:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
curl http://localhost:<port>/remotexpc/tunnels/<udid>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The response contains the IPv6 `address`, `rsdPort`, and other metadata required to establish
|
|
104
|
+
Remote XPC connections.
|
|
105
|
+
|
|
106
|
+
## Running Tests
|
|
107
|
+
|
|
108
|
+
Make sure to create all required tunnel(s) _before_ launching your tests. The tunnel process(es)
|
|
109
|
+
should remaing running in the background, _in addition to_ the Appium server process.
|
|
110
|
+
|
|
111
|
+
No extra capabilities are required to "enable" tunnels; they are automatically used when:
|
|
112
|
+
|
|
113
|
+
- `appium-ios-remotexpc` is installed
|
|
114
|
+
- the tunnel registry server is reachable
|
|
115
|
+
- the platform is a real device running iOS/tvOS 18 or later
|
|
116
|
+
|
|
117
|
+
### Multiple Sessions
|
|
118
|
+
|
|
119
|
+
The tunnel creation script is multi‑device aware: it creates and registers an independent tunnel
|
|
120
|
+
for each connected device. It can also be limited to specific devices by passing `--udid`/`--appletv-device-id`
|
|
121
|
+
multiple times. The driver can then run multiple sessions concurrently on a single Appium server
|
|
122
|
+
as long as:
|
|
123
|
+
|
|
124
|
+
- Each session uses a different real device (`appium:udid` is unique per session)
|
|
125
|
+
- The tunnels for all those devices are present in the tunnel registry
|
|
126
|
+
|
|
127
|
+
If you frequently add/remove devices, consider occasionally re‑running the tunnel script to refresh
|
|
128
|
+
the registry, or use the `--disconnect-retry-max-attempts`/`--disconnect-retry-interval-ms` options
|
|
129
|
+
to configure automatic reconnection.
|
|
130
|
+
|
|
131
|
+
### Multiple Appium Servers
|
|
132
|
+
|
|
133
|
+
Since the tunnel registry server is running in a separate process, it is not linked to a specific
|
|
134
|
+
Appium server instance, and can be used by multiple Appium servers simultaneously. To ensure that
|
|
135
|
+
all Appium server instances discover the same tunnel registry, you can set a specific port:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
sudo appium driver run xcuitest tunnel-creation --tunnel-registry-port 43000
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Similarly to running multiple sessions on a single server, make sure that each session uses
|
|
142
|
+
a different device UDID.
|
|
143
|
+
|
|
144
|
+
In more advanced setups (e.g., Docker, multiple hosts, CI agents), you may want to run one
|
|
145
|
+
tunnel‑creation process per container/VM. In such cases, use distinct `--tunnel-registry-port`
|
|
146
|
+
values for each isolation boundary. This keeps tunnel state scoped to each environment, but within
|
|
147
|
+
that boundary you should still avoid running multiple competing tunnel‑creation scripts
|
|
148
|
+
simultaneously, as they may fight over TUN/TAP configuration and `usbmuxd` connections.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Run Prebuilt WDA
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
The XCUITest driver runs `xcodebuild` to build and install the WebDriverAgentRunner (WDA) app on the
|
|
6
|
+
target device. Running the command every time could slow down new session creation.
|
|
7
|
+
You can manually run a modified version of this command in order to prebuild the WDA.
|
|
8
|
+
|
|
9
|
+
## Understanding How `xcodebuild` Works
|
|
10
|
+
|
|
11
|
+
By default, `xcodebuild` is run with two commands: `build-for-testing` and `test-without-building`.
|
|
12
|
+
`build-for-testing` builds a test bundle package, whereas `test-without-building` actually runs it.
|
|
13
|
+
|
|
14
|
+
For instance, XCUITest driver issues an `xcodebuild` command like so:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
xcodebuild build-for-testing test-without-building \
|
|
18
|
+
-project WebDriverAgent.xcodeproj \
|
|
19
|
+
-derivedDataPath wda_build \
|
|
20
|
+
-scheme WebDriverAgentRunner \
|
|
21
|
+
-destination "platform=iOS Simulator,name=iPhone 14 Pro" \
|
|
22
|
+
CODE_SIGNING_ALLOWED=NO
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This translates to `xcodebuild` building `WebDriverAgent.xcodeproj` and running the resulting
|
|
26
|
+
package on the specified device. The built package will be located in the `wda_build` path.
|
|
27
|
+
|
|
28
|
+
The command can be split into `build-for-testing` and `test-without-building` parts as follows:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
xcodebuild build-for-testing \
|
|
32
|
+
-project WebDriverAgent.xcodeproj \
|
|
33
|
+
-derivedDataPath wda_build \
|
|
34
|
+
-scheme WebDriverAgentRunner \
|
|
35
|
+
-destination "platform=iOS Simulator,name=iPhone 14 Pro" \
|
|
36
|
+
CODE_SIGNING_ALLOWED=NO
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
xcodebuild test-without-building \
|
|
41
|
+
-xctestrun wda_build/Build/Products/WebDriverAgentRunner_iphonesimulator16.2-arm64.xctestrun \
|
|
42
|
+
-destination "platform=iOS Simulator,name=iPhone 14 Pro"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
* The `build-for-testing` command generates two files: an `.app` package and an `.xctestrun` file, e.g.:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
wda_build/Build/Products/Debug-iphonesimulator/WebDriverAgentRunner-Runner.app
|
|
49
|
+
wda_build/Build/Products/WebDriverAgentRunner_iphonesimulator16.2-arm64.xctestrun
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The `.xctestrun` file name depends on the `-destination` preference. The file contains metadata
|
|
53
|
+
about the package (the `DependentProductPaths` key).
|
|
54
|
+
|
|
55
|
+
* The `test-without-building` command starts the WDA application for testing by referencing the
|
|
56
|
+
provided `.xctestrun` file. Once this is done, `http://localhost:8100` will be able to receive
|
|
57
|
+
commands for the target device.
|
|
58
|
+
|
|
59
|
+
## Preparation performance improvement ideas
|
|
60
|
+
|
|
61
|
+
### Download Prebuilt WDA and run them with `appium:prebuiltWDAPath` and `appium:usePreinstalledWDA`
|
|
62
|
+
|
|
63
|
+
This approach allows the XCUITest driver to start WDA without running `xcodebuild` by using prebuilt WDA packages.
|
|
64
|
+
We recommend this method if you don't need to modify the WDA source code.
|
|
65
|
+
|
|
66
|
+
!!! warning "iOS/tvOS 17+ required for `usePreinstalledWDA`"
|
|
67
|
+
|
|
68
|
+
With WebDriverAgent v13+, `appium:usePreinstalledWDA` and `appium:prebuiltWDAPath` require **iOS/tvOS 17.0 or newer**.
|
|
69
|
+
They are **not supported on iOS 16 and below**. See [Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md)
|
|
70
|
+
for details and alternatives (`xcodebuild` or `appium:webDriverAgentUrl`).
|
|
71
|
+
|
|
72
|
+
[The Appium WebDriverAgent GitHub page](https://github.com/appium/WebDriverAgent/releases) provides
|
|
73
|
+
downloads for WebDriverAgent packages for real devices and simulators.
|
|
74
|
+
WebDriverAgent packages for real devices do not have embedded XCTest frameworks so that
|
|
75
|
+
they can run on iOS 17+ devices. Please read [Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md)
|
|
76
|
+
for more details about running on real devices and simulators. Understanding app signing is also important when working with real devices.
|
|
77
|
+
Simulators need everything, so WDA package sizes for simulators are greater than for real devices.
|
|
78
|
+
The [Release](https://github.com/appium/appium-xcuitest-driver/actions/workflows/publish.js.yml) and
|
|
79
|
+
[Building WebDriverAgent](https://github.com/appium/WebDriverAgent/actions/workflows/wda-package.yml)
|
|
80
|
+
workflows may help with validating the build script.
|
|
81
|
+
|
|
82
|
+
[Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md) provides `appium:prebuiltWDAPath`
|
|
83
|
+
and `appium:usePreinstalledWDA` capabilities.
|
|
84
|
+
These capabilities allow the XCUITest driver to install prebuilt WDA specified with
|
|
85
|
+
`appium:prebuiltWDAPath` and start it **without** running `xcodebuild`.
|
|
86
|
+
|
|
87
|
+
The `download-wda` command helps to download the proper version of WDA for your XCUITest driver version
|
|
88
|
+
for simulator use.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
appium driver run xcuitest download-wda -- --outdir=/path/to/target/directory --kind=sim --platform=ios
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
To see all available options for the script, including flags and defaults, run:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
appium driver run xcuitest download-wda -- --help
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Then, starting a new session with capabilities below:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"appium:usePreinstalledWDA": true,
|
|
105
|
+
"appium:prebuiltWDAPath": "/path/to/target/directory/WebDriverAgentRunner-Runner.app"
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The new session starts without an `xcodebuild` run.
|
|
110
|
+
|
|
111
|
+
### Capabilities for Prebuilt WDA with `appium:useXctestrunFile`, `appium:usePrebuiltWDA` or `appium:prebuildWDA`
|
|
112
|
+
|
|
113
|
+
The XCUITest driver provides two capabilities that allow skipping the `build-for-testing` command,
|
|
114
|
+
and executing only the `test-without-building` command: __`appium:useXctestrunFile`__ and
|
|
115
|
+
__`appium:bootstrapPath`__ (see [Capabilities](../reference/capabilities.md#webdriveragent)).
|
|
116
|
+
|
|
117
|
+
!!! note
|
|
118
|
+
|
|
119
|
+
These capabilities expect that the WDA files are already prebuild, so make sure to first run
|
|
120
|
+
`xcodebuild` to create the files.
|
|
121
|
+
|
|
122
|
+
This method can be used on both real devices and simulators, but real devices requires proper
|
|
123
|
+
signing as described in [Run Preinstalled WebDriverAgentRunner](./run-preinstalled-wda.md).
|
|
124
|
+
|
|
125
|
+
The capabilities can be used as follows:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"platformName": "ios",
|
|
130
|
+
"appium:automationName": "xcuitest",
|
|
131
|
+
"appium:platformVersion": "18.4",
|
|
132
|
+
"appium:deviceName": "iPhone 16",
|
|
133
|
+
"appium:useXctestrunFile": true,
|
|
134
|
+
"appium:bootstrapPath": "/path/to/wda_build/Build/Products"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Not all combinations have been tested, but the target device can probably be anything.
|
|
139
|
+
|
|
140
|
+
The same thing can be achieved with the __`appium:derivedDataPath`__ and __`appium:usePrebuiltWDA`__
|
|
141
|
+
capabilities, but this may fail if `xcodebuild` cannot find or handle the `.xctestrun` file
|
|
142
|
+
properly. The stability depends on Xcode.
|
|
143
|
+
|
|
144
|
+
__`appium:prebuildWDA`__ lets the XCUITest driver build the WDA before running it, then the session
|
|
145
|
+
will be handled with `appium:usePrebuiltWDA`.
|
|
146
|
+
It might have additional building steps than with `appium:derivedDataPath` and `appium:usePrebuiltWDA`
|
|
147
|
+
combination, but it could help `appium:usePrebuiltWDA` to not manage the WDA project.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Run Preinstalled WDA
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
The XCUITest driver can be configured to launch an already-installed `WebDriverAgentRunner-Runner`
|
|
6
|
+
application (WDA) on a real device and a simulator. This allows you to start a session without the `xcodebuild`
|
|
7
|
+
command execution, improving the session startup performance.
|
|
8
|
+
|
|
9
|
+
!!! warning "iOS/tvOS 17+ required (WebDriverAgent v13+)"
|
|
10
|
+
|
|
11
|
+
Bundled WebDriverAgent v13+ (see [appium/WebDriverAgent#1137](https://github.com/appium/WebDriverAgent/pull/1137))
|
|
12
|
+
launches preinstalled WDA with `devicectl` only. The legacy launch path through `appium-ios-device` /
|
|
13
|
+
Instruments is no longer available.
|
|
14
|
+
|
|
15
|
+
As a result, `appium:usePreinstalledWDA` and `appium:prebuiltWDAPath` work on **iOS/tvOS 17.0 and newer only**.
|
|
16
|
+
They are **not supported on iOS 16 and below**. For older OS versions, use the default `xcodebuild` flow or
|
|
17
|
+
provide `appium:webDriverAgentUrl` if you already have a running WDA server.
|
|
18
|
+
|
|
19
|
+
## Capabilities
|
|
20
|
+
|
|
21
|
+
- Required
|
|
22
|
+
- [`appium:usePreinstalledWDA`](../reference/capabilities.md#webdriveragent)
|
|
23
|
+
- Optional
|
|
24
|
+
- [`appium:updatedWDABundleId`](../reference/capabilities.md#webdriveragent)
|
|
25
|
+
- [`appium:updatedWDABundleIdSuffix`](../reference/capabilities.md#webdriveragent)
|
|
26
|
+
- [`appium:prebuiltWDAPath`](../reference/capabilities.md#webdriveragent)
|
|
27
|
+
|
|
28
|
+
## Install WebDriverAgent
|
|
29
|
+
|
|
30
|
+
### Using Xcode
|
|
31
|
+
|
|
32
|
+
Running a test for the WDA package in Xcode is the easiest way to prepare the device environment:
|
|
33
|
+
|
|
34
|
+
1. Open WebDriverAgent project in Xcode via `appium driver run xcuitest open-wda`
|
|
35
|
+
2. Select the _WebDriverAgentRunner_ scheme
|
|
36
|
+
3. Select the scheme as _Product -> Scheme -> WebDriverAgentRunner_ (or _WebDriverAgentRunner\_tvOS_ for tvOS)
|
|
37
|
+
4. Select your device in _Product -> Destination_
|
|
38
|
+
5. Select _Product -> Test_ to build and install the WDA app
|
|
39
|
+
|
|
40
|
+
If using a real device, you may need to change your bundle ID. Please check the
|
|
41
|
+
[Full Manual Provisioning Profile setup](../getting-started/provisioning-profile/full-manual-config.md) for details.
|
|
42
|
+
|
|
43
|
+
### Using 3rd Party Tools
|
|
44
|
+
|
|
45
|
+
Some 3rd party tools such as [pymobiledevice3](https://github.com/doronz88/pymobiledevice3),
|
|
46
|
+
[ios-deploy](https://github.com/ios-control/ios-deploy), [go-ios](https://github.com/danielpaulus/go-ios) and
|
|
47
|
+
[tidevice](https://github.com/alibaba/taobao-iphone-device) can install the WebDriverAgent package.
|
|
48
|
+
|
|
49
|
+
Some tools let you set an arbitrary bundle identifier (`CFBundleIdentifier` for the `Info.plist`) and sign it with the bundle identifier.
|
|
50
|
+
It may not have `.xctrunner` as the bundle identifier.
|
|
51
|
+
XCUITest driver automatically adds the `.xctrunner` suffix to the provided bundle identifier unless a different suffix is specified by the `appium:updatedWDABundleIdSuffix` capability.
|
|
52
|
+
If the value is an empty string, then no suffix will be added to the provided bundle identifier.
|
|
53
|
+
|
|
54
|
+
The WDA app package (`WebDriverAgentRunner-Runner.app`) can be generated in the _derivedDataPath_
|
|
55
|
+
directory, as explained in [Manual Configuration for a Generic Device](../getting-started/provisioning-profile/generic-device-config.md).
|
|
56
|
+
The app can then be installed without `xcodebuild` using the 3rd party tools.
|
|
57
|
+
|
|
58
|
+
### Additional requirement for real devices on iOS/tvOS 17+
|
|
59
|
+
|
|
60
|
+
Preinstalled WDA on real devices is started with `xcrun devicectl device process launch`. The runner app should not
|
|
61
|
+
include embedded `Frameworks/XC**` copies (use the device's local XCTest frameworks instead).
|
|
62
|
+
|
|
63
|
+
For example, after building the WebDriverAgent with Xcode with proper sign, it generates `/Users/<user>/Library/Developer/Xcode/DerivedData/WebDriverAgent-ezumztihszjoxgacuhatrhxoklbh/Build/Products/Debug-appletvos/WebDriverAgentRunner-Runner.app`.
|
|
64
|
+
Then you can remove `Frameworks/XC**` in `WebDriverAgentRunner-Runner.app` like `rm Frameworks/WebDriverAgentRunner-Runner.app/XC**`.
|
|
65
|
+
|
|
66
|
+
Configuring `appium:prebuiltWDAPath` to the `/Users/<user>/Library/Developer/Xcode/DerivedData/WebDriverAgent-ezumztihszjoxgacuhatrhxoklbh/Build/Products/Debug-appletvos/WebDriverAgentRunner-Runner.app` would install the `WebDriverAgentRunner-Runner.app`, which has no `Frameworks/XC**` to the target device and launch it with `devicectl` command as part of `appium:usePreinstalledWDA` functionality.
|
|
67
|
+
|
|
68
|
+
!!! note
|
|
69
|
+
|
|
70
|
+
You can also remove `Frameworks/Testing.framework` and `Frameworks/libXCTestSwiftSupport.dylib` to reduce the package size
|
|
71
|
+
because WebDriverAgent doesn't need both. Then, the total size of the WebDriverAgent runner app can be 3MB or less.
|
|
72
|
+
`Testing.framework` is almost 6MB and `libXCTestSwiftSupport.dylib` is 2.6MB with Xcode 16 build.
|
|
73
|
+
|
|
74
|
+
## Launch the Session
|
|
75
|
+
|
|
76
|
+
After installing the `WebDriverAgentRunner-Runner` application, you can start the Appium server
|
|
77
|
+
and launch an XCUITest driver session with the specified capabilities:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
appium
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```ruby
|
|
84
|
+
# Ruby
|
|
85
|
+
capabilities: {
|
|
86
|
+
"platformName": "ios",
|
|
87
|
+
"appium:automationName": "xcuitest",
|
|
88
|
+
"appium:udid": "<udid>",
|
|
89
|
+
"appium:usePreinstalledWDA": true,
|
|
90
|
+
"appium:updatedWDABundleId": "com.appium.WebDriverAgentRunner"
|
|
91
|
+
}
|
|
92
|
+
@core = Appium::Core.for capabilities: capabilities
|
|
93
|
+
driver = @core.start_driver
|
|
94
|
+
# do something
|
|
95
|
+
driver.quit
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
If the `<udid>` device has a WebDriverAgent package with `com.appium.WebDriverAgentRunner.xctrunner`
|
|
99
|
+
bundle ID, the session will launch the WebDriverAgent process without `xcodebuild`.
|
|
100
|
+
|
|
101
|
+
!!! note
|
|
102
|
+
|
|
103
|
+
Please ensure that the WDA application is launchable before starting an XCUITest driver session.
|
|
104
|
+
For example, check whether the provisioning profile is trusted.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
!!! note
|
|
108
|
+
|
|
109
|
+
Please make sure the device under test has the developer disk image mounted.
|
|
110
|
+
This is necessary to start an XCTest session and load the required XCTest libraries from the device.
|
|
111
|
+
For example, starting Xcode after connecting the device to the host machine will mount the developer disk image automatically.
|
|
112
|
+
Using third-party tools can also help to mount the developer disk image service.
|
|
113
|
+
Please check the documentation for each tool to understand how to mount the developer disk image.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
```ruby
|
|
117
|
+
# Ruby
|
|
118
|
+
capabilities: {
|
|
119
|
+
"platformName": "ios",
|
|
120
|
+
"appium:automationName": "xcuitest",
|
|
121
|
+
"appium:udid": "<udid>",
|
|
122
|
+
"appium:usePreinstalledWDA": true,
|
|
123
|
+
"appium:updatedWDABundleId": "io.appium.wda"
|
|
124
|
+
"appium:updatedWDABundleIdSuffix": ""
|
|
125
|
+
}
|
|
126
|
+
@core = Appium::Core.for capabilities: capabilities
|
|
127
|
+
driver = @core.start_driver
|
|
128
|
+
# do something
|
|
129
|
+
driver.quit
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
If the `<udid>` device has a WebDriverAgent package with `io.appium.wda` bundle ID (it does not have `.xctrunner`),
|
|
133
|
+
the session will launch the WebDriverAgent process without `xcodebuild`.
|
|
134
|
+
|
|
135
|
+
## Set `appium:prebuiltWDAPath`
|
|
136
|
+
|
|
137
|
+
If the `appium:prebuiltWDAPath` capability is provided with a `WebDriverAgentRunner-Runner.app` test bundle,
|
|
138
|
+
the XCUITest driver will install the application and launch it every test session.
|
|
139
|
+
Test bundles cannot be versioned using `CFBundleVersion` as vanilla applications do usually,
|
|
140
|
+
which is why it is necessary to (re)install them for every test session.
|
|
141
|
+
The test bundle should be signed properly for real devices.
|
|
142
|
+
|
|
143
|
+
Usually you can find the WDA application bundle at the below location if you use Xcode to build it.
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
~/Library/Developer/Xcode/DerivedData/WebDriverAgent-<random string>/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
You can then set your Appium capabilities as follows:
|
|
150
|
+
|
|
151
|
+
```ruby
|
|
152
|
+
# Ruby
|
|
153
|
+
capabilities: {
|
|
154
|
+
"platformName": "ios",
|
|
155
|
+
"appium:automationName": "xcuitest",
|
|
156
|
+
"appium:udid": "<udid>",
|
|
157
|
+
"appium:usePreinstalledWDA": true,
|
|
158
|
+
"appium:prebuiltWDAPath": "/path/to/Library/Developer/Xcode/DerivedData/WebDriverAgent-<random string>/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app"
|
|
159
|
+
}
|
|
160
|
+
@core = Appium::Core.for capabilities: capabilities
|
|
161
|
+
driver = @core.start_driver
|
|
162
|
+
# do something
|
|
163
|
+
driver.quit
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
!!! note
|
|
167
|
+
|
|
168
|
+
As of iOS 17, the testmanagerd service name has changed from `com.apple.testmanagerd` to
|
|
169
|
+
`com.apple.dt.testmanagerd.runner`. It causes an unexpected WDA process crash with embedded
|
|
170
|
+
XCTest frameworks while running a single WebDriverAgent package on various OS environments
|
|
171
|
+
without `xcodebuild`.
|
|
172
|
+
|
|
173
|
+
Since WDA v5.10.0, the module can refer to the device's local XCTest frameworks. It lets the
|
|
174
|
+
Appium/WebDriverAgent package use proper dependencies for the device with a single prebuilt
|
|
175
|
+
WebDriverAgent package. To set this up, you should remove the package internal frameworks from
|
|
176
|
+
`WebDriverAgentRunner-Runner.app` with `rm -rf WebDriverAgentRunner-Runner.app/Frameworks/XC*.framework`.
|
|
177
|
+
The WDA package itself is available from <https://github.com/appium/WebDriverAgent>.
|