@appium/mcp-documentation 1.0.3 → 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 +6 -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,488 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "xcuitest-real-device-config"
|
|
3
|
+
description: "Prepare a real iOS/tvOS device for Appium XCUITest automation: device trust, Developer Mode, provisioning profile, WDA code-signing and deployment patterns"
|
|
4
|
+
metadata:
|
|
5
|
+
last_modified: "Fri, 13 Mar 2026 22:30:00 GMT"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
# xcuitest-real-device-config
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
Prepares a physical iOS/tvOS device to run Appium XCUITest sessions by configuring
|
|
12
|
+
device trust and security settings, building or downloading a properly signed
|
|
13
|
+
WebDriverAgent (WDA) package, verifying its code signature, and optionally configuring
|
|
14
|
+
faster WDA deployment patterns (preinstalled, prebuilt, or attach-to-running).
|
|
15
|
+
|
|
16
|
+
## Decision Logic
|
|
17
|
+
- If host OS is not macOS: stop and tell the user this skill is macOS-only.
|
|
18
|
+
- If `environment-setup-xcuitest` has not been completed: require it first.
|
|
19
|
+
- Before Option 2/3 signing steps, collect user inputs for bundle/team:
|
|
20
|
+
- Free Apple ID: use a bundle ID that Xcode has already accepted for that Apple ID.
|
|
21
|
+
- Paid Apple Developer: ask for the expected bundle ID and team ID used by their org.
|
|
22
|
+
- WDA preparation (step 4) — try in priority order and stop at the first that succeeds:
|
|
23
|
+
1. Download a prebuilt WDA package from the GitHub releases page and sign with [`resigner`](https://github.com/appium/resigner) — handles profile embedding, optional bundle ID remapping, and signing in one step for any account type.
|
|
24
|
+
2. Build WDA with `xcodebuild` passing explicit `PRODUCT_BUNDLE_IDENTIFIER`, `DEVELOPMENT_TEAM`, and `CODE_SIGN_IDENTITY` settings.
|
|
25
|
+
3. Build WDA via Xcode UI (`appium driver run xcuitest open-wda`) as a last resort.
|
|
26
|
+
- Run `appium driver run xcuitest open-wda` only for Option 3 (Xcode UI); skip for Options 1 and 2.
|
|
27
|
+
- After any build by Xcode or xcodebuild on iOS/tvOS 17+: remove `Frameworks/` files, then re-sign before verifying.
|
|
28
|
+
- For iOS/tvOS 17+, use the framework-removed and re-signed `.app` for Step 6/7 runtime checks; otherwise WDA may install but fail to launch.
|
|
29
|
+
- After any WDA preparation: always verify the signature with `codesign --verify --deep --strict` (step 5) before deploying.
|
|
30
|
+
- If a downloaded WDA package has no embedded provisioning profile: use `resigner` which handles profile embedding, optional bundle ID remapping, and signing in one step.
|
|
31
|
+
- For free-account or enterprise-profile setups where first launch may be blocked by trust prompts, install and trust a sample app signed with the same provisioning profile before launching WDA.
|
|
32
|
+
- For iOS/iPadOS 16+ without reliable internet: use an offline provisioning profile (see note in step 4, Option 1).
|
|
33
|
+
- WDA deployment pattern is optional and user-driven; the default uses `xcodebuild` every session:
|
|
34
|
+
- For faster session start if WDA can remain installed between sessions → Run Preinstalled WDA (`appium:usePreinstalledWDA`).
|
|
35
|
+
- For faster session start using a pre-built package (no xcodebuild at session time) → Run Prebuilt WDA (`appium:prebuiltWDAPath`).
|
|
36
|
+
- For fully self-managed WDA lifecycle → Attach to Running WDA (`appium:webDriverAgentUrl`).
|
|
37
|
+
- Ask before installing optional 3rd-party device tools (ios-deploy, go-ios, pymobiledevice3, tidevice).
|
|
38
|
+
|
|
39
|
+
## Instructions
|
|
40
|
+
|
|
41
|
+
1. **Verify prerequisite: environment-setup-xcuitest completed**
|
|
42
|
+
```bash
|
|
43
|
+
appium -v
|
|
44
|
+
appium driver list --installed --json || appium driver list --installed
|
|
45
|
+
```
|
|
46
|
+
Confirm `xcuitest` appears in the installed driver list before continuing. If it is
|
|
47
|
+
missing, complete `environment-setup-xcuitest` first.
|
|
48
|
+
|
|
49
|
+
2. **Connect device and confirm visibility**
|
|
50
|
+
- Connect the device to the Mac via USB.
|
|
51
|
+
- If prompted on the device, tap **Trust** to trust the connected computer.
|
|
52
|
+
- Confirm the device is visible:
|
|
53
|
+
```bash
|
|
54
|
+
xcrun xctrace list devices
|
|
55
|
+
```
|
|
56
|
+
The output should include the connected device with its UDID. Record the UDID for
|
|
57
|
+
use in Appium capabilities.
|
|
58
|
+
- Opening Xcode after connecting also mounts the developer disk image automatically,
|
|
59
|
+
which is required for launching XCTest sessions.
|
|
60
|
+
|
|
61
|
+
3. **Enable Developer Mode and required settings (iOS/iPadOS 16 and above)**
|
|
62
|
+
- On the device: **Settings → Privacy & Security → Developer Mode** → enable.
|
|
63
|
+
Restart if prompted.
|
|
64
|
+
- After restart: **Settings → Developer → Enable UI Automation** → enable.
|
|
65
|
+
- For Webview testing (optional): **Settings → Safari → Advanced → Web Inspector** and
|
|
66
|
+
**Settings → Safari → Advanced → Remote Automation** → both on.
|
|
67
|
+
- CLI alternative to trigger Developer Mode (macOS 13+ with a tethered device):
|
|
68
|
+
```bash
|
|
69
|
+
devmodectl streaming
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
4. **Prepare WDA**
|
|
73
|
+
Build or obtain a properly signed `WebDriverAgentRunner-Runner.app` before running
|
|
74
|
+
any Appium session. Try the options below in priority order and stop at the first
|
|
75
|
+
that succeeds.
|
|
76
|
+
|
|
77
|
+
If `APPIUM_HOME` is set, use it. Otherwise fall back to `$HOME/.appium`:
|
|
78
|
+
```bash
|
|
79
|
+
APPIUM_HOME_DIR="${APPIUM_HOME:-$HOME/.appium}"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
First, find the WDA version bundled with the installed XCUITest driver — use the
|
|
83
|
+
same version when choosing Option 1 or 2:
|
|
84
|
+
```bash
|
|
85
|
+
cat "$APPIUM_HOME_DIR"/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/package.json | grep '"version"'
|
|
86
|
+
```
|
|
87
|
+
Also list available signing identities for use in all options below:
|
|
88
|
+
```bash
|
|
89
|
+
security find-identity -v -p codesigning
|
|
90
|
+
```
|
|
91
|
+
Note the identity string (e.g. `"Apple Development: you@example.com (TEAMID)"`).
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
**Option 1 (primary) — Download prebuilt WDA from GitHub releases**
|
|
96
|
+
|
|
97
|
+
The [WebDriverAgent releases page](https://github.com/appium/WebDriverAgent/releases)
|
|
98
|
+
provides prebuilt `.app` packages for real devices. These are built without embedded
|
|
99
|
+
XCTest frameworks (safe for iOS 17+) and have no embedded provisioning profile;
|
|
100
|
+
they must be signed with your own identity before use.
|
|
101
|
+
|
|
102
|
+
Download [`resigner`](https://github.com/appium/resigner) from its
|
|
103
|
+
[releases page](https://github.com/appium/resigner/releases). It handles profile
|
|
104
|
+
embedding, optional bundle ID remapping, and signing in one step for any account type.
|
|
105
|
+
Select the archive that matches the host machine architecture:
|
|
106
|
+
```bash
|
|
107
|
+
ARCH="$(uname -m)"
|
|
108
|
+
case "$ARCH" in
|
|
109
|
+
arm64) RESIGNER_ARCHIVE="darwin-arm64.tar.gz" ;;
|
|
110
|
+
x86_64) RESIGNER_ARCHIVE="darwin-amd64.tar.gz" ;;
|
|
111
|
+
*) echo "Unsupported macOS arch: $ARCH"; exit 1 ;;
|
|
112
|
+
esac
|
|
113
|
+
|
|
114
|
+
tar xzf "$RESIGNER_ARCHIVE"
|
|
115
|
+
# binary is at: darwin-*/resigner
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Export your signing certificate as a `.p12`. Use either method:
|
|
119
|
+
|
|
120
|
+
**GUI (Keychain Access):** locate your Apple Development certificate (the one with a
|
|
121
|
+
private key) → right-click → **Export** → choose **Personal Information Exchange
|
|
122
|
+
(.p12)** → set an export password.
|
|
123
|
+
|
|
124
|
+
**CLI (login keychain):**
|
|
125
|
+
```bash
|
|
126
|
+
P12_PASS="<choose-a-password>"
|
|
127
|
+
security export \
|
|
128
|
+
-k ~/Library/Keychains/login.keychain-db \
|
|
129
|
+
-t identities \
|
|
130
|
+
-f pkcs12 \
|
|
131
|
+
-P "$P12_PASS" \
|
|
132
|
+
-o ~/sign/mysign.p12
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Inspect the downloaded package to confirm current bundle IDs and signing state:
|
|
136
|
+
```bash
|
|
137
|
+
WDA_APP="/path/to/downloaded/WebDriverAgentRunner-Runner.app"
|
|
138
|
+
resigner --inspect "$WDA_APP"
|
|
139
|
+
```
|
|
140
|
+
The prebuilt package uses `com.facebook.WebDriverAgentRunner` as its root bundle ID.
|
|
141
|
+
|
|
142
|
+
Decode your provisioning profile to confirm its allowed bundle identifier.
|
|
143
|
+
For free accounts (always specific-ID profiles), the output includes a `TEAMID.`
|
|
144
|
+
prefix and you must strip it to get `TARGET_BUNDLE_ID`. For paid accounts, do this
|
|
145
|
+
strip step only when using a specific-ID profile; if using `*`, `TARGET_BUNDLE_ID`
|
|
146
|
+
is not needed because remap flags are omitted.
|
|
147
|
+
```bash
|
|
148
|
+
PROFILES_DIR="/path/to/profiles-directory" # resigner --profile takes a directory
|
|
149
|
+
security cms -D -i "$PROFILES_DIR/<profile>.mobileprovision" > /tmp/profile.plist
|
|
150
|
+
# output example: TEAMID1234.com.example.wda -> TARGET_BUNDLE_ID=com.example.wda
|
|
151
|
+
/usr/libexec/PlistBuddy -c "Print :Entitlements:application-identifier" /tmp/profile.plist
|
|
152
|
+
/usr/libexec/PlistBuddy -c "Print :ExpirationDate" /tmp/profile.plist
|
|
153
|
+
|
|
154
|
+
APP_ID=$(/usr/libexec/PlistBuddy -c "Print :Entitlements:application-identifier" /tmp/profile.plist)
|
|
155
|
+
TARGET_BUNDLE_ID="${APP_ID#*.}" # remove TEAMID. prefix if present
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Run `resigner` to embed the profile and sign. `--profile` accepts a **directory**
|
|
159
|
+
path; resigner selects the matching profile automatically. Include `--bundle-id-remap`
|
|
160
|
+
flags only when your profile app identifier is not a true wildcard (`*`):
|
|
161
|
+
```bash
|
|
162
|
+
TARGET_BUNDLE_ID="<bundle-id-covered-by-your-profile>" # strip the TEAMID. prefix
|
|
163
|
+
# Omit the --bundle-id-remap lines ONLY if your profile app identifier is exactly `*`
|
|
164
|
+
# Partial wildcards (e.g. io.appium.* or com.example.*) still require --bundle-id-remap
|
|
165
|
+
|
|
166
|
+
resigner \
|
|
167
|
+
--p12-file "<path-to-your.p12>" \
|
|
168
|
+
--p12-password "<p12-password>" \
|
|
169
|
+
--profile "$PROFILES_DIR" \
|
|
170
|
+
--force \
|
|
171
|
+
--bundle-id-remap "com.facebook.WebDriverAgentRunner=${TARGET_BUNDLE_ID}" \
|
|
172
|
+
--bundle-id-remap "com.facebook.WebDriverAgentRunner.xctrunner=${TARGET_BUNDLE_ID}" \
|
|
173
|
+
--bundle-id-remap "com.facebook.WebDriverAgentLib=${TARGET_BUNDLE_ID}" \
|
|
174
|
+
"$WDA_APP"
|
|
175
|
+
```
|
|
176
|
+
After `resigner` completes, the package is already signed; proceed directly to step 5 to verify.
|
|
177
|
+
|
|
178
|
+
Validate the result before install:
|
|
179
|
+
```bash
|
|
180
|
+
codesign --verify --deep --strict --verbose=2 "$WDA_APP"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
If install fails with `ApplicationVerificationFailed` / `A valid provisioning profile
|
|
184
|
+
for this executable was not found`, the profile does not cover the current bundle ID
|
|
185
|
+
and device UDID. Regenerate the profile and re-sign.
|
|
186
|
+
|
|
187
|
+
Provisioning profile notes:
|
|
188
|
+
- A true wildcard profile (`*` app identifier) covers any bundle ID and requires a
|
|
189
|
+
paid Apple Developer account — no `--bundle-id-remap` flags needed.
|
|
190
|
+
- Partial wildcards (e.g. `io.appium.*`) and all specific-ID profiles (free account
|
|
191
|
+
or paid account without a `*` profile) require the `--bundle-id-remap` flags.
|
|
192
|
+
- Free-account profiles generated by Xcode are typically under
|
|
193
|
+
`~/Library/Developer/Xcode/UserData/Provisioning Profiles/`.
|
|
194
|
+
- System-cached profiles from manual downloads are under
|
|
195
|
+
`~/Library/MobileDevice/Provisioning Profiles/`.
|
|
196
|
+
- **Expired profiles are rejected** by `resigner` as "not usable".
|
|
197
|
+
- Always confirm profile validity before running:
|
|
198
|
+
```bash
|
|
199
|
+
security cms -D -i "$PROFILES_DIR/<profile>.mobileprovision" > /tmp/profile.plist
|
|
200
|
+
/usr/libexec/PlistBuddy -c "Print :ExpirationDate" /tmp/profile.plist
|
|
201
|
+
date
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
> **Offline note (iOS 16+):** If the device has no reliable internet at test time,
|
|
205
|
+
> set up an offline provisioning profile first. Follow the steps in the
|
|
206
|
+
> [Appium issue comment](https://github.com/appium/appium/issues/18378#issuecomment-1482678074).
|
|
207
|
+
|
|
208
|
+
> **Fast prebuilt workflow (verified):** Use `resigner --inspect` first to get the
|
|
209
|
+
> source bundle IDs (`com.facebook.WebDriverAgentRunner*`), then derive
|
|
210
|
+
> `TARGET_BUNDLE_ID` from the non-expired provisioning profile's
|
|
211
|
+
> `Entitlements:application-identifier` (strip `TEAMID.`). Remap all WDA bundle IDs
|
|
212
|
+
> to that exact target ID and sign in one run.
|
|
213
|
+
>
|
|
214
|
+
> If re-signing fails with "unable to find usable provisioning profile", the usual
|
|
215
|
+
> causes are: expired profile, profile not matching the remapped target ID, or team/
|
|
216
|
+
> certificate mismatch.
|
|
217
|
+
|
|
218
|
+
Proceed to step 5 to verify the signature.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
**Option 2 — Build WDA with xcodebuild using explicit signing settings**
|
|
223
|
+
|
|
224
|
+
Use when a prebuilt release package does not match the required version, or when a
|
|
225
|
+
custom bundle ID is needed. Pass signing settings directly as `xcodebuild` arguments:
|
|
226
|
+
|
|
227
|
+
Before running `xcodebuild`, collect these inputs from the user:
|
|
228
|
+
- `BUNDLE_ID`
|
|
229
|
+
- `DEVELOPMENT_TEAM`
|
|
230
|
+
- account type (free Apple ID or paid Apple Developer)
|
|
231
|
+
|
|
232
|
+
How to choose `BUNDLE_ID`:
|
|
233
|
+
- Free Apple ID: use a bundle ID that Xcode already accepted for that Apple ID
|
|
234
|
+
(for example, from the temporary app project created in Option 3b), then append
|
|
235
|
+
`WebDriverAgentRunner` naming as needed.
|
|
236
|
+
- Paid Apple Developer: ask the user for the expected production/testing bundle ID
|
|
237
|
+
and matching team ID for their org.
|
|
238
|
+
- Do not hardcode personal prefixes (for example, `com.example.personal`) in reusable docs;
|
|
239
|
+
treat those as environment-specific examples only.
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
BUNDLE_ID="<user-provided.bundle.id>"
|
|
243
|
+
# Prefer deriving values from the selected profile for repeatable automation:
|
|
244
|
+
# PROFILE_PATH="/path/to/<profile>.mobileprovision"
|
|
245
|
+
# security cms -D -i "$PROFILE_PATH" > /tmp/profile.plist
|
|
246
|
+
# DEVELOPMENT_TEAM=$(/usr/libexec/PlistBuddy -c "Print :TeamIdentifier:0" /tmp/profile.plist)
|
|
247
|
+
# APP_ID=$(/usr/libexec/PlistBuddy -c "Print :Entitlements:application-identifier" /tmp/profile.plist)
|
|
248
|
+
# BUNDLE_ID="${APP_ID#*.}" # remove TEAMID. prefix if present
|
|
249
|
+
|
|
250
|
+
DEVELOPMENT_TEAM="<USER_TEAM_ID>" # 10-character team ID from the user's Apple account
|
|
251
|
+
SIGN_ID="Apple Development" # or the full identity string from security find-identity
|
|
252
|
+
|
|
253
|
+
# Must: inspect the selected certificate subject and OU
|
|
254
|
+
# security find-certificate -c "Apple Development: you@example.com" -p | openssl x509 -noout -subject
|
|
255
|
+
# subject=UID=UID, CN=Apple Development: you@example.com (TEAMID), OU=TEAMID, O=your name, C=US
|
|
256
|
+
|
|
257
|
+
# iOS/iPadOS
|
|
258
|
+
xcodebuild clean build-for-testing \
|
|
259
|
+
-project "$APPIUM_HOME_DIR"/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj \
|
|
260
|
+
-derivedDataPath appium_wda_ios \
|
|
261
|
+
-scheme WebDriverAgentRunner \
|
|
262
|
+
-destination generic/platform=iOS \
|
|
263
|
+
-allowProvisioningUpdates \
|
|
264
|
+
-allowProvisioningDeviceRegistration \
|
|
265
|
+
PRODUCT_BUNDLE_IDENTIFIER="$BUNDLE_ID" \
|
|
266
|
+
DEVELOPMENT_TEAM="$DEVELOPMENT_TEAM" \
|
|
267
|
+
CODE_SIGN_IDENTITY="$SIGN_ID"
|
|
268
|
+
|
|
269
|
+
# tvOS
|
|
270
|
+
xcodebuild clean build-for-testing \
|
|
271
|
+
-project "$APPIUM_HOME_DIR"/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj \
|
|
272
|
+
-derivedDataPath appium_wda_tvos \
|
|
273
|
+
-scheme WebDriverAgentRunner_tvOS \
|
|
274
|
+
-destination generic/platform=tvOS \
|
|
275
|
+
-allowProvisioningUpdates \
|
|
276
|
+
-allowProvisioningDeviceRegistration \
|
|
277
|
+
PRODUCT_BUNDLE_IDENTIFIER="$BUNDLE_ID" \
|
|
278
|
+
DEVELOPMENT_TEAM="$DEVELOPMENT_TEAM" \
|
|
279
|
+
CODE_SIGN_IDENTITY="$SIGN_ID"
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
If `xcodebuild` fails with `No Account for Team` or profile-not-found errors:
|
|
283
|
+
- Ensure the Apple account is signed into Xcode for that team.
|
|
284
|
+
- Confirm the provided `DEVELOPMENT_TEAM` matches the effective certificate team actually used
|
|
285
|
+
for signing (for example, `TeamIdentifier` shown by `codesign -dv --verbose=4`).
|
|
286
|
+
- Retry with the corrected team value.
|
|
287
|
+
|
|
288
|
+
The built package will be at:
|
|
289
|
+
```
|
|
290
|
+
appium_wda_ios/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**iOS 17+ / tvOS 17+:** The package embeds XCTest runtime artifacts that must be
|
|
294
|
+
removed before the device can launch WDA with its own local XCTest runtime. After
|
|
295
|
+
the build, remove the same artifacts as the GitHub release package and re-sign:
|
|
296
|
+
```bash
|
|
297
|
+
WDA_APP="appium_wda_ios/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app"
|
|
298
|
+
|
|
299
|
+
rm -rf "$WDA_APP"/Frameworks/XC*.framework
|
|
300
|
+
rm -f "$WDA_APP"/Frameworks/Testing.framework
|
|
301
|
+
rm -f "$WDA_APP"/Frameworks/libXCTestSwiftSupport.dylib
|
|
302
|
+
|
|
303
|
+
# Re-sign with the same identity used during build
|
|
304
|
+
codesign --force --sign "$SIGN_ID" "$WDA_APP"
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Proceed to step 5 to verify the signature.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
**Option 3 (Xcode UI fallback) — Build WDA via Xcode**
|
|
312
|
+
|
|
313
|
+
Use this when the prebuilt release is unavailable and xcodebuild signing fails.
|
|
314
|
+
Open the WDA project in Xcode:
|
|
315
|
+
```bash
|
|
316
|
+
appium driver run xcuitest open-wda
|
|
317
|
+
```
|
|
318
|
+
Then choose the signing sub-option that matches your Apple Developer account:
|
|
319
|
+
|
|
320
|
+
**Option 3a — Automatic signing (paid Apple Developer account)**
|
|
321
|
+
- Select `WebDriverAgentRunner` target → Signing & Capabilities.
|
|
322
|
+
- Check **Automatically manage signing** and select your paid team.
|
|
323
|
+
- Build and install: **Product → Test** on the connected device.
|
|
324
|
+
|
|
325
|
+
**Option 3b — Free Apple ID**
|
|
326
|
+
- Create a new temporary iOS app project in Xcode; let Xcode generate a provisioning
|
|
327
|
+
profile for a bundle ID your free account covers.
|
|
328
|
+
- Back in the WDA project, select `WebDriverAgentRunner` target, set the bundle ID to
|
|
329
|
+
the one Xcode accepted, sign with your free team.
|
|
330
|
+
- Build and install: **Product → Test** on the connected device.
|
|
331
|
+
|
|
332
|
+
**Option 3c — Manual bundle assignment**
|
|
333
|
+
In the WDA source root:
|
|
334
|
+
```bash
|
|
335
|
+
mkdir -p Resources/WebDriverAgent.bundle
|
|
336
|
+
```
|
|
337
|
+
- In Xcode: select root project → `WebDriverAgentRunner` target → Signing & Capabilities.
|
|
338
|
+
- Change `com.facebook.WebDriverAgentRunner` to a bundle ID covered by your profile.
|
|
339
|
+
- Build and install: **Product → Test** on the connected device.
|
|
340
|
+
|
|
341
|
+
**iOS 17+ / tvOS 17+ (all Option 3 sub-options):**
|
|
342
|
+
The Xcode-built package contains the same XCTest runtime artifacts as other WDA
|
|
343
|
+
bundles. Remove `Frameworks/XC*.framework`, `Frameworks/Testing.framework`, and
|
|
344
|
+
`Frameworks/libXCTestSwiftSupport.dylib`, then re-sign before installation:
|
|
345
|
+
```bash
|
|
346
|
+
WDA_APP=~/Library/Developer/Xcode/DerivedData/WebDriverAgent-*/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app
|
|
347
|
+
|
|
348
|
+
rm -rf "$WDA_APP"/Frameworks/XC*.framework
|
|
349
|
+
rm -f "$WDA_APP"/Frameworks/Testing.framework
|
|
350
|
+
rm -f "$WDA_APP"/Frameworks/libXCTestSwiftSupport.dylib
|
|
351
|
+
|
|
352
|
+
SIGNING_IDENTITY="Apple Development: you@example.com (TEAMID)"
|
|
353
|
+
codesign --force --sign "$SIGNING_IDENTITY" "$WDA_APP"
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
Proceed to step 5 to verify the signature.
|
|
357
|
+
|
|
358
|
+
5. **Verify WDA signature**
|
|
359
|
+
Run the following checks on the prepared `.app` before deploying it to the device.
|
|
360
|
+
Removing any file from a signed bundle invalidates the Code Directory hash, so this
|
|
361
|
+
check catches both a bad re-sign and a bundle that was never signed:
|
|
362
|
+
```bash
|
|
363
|
+
WDA_APP="/path/to/WebDriverAgentRunner-Runner.app"
|
|
364
|
+
|
|
365
|
+
# Verify signature recursively with strict checking
|
|
366
|
+
codesign --verify --deep --strict --verbose=2 "$WDA_APP"
|
|
367
|
+
|
|
368
|
+
# Inspect signing details (team, bundle ID, entitlements)
|
|
369
|
+
codesign -dv --verbose=4 "$WDA_APP"
|
|
370
|
+
```
|
|
371
|
+
A valid result produces:
|
|
372
|
+
```
|
|
373
|
+
WebDriverAgentRunner-Runner.app: valid on disk
|
|
374
|
+
WebDriverAgentRunner-Runner.app: satisfies its Designated Requirement
|
|
375
|
+
```
|
|
376
|
+
If `codesign --verify` exits non-zero or reports `invalid`, return to step 4 and
|
|
377
|
+
re-sign or rebuild the bundle.
|
|
378
|
+
|
|
379
|
+
**Common install-time errors and fixes:**
|
|
380
|
+
- `xcodebuild exited with code '65'` → code signing is misconfigured; redo step 4.
|
|
381
|
+
- `Unable to launch … invalid code signature / inadequate entitlements / profile not trusted`
|
|
382
|
+
→ The developer is not yet trusted on the device.
|
|
383
|
+
On the device: **Settings → General → VPN & Device Management** → select the
|
|
384
|
+
development team → **Trust**. Then retry.
|
|
385
|
+
|
|
386
|
+
**Recommendation (free account / enterprise profile):**
|
|
387
|
+
Before first WDA launch, install a small sample app signed with the same
|
|
388
|
+
provisioning profile/certificate, launch it once, and complete all trust prompts.
|
|
389
|
+
This pre-trust step reduces WDA launch blocking on first run.
|
|
390
|
+
|
|
391
|
+
6. **Run Appium XCUITest with Prepared WDA** *(choose one mode only)*
|
|
392
|
+
Use one mode below as an example. Do not run all modes.
|
|
393
|
+
|
|
394
|
+
**Mode A — Reuse preinstalled WDA**
|
|
395
|
+
Install WDA once and reuse it across sessions without running `xcodebuild` each time.
|
|
396
|
+
```json
|
|
397
|
+
{
|
|
398
|
+
"platformName": "ios",
|
|
399
|
+
"appium:automationName": "xcuitest",
|
|
400
|
+
"appium:udid": "<device-udid>",
|
|
401
|
+
"appium:usePreinstalledWDA": true,
|
|
402
|
+
"appium:updatedWDABundleId": "com.yourteam.WebDriverAgentRunner"
|
|
403
|
+
}
|
|
404
|
+
```
|
|
405
|
+
Notes:
|
|
406
|
+
- For free-account or enterprise-profile setups, complete the step 5 pre-trust
|
|
407
|
+
recommendation first.
|
|
408
|
+
- If launch fails with repeated `ECONNREFUSED 127.0.0.1:8100`, rebuild from the
|
|
409
|
+
iOS/tvOS 17+ flow in step 4 (`rm -rf Frameworks/` + re-sign), reinstall, then retry.
|
|
410
|
+
- If the installed WDA bundle ID has no `.xctrunner` suffix:
|
|
411
|
+
```json
|
|
412
|
+
{
|
|
413
|
+
"appium:usePreinstalledWDA": true,
|
|
414
|
+
"appium:updatedWDABundleId": "io.appium.wda",
|
|
415
|
+
"appium:updatedWDABundleIdSuffix": ""
|
|
416
|
+
}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Mode B — Use prebuilt WDA app/xctestrun artifacts**
|
|
420
|
+
Skip build work at session time by using previously prepared artifacts.
|
|
421
|
+
|
|
422
|
+
Option B1: Signed `.app` artifact
|
|
423
|
+
```json
|
|
424
|
+
{
|
|
425
|
+
"platformName": "ios",
|
|
426
|
+
"appium:automationName": "xcuitest",
|
|
427
|
+
"appium:udid": "<device-udid>",
|
|
428
|
+
"appium:usePreinstalledWDA": true,
|
|
429
|
+
"appium:prebuiltWDAPath": "/path/to/signed/WebDriverAgentRunner-Runner.app"
|
|
430
|
+
}
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
Option B2: `.xctestrun` artifact
|
|
434
|
+
```json
|
|
435
|
+
{
|
|
436
|
+
"platformName": "ios",
|
|
437
|
+
"appium:automationName": "xcuitest",
|
|
438
|
+
"appium:udid": "<device-udid>",
|
|
439
|
+
"appium:useXctestrunFile": true,
|
|
440
|
+
"appium:bootstrapPath": "/abs/path/to/appium_wda_ios/Build/Products"
|
|
441
|
+
}
|
|
442
|
+
```
|
|
443
|
+
If Appium expects `WebDriverAgentRunner_iphoneos-arm64.xctestrun` but build output
|
|
444
|
+
is SDK-suffixed, copy/rename it to the expected filename in the same directory.
|
|
445
|
+
|
|
446
|
+
**Mode C — Attach to already running WDA**
|
|
447
|
+
Start WDA externally (Xcode/xcodebuild/tooling), then point Appium at it.
|
|
448
|
+
```json
|
|
449
|
+
{
|
|
450
|
+
"platformName": "ios",
|
|
451
|
+
"appium:automationName": "xcuitest",
|
|
452
|
+
"appium:udid": "<device-udid>",
|
|
453
|
+
"appium:webDriverAgentUrl": "http://<device-ip-or-localhost>:8100"
|
|
454
|
+
}
|
|
455
|
+
```
|
|
456
|
+
If the remote WDA port differs from local forwarding, add `appium:wdaRemotePort`.
|
|
457
|
+
|
|
458
|
+
**Skill report requirement:**
|
|
459
|
+
- In the final skill report, print at least one copy-paste-ready capabilities JSON
|
|
460
|
+
snippet for the mode that was validated.
|
|
461
|
+
- Include one additional capabilities snippet as a fallback hint (for example,
|
|
462
|
+
preinstalled mode and attach mode).
|
|
463
|
+
|
|
464
|
+
## Constraints
|
|
465
|
+
- This skill is macOS-only; do not provide Linux/Windows alternatives.
|
|
466
|
+
- `environment-setup-xcuitest` must be completed before starting this skill.
|
|
467
|
+
- Always verify the WDA signature with `codesign --verify --deep --strict` (step 5)
|
|
468
|
+
after any preparation step before deploying.
|
|
469
|
+
- Never skip re-signing after modifying a signed `.app` bundle (e.g. removing frameworks).
|
|
470
|
+
- Paid-account-only steps (automatic signing, wildcard profiles) must be clearly marked;
|
|
471
|
+
do not require them from users with a free Apple ID.
|
|
472
|
+
- Ask the user before installing any 3rd-party device tool (ios-deploy, go-ios,
|
|
473
|
+
pymobiledevice3, tidevice, ios-app-signer, etc.).
|
|
474
|
+
- For steps that require physical interaction with the device (Trust popup, Developer
|
|
475
|
+
Mode toggle), pause and provide the exact on-device instruction.
|
|
476
|
+
- Step 6 contains optional runtime modes; validate one mode only. The default
|
|
477
|
+
xcodebuild-per-session flow is still valid.
|
|
478
|
+
|
|
479
|
+
## Agent completion criteria
|
|
480
|
+
Mark the skill complete only when all of the following are true:
|
|
481
|
+
- Connected device is visible in `xcrun xctrace list devices` output.
|
|
482
|
+
- A signed WDA `.app` has been prepared using one of the Options in step 4.
|
|
483
|
+
- `codesign --verify --deep --strict` on the prepared WDA exits cleanly (step 5 passes).
|
|
484
|
+
- At least one WDA runtime mode from step 6 is confirmed working (or default
|
|
485
|
+
xcodebuild-per-session install succeeds).
|
|
486
|
+
- Final skill report includes capability hints:
|
|
487
|
+
- one copy-paste JSON capabilities snippet for the validated mode, and
|
|
488
|
+
- one additional fallback snippet.
|