appium-mcp 0.0.1 → 1.1.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/.github/workflows/ci.yml +37 -0
- package/.github/workflows/pr-title.yml +15 -0
- package/.github/workflows/publish.yml +31 -0
- package/.gitmodules +9 -0
- package/.prettierignore +29 -0
- package/.prettierrc +10 -0
- package/.releaserc +37 -0
- package/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +153 -0
- package/dist/devicemanager/adb-manager.d.ts +71 -0
- package/dist/devicemanager/adb-manager.js +140 -0
- package/dist/devicemanager/adb-manager.js.map +1 -0
- package/dist/devicemanager/ios-manager.d.ts +58 -0
- package/dist/devicemanager/ios-manager.js +122 -0
- package/dist/devicemanager/ios-manager.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/locators/element-filter.d.ts +13 -0
- package/dist/locators/element-filter.js +79 -0
- package/dist/locators/element-filter.js.map +1 -0
- package/dist/locators/generate-all-locators.d.ts +21 -0
- package/dist/locators/generate-all-locators.js +72 -0
- package/dist/locators/generate-all-locators.js.map +1 -0
- package/dist/locators/locator-generation.d.ts +36 -0
- package/dist/locators/locator-generation.js +501 -0
- package/dist/locators/locator-generation.js.map +1 -0
- package/dist/locators/logger.d.ts +5 -0
- package/dist/locators/logger.js +9 -0
- package/dist/locators/logger.js.map +1 -0
- package/dist/locators/source-parsing.d.ts +43 -0
- package/dist/locators/source-parsing.js +100 -0
- package/dist/locators/source-parsing.js.map +1 -0
- package/dist/resources/index.d.ts +1 -0
- package/dist/resources/index.js +7 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/java/template.d.ts +4 -0
- package/dist/resources/java/template.js +82 -0
- package/dist/resources/java/template.js.map +1 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.js +5 -0
- package/dist/schema.js.map +1 -0
- package/dist/scripts/simple-index-documentation.d.ts +20 -0
- package/dist/scripts/simple-index-documentation.js +77 -0
- package/dist/scripts/simple-index-documentation.js.map +1 -0
- package/dist/scripts/simple-query-documentation.d.ts +12 -0
- package/dist/scripts/simple-query-documentation.js +52 -0
- package/dist/scripts/simple-query-documentation.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +37 -0
- package/dist/server.js.map +1 -0
- package/dist/tests/__mocks__/@appium/support.d.ts +21 -0
- package/dist/tests/__mocks__/@appium/support.js +30 -0
- package/dist/tests/__mocks__/@appium/support.js.map +1 -0
- package/dist/tests/generate-all-locators.test.d.ts +1 -0
- package/dist/tests/generate-all-locators.test.js +140 -0
- package/dist/tests/generate-all-locators.test.js.map +1 -0
- package/dist/tests/test-setup-wda.d.ts +1 -0
- package/dist/tests/test-setup-wda.js +202 -0
- package/dist/tests/test-setup-wda.js.map +1 -0
- package/dist/tools/answer-appium.d.ts +1 -0
- package/dist/tools/answer-appium.js +71 -0
- package/dist/tools/answer-appium.js.map +1 -0
- package/dist/tools/boot-simulator.d.ts +1 -0
- package/dist/tools/boot-simulator.js +71 -0
- package/dist/tools/boot-simulator.js.map +1 -0
- package/dist/tools/create-session.d.ts +1 -0
- package/dist/tools/create-session.js +192 -0
- package/dist/tools/create-session.js.map +1 -0
- package/dist/tools/delete-session.d.ts +1 -0
- package/dist/tools/delete-session.js +47 -0
- package/dist/tools/delete-session.js.map +1 -0
- package/dist/tools/documentation/index.d.ts +28 -0
- package/dist/tools/documentation/index.js +63 -0
- package/dist/tools/documentation/index.js.map +1 -0
- package/dist/tools/documentation/reasoning-rag.d.ts +88 -0
- package/dist/tools/documentation/reasoning-rag.js +281 -0
- package/dist/tools/documentation/reasoning-rag.js.map +1 -0
- package/dist/tools/documentation/sentence-transformers-embeddings.d.ts +34 -0
- package/dist/tools/documentation/sentence-transformers-embeddings.js +111 -0
- package/dist/tools/documentation/sentence-transformers-embeddings.js.map +1 -0
- package/dist/tools/documentation/simple-pdf-indexer.d.ts +45 -0
- package/dist/tools/documentation/simple-pdf-indexer.js +402 -0
- package/dist/tools/documentation/simple-pdf-indexer.js.map +1 -0
- package/dist/tools/documentation/uploads/documents.json +1 -0
- package/dist/tools/generate-tests.d.ts +2 -0
- package/dist/tools/generate-tests.js +46 -0
- package/dist/tools/generate-tests.js.map +1 -0
- package/dist/tools/index.d.ts +16 -0
- package/dist/tools/index.js +112 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/install-wda.d.ts +1 -0
- package/dist/tools/install-wda.js +219 -0
- package/dist/tools/install-wda.js.map +1 -0
- package/dist/tools/interactions/activate-app.d.ts +2 -0
- package/dist/tools/interactions/activate-app.js +44 -0
- package/dist/tools/interactions/activate-app.js.map +1 -0
- package/dist/tools/interactions/click.d.ts +2 -0
- package/dist/tools/interactions/click.js +45 -0
- package/dist/tools/interactions/click.js.map +1 -0
- package/dist/tools/interactions/double-tap.d.ts +2 -0
- package/dist/tools/interactions/double-tap.js +81 -0
- package/dist/tools/interactions/double-tap.js.map +1 -0
- package/dist/tools/interactions/find.d.ts +13 -0
- package/dist/tools/interactions/find.js +55 -0
- package/dist/tools/interactions/find.js.map +1 -0
- package/dist/tools/interactions/get-text.d.ts +2 -0
- package/dist/tools/interactions/get-text.js +45 -0
- package/dist/tools/interactions/get-text.js.map +1 -0
- package/dist/tools/interactions/install-app.d.ts +2 -0
- package/dist/tools/interactions/install-app.js +43 -0
- package/dist/tools/interactions/install-app.js.map +1 -0
- package/dist/tools/interactions/list-apps.d.ts +2 -0
- package/dist/tools/interactions/list-apps.js +59 -0
- package/dist/tools/interactions/list-apps.js.map +1 -0
- package/dist/tools/interactions/screenshot.d.ts +2 -0
- package/dist/tools/interactions/screenshot.js +49 -0
- package/dist/tools/interactions/screenshot.js.map +1 -0
- package/dist/tools/interactions/set-value.d.ts +2 -0
- package/dist/tools/interactions/set-value.js +46 -0
- package/dist/tools/interactions/set-value.js.map +1 -0
- package/dist/tools/interactions/terminate-app.d.ts +2 -0
- package/dist/tools/interactions/terminate-app.js +45 -0
- package/dist/tools/interactions/terminate-app.js.map +1 -0
- package/dist/tools/interactions/uninstall-app.d.ts +2 -0
- package/dist/tools/interactions/uninstall-app.js +45 -0
- package/dist/tools/interactions/uninstall-app.js.map +1 -0
- package/dist/tools/locators.d.ts +1 -0
- package/dist/tools/locators.js +71 -0
- package/dist/tools/locators.js.map +1 -0
- package/dist/tools/scroll-to-element.d.ts +1 -0
- package/dist/tools/scroll-to-element.js +155 -0
- package/dist/tools/scroll-to-element.js.map +1 -0
- package/dist/tools/scroll.d.ts +1 -0
- package/dist/tools/scroll.js +91 -0
- package/dist/tools/scroll.js.map +1 -0
- package/dist/tools/select-device.d.ts +5 -0
- package/dist/tools/select-device.js +222 -0
- package/dist/tools/select-device.js.map +1 -0
- package/dist/tools/select-platform.d.ts +1 -0
- package/dist/tools/select-platform.js +195 -0
- package/dist/tools/select-platform.js.map +1 -0
- package/dist/tools/session-store.d.ts +7 -0
- package/dist/tools/session-store.js +64 -0
- package/dist/tools/session-store.js.map +1 -0
- package/dist/tools/setup-wda.d.ts +1 -0
- package/dist/tools/setup-wda.js +177 -0
- package/dist/tools/setup-wda.js.map +1 -0
- package/docs/CONTRIBUTING.md +424 -0
- package/eslint.config.js +49 -0
- package/examples/android-gmail.md +7 -0
- package/examples/android-todo-app.md +9 -0
- package/jest.config.js +23 -0
- package/package.json +71 -6
- package/scripts/setup-submodules-sparse.sh +53 -0
- package/scripts/update-submodules.sh +14 -0
- package/src/devicemanager/adb-manager.ts +164 -0
- package/src/devicemanager/ios-manager.ts +145 -0
- package/src/index.ts +47 -0
- package/src/locators/element-filter.ts +134 -0
- package/src/locators/generate-all-locators.ts +149 -0
- package/src/locators/locator-generation.ts +657 -0
- package/src/locators/logger.ts +11 -0
- package/src/locators/source-parsing.ts +149 -0
- package/src/resources/caps.json +697 -0
- package/src/resources/index.ts +7 -0
- package/src/resources/java/template.ts +83 -0
- package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- package/src/resources/submodules/appium/CHANGELOG.md +45 -0
- package/src/resources/submodules/appium/CONDUCT.md +48 -0
- package/src/resources/submodules/appium/GOVERNANCE.md +185 -0
- package/src/resources/submodules/appium/IDEAS.md +16 -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 +1437 -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-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 +860 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +514 -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 +83 -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 +275 -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 +166 -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 +89 -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 +671 -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 +239 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +35 -0
- package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +76 -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 +25 -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 +64 -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-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 +866 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +520 -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 +87 -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 +259 -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 +166 -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 +672 -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 +240 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +35 -0
- package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +76 -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 +25 -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 +61 -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/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-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 +866 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +520 -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 +87 -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 +284 -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 +166 -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 +200 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +139 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +188 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +196 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +39 -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 +148 -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 +672 -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 +240 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +35 -0
- package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +76 -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 +25 -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 +61 -0
- package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +30 -0
- package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +1131 -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 +672 -0
- package/src/resources/submodules/appium/packages/base-plugin/README.md +15 -0
- package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +948 -0
- package/src/resources/submodules/appium/packages/docutils/README.md +27 -0
- package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +717 -0
- package/src/resources/submodules/appium/packages/driver-test-support/README.md +112 -0
- package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +168 -0
- package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +33 -0
- package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +603 -0
- package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +42 -0
- package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +545 -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 +683 -0
- package/src/resources/submodules/appium/packages/fake-plugin/README.md +7 -0
- package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +602 -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 +162 -0
- package/src/resources/submodules/appium/packages/logger/README.md +31 -0
- package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +384 -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 +539 -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 +154 -0
- package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +35 -0
- package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +271 -0
- package/src/resources/submodules/appium/packages/schema/README.md +50 -0
- package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +73 -0
- package/src/resources/submodules/appium/packages/storage-plugin/README.md +83 -0
- package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +94 -0
- package/src/resources/submodules/appium/packages/strongbox/README.md +96 -0
- package/src/resources/submodules/appium/packages/support/CHANGELOG.md +1054 -0
- package/src/resources/submodules/appium/packages/support/README.md +161 -0
- package/src/resources/submodules/appium/packages/test-support/CHANGELOG.md +712 -0
- package/src/resources/submodules/appium/packages/test-support/README.md +61 -0
- package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +131 -0
- package/src/resources/submodules/appium/packages/tsconfig/README.md +19 -0
- package/src/resources/submodules/appium/packages/types/CHANGELOG.md +793 -0
- package/src/resources/submodules/appium/packages/types/README.md +21 -0
- package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +435 -0
- package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +53 -0
- package/src/resources/submodules/appium/renovate/README.md +63 -0
- package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +1204 -0
- package/src/resources/submodules/appium-uiautomator2-driver/README.md +2077 -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/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/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 +2594 -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 +98 -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/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/elements-lookup-troubleshooting.md +158 -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 +52 -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 +19 -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/run-prebuilt-wda.md +135 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +178 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/touch-id.md +33 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/troubleshooting.md +191 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +114 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +283 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-slowness.md +231 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +36 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/installation/index.md +137 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +19 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/check-prov-prof.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-new-project.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-single-page.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/no-prov-prof.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/project-prov-prof.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/set-up-bundle.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/untrusted-dev.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-bundle-id.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-config.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-fail.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-succeed.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/index.md +51 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-auto.md +49 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-manual.md +40 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-full-manual.md +50 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-generic-manual.md +49 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/real-device-config.md +100 -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 +75 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +165 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +490 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +27 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +2206 -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 +19 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +29 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +22 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +16 -0
- package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +49 -0
- package/src/resources/submodules/appium-xcuitest-driver/test/assets/TestApp-iphonesimulator.app/Default-568h@2x.png +0 -0
- package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
- package/src/schema.ts +5 -0
- package/src/scripts/simple-index-documentation.ts +93 -0
- package/src/scripts/simple-query-documentation.ts +61 -0
- package/src/server.ts +40 -0
- package/src/tests/README.md +83 -0
- package/src/tests/__mocks__/@appium/support.ts +31 -0
- package/src/tests/generate-all-locators.test.ts +179 -0
- package/src/tests/test-setup-wda.ts +247 -0
- package/src/tools/README.md +170 -0
- package/src/tools/answer-appium.ts +75 -0
- package/src/tools/boot-simulator.ts +87 -0
- package/src/tools/create-session.ts +270 -0
- package/src/tools/delete-session.ts +46 -0
- package/src/tools/documentation/index.ts +97 -0
- package/src/tools/documentation/reasoning-rag.ts +434 -0
- package/src/tools/documentation/sentence-transformers-embeddings.ts +142 -0
- package/src/tools/documentation/simple-pdf-indexer.ts +509 -0
- package/src/tools/documentation/uploads/documents.json +1 -0
- package/src/tools/generate-tests.ts +50 -0
- package/src/tools/index.ts +133 -0
- package/src/tools/install-wda.ts +277 -0
- package/src/tools/interactions/activate-app.ts +46 -0
- package/src/tools/interactions/click.ts +47 -0
- package/src/tools/interactions/double-tap.ts +87 -0
- package/src/tools/interactions/find.ts +58 -0
- package/src/tools/interactions/get-text.ts +47 -0
- package/src/tools/interactions/install-app.ts +45 -0
- package/src/tools/interactions/list-apps.ts +65 -0
- package/src/tools/interactions/screenshot.ts +56 -0
- package/src/tools/interactions/set-value.ts +48 -0
- package/src/tools/interactions/terminate-app.ts +47 -0
- package/src/tools/interactions/uninstall-app.ts +47 -0
- package/src/tools/locators.ts +83 -0
- package/src/tools/scroll-to-element.ts +188 -0
- package/src/tools/scroll.ts +97 -0
- package/src/tools/select-device.ts +298 -0
- package/src/tools/select-platform.ts +243 -0
- package/src/tools/session-store.ts +72 -0
- package/src/tools/setup-wda.ts +218 -0
- package/src/types/appium-ios-device.d.ts +8 -0
- package/src/types/appium-xcuitest-driver.d.ts +5 -0
- package/tsconfig.json +23 -0
- package/index.js +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# appium-xcuitest-driver
|
|
2
|
+
|
|
3
|
+
[](https://npmjs.org/package/appium-xcuitest-driver)
|
|
4
|
+
[](https://npmjs.org/package/appium-xcuitest-driver)
|
|
5
|
+
|
|
6
|
+
[](https://github.com/appium/appium-xcuitest-driver/actions/workflows/publish.js.yml)
|
|
7
|
+
|
|
8
|
+
This is an [Appium](https://appium.github.io/appium) driver for automating iOS applications on iOS,
|
|
9
|
+
iPadOS, and tvOS.
|
|
10
|
+
|
|
11
|
+
> [!IMPORTANT]
|
|
12
|
+
> Only macOS is supported as the host platform, as it requires Xcode and developer tools.
|
|
13
|
+
|
|
14
|
+
> [!IMPORTANT]
|
|
15
|
+
> Since major version *10.0.0*, this driver is only compatible with Appium 3. Use the `appium driver install xcuitest`
|
|
16
|
+
> command to add it to your distribution.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Documentation
|
|
20
|
+
|
|
21
|
+
The [Documentation](https://appium.github.io/appium-xcuitest-driver) is hosted separately at
|
|
22
|
+
[https://appium.github.io/appium-xcuitest-driver](https://appium.github.io/appium-xcuitest-driver)
|
|
23
|
+
|
|
24
|
+
## Contributing & Development
|
|
25
|
+
|
|
26
|
+
Clone this project from GitHub and run:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
To watch changes during the development:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm run watch
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
To run unit/functional tests:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm test # unit
|
|
42
|
+
npm run e2e-test # functional
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
There are also a number of environment variables that can be used when running
|
|
46
|
+
the tests locally. These include:
|
|
47
|
+
|
|
48
|
+
* `REAL_DEVICE` - set to anything truthy, makes the tests use real device capabilities
|
|
49
|
+
* `_FORCE_LOGS` - set to `1` to get the log output, not just spec
|
|
50
|
+
* `PLATFORM_VERSION` - change the version to run the tests against (defaults to `9.3`)
|
|
51
|
+
* `XCCONFIG_FILE` - specify where the xcode config file is for a real device run (if
|
|
52
|
+
blank, and running a real device test, it will search for the first file in
|
|
53
|
+
the root directory of the repo with the extension "xcconfig")
|
|
54
|
+
* `UICATALOG_REAL_DEVICE` - path to the real device build of UICatalog, in case
|
|
55
|
+
the npm installed one is not built for real device
|
package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png
ADDED
|
Binary file
|
|
Binary file
|
package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png
ADDED
|
Binary file
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- navigation
|
|
4
|
+
- toc
|
|
5
|
+
|
|
6
|
+
title: Contributing
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Contributions to this project are welcome! To start off, clone it from GitHub and run:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
To watch changes during development:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm run watch
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
To run unit/functional tests:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run test # unit
|
|
25
|
+
npm run e2e-test # functional
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
To develop documentation:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run install-docs-deps # install the dependencies (Python packages)
|
|
32
|
+
npm run dev:docs # serve the docs locally and watch for changes
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
There are also a number of environment variables that can be used when running
|
|
36
|
+
the tests locally. These include:
|
|
37
|
+
|
|
38
|
+
* `REAL_DEVICE` - set to anything truthy, makes the tests use real device capabilities
|
|
39
|
+
* `_FORCE_LOGS` - set to `1` to get the log output, not just spec
|
|
40
|
+
* `PLATFORM_VERSION` - change the version to run the tests against (defaults to `11.3`)
|
|
41
|
+
* `XCCONFIG_FILE` - specify where the Xcode config file is for a real device run (if
|
|
42
|
+
blank, and running a real device test, it will search for the first file in
|
|
43
|
+
the root directory of the repo with the extension `.xcconfig`)
|
|
44
|
+
* `UICATALOG_REAL_DEVICE` - path to the real device build of UICatalog, in case
|
|
45
|
+
the `npm` installed one is not built for a real device
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
## WebDriverAgent JSONWP Endpoints
|
|
2
|
+
|
|
3
|
+
### Session-less commands
|
|
4
|
+
|
|
5
|
+
| method | endpoint | req params | opt params |
|
|
6
|
+
| ------ | -------------------------------------- | ---------- | ---------- |
|
|
7
|
+
| POST | /wda/homescreen | | |
|
|
8
|
+
| GET | /source | | accessible |
|
|
9
|
+
| GET | /inspector | | |
|
|
10
|
+
| GET | /inspector.js | | |
|
|
11
|
+
| GET | /screenshot | | |
|
|
12
|
+
| POST | /session | desiredCapabilities
|
|
13
|
+
| GET | /status | | |
|
|
14
|
+
| GET | /* | ** | |
|
|
15
|
+
| POST | /* | ** | |
|
|
16
|
+
| PUT | /* | ** | |
|
|
17
|
+
| DELETE | /* | ** | |
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Session commands
|
|
21
|
+
|
|
22
|
+
| method | endpoint | req params | opt params |
|
|
23
|
+
| ------ | -------------------------------------- | ---------- | ---------- |
|
|
24
|
+
| GET | /alert/text | | |
|
|
25
|
+
| POST | /alert/accept | | |
|
|
26
|
+
| POST | /alert/dismiss | | |
|
|
27
|
+
| POST | /wda/deactivateApp | | duration |
|
|
28
|
+
| POST | /timeouts | * | |
|
|
29
|
+
| GET | /source | | accessible |
|
|
30
|
+
| GET | /element/:uuid/enabled | | |
|
|
31
|
+
| GET | /element/:uuid/rect | | |
|
|
32
|
+
| GET | /element/:uuid/attribute/:name | | |
|
|
33
|
+
| GET | /element/:uuid/text | | |
|
|
34
|
+
| GET | /element/:uuid/displayed | | |
|
|
35
|
+
| GET | /wda/element/:uuid/accessible | | |
|
|
36
|
+
| GET | /element/:uuid/name | | |
|
|
37
|
+
| POST | /element/:uuid/value | value | |
|
|
38
|
+
| POST | /element/:uuid/click | | |
|
|
39
|
+
| POST | /element/:uuid/clear | | |
|
|
40
|
+
| POST | /wda/element/:uuid/doubleTap | | |
|
|
41
|
+
| POST | /wda/element/:uuid/touchAndHold | duration | |
|
|
42
|
+
| POST | /wda/element/:uuid/scroll | | name, direction, predicateString, toVisible |
|
|
43
|
+
| POST | /uiaElement/:uuid/value | value | |
|
|
44
|
+
| POST | /wda/element/:uuid/dragfromtoforduration | fromX, fromY, toX, toY, duration | |
|
|
45
|
+
| POST | /wda/tap/:uuid | x, y | |
|
|
46
|
+
| POST | /wda/keys | value | |
|
|
47
|
+
| GET | /window/size | | |
|
|
48
|
+
| POST | /element | using, value | |
|
|
49
|
+
| POST | /elements | using, value | |
|
|
50
|
+
| GET | /wda/uiaElement/:uuid/getVisibleCells | | |
|
|
51
|
+
| POST | /element/:uuid/element | using, value | |
|
|
52
|
+
| POST | /element/:uuid/elements | using, value | |
|
|
53
|
+
| GET | /orientation | | |
|
|
54
|
+
| POST | /orientation | orientation | |
|
|
55
|
+
| GET | /screenshot | | |
|
|
56
|
+
| POST | /wda/touch_id | match | |
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
\* implemented but intentionally not supported
|
|
60
|
+
|
|
61
|
+
** not implemented handlers
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
## Appium iOS JSONWP Endpoints
|
|
2
|
+
|
|
3
|
+
### Session-less commands
|
|
4
|
+
|
|
5
|
+
| method | endpoint | req params | opt params |
|
|
6
|
+
| ------ | ---------------------------------------- | ---------- | ---------- |
|
|
7
|
+
| GET | /status | | |
|
|
8
|
+
| POST | /session | desiredCapabilities | requiredCapabilities |
|
|
9
|
+
| GET | /sessions | | |
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Session commands
|
|
13
|
+
|
|
14
|
+
| method | endpoint | req params | opt params |
|
|
15
|
+
| ------ | ---------------------------------------- | ---------- | ---------- |
|
|
16
|
+
| GET | /:sessionId | | |
|
|
17
|
+
| DELETE | /:sessionId | | |
|
|
18
|
+
| POST | /timeouts | type, ms | |
|
|
19
|
+
| POST | /timeouts/async_script | ms | |
|
|
20
|
+
| POST | /timeouts/implicit_wait | ms | |
|
|
21
|
+
| GET | /window_handle | | |
|
|
22
|
+
| GET | /window_handles | | |
|
|
23
|
+
| GET | /url | | |
|
|
24
|
+
| POST | /url | url | |
|
|
25
|
+
| POST | /forward | none | |
|
|
26
|
+
| POST | /back | none | |
|
|
27
|
+
| POST | /refresh | none | |
|
|
28
|
+
| POST | /execute | script, args | |
|
|
29
|
+
| POST | /execute_async | script, args | |
|
|
30
|
+
| GET | /screenshot | | |
|
|
31
|
+
| POST | /frame | id | |
|
|
32
|
+
| POST | /window | name | |
|
|
33
|
+
| DELETE | /window | | |
|
|
34
|
+
| GET | /window/:windowhandle/size | | |
|
|
35
|
+
| GET | /cookie | | |
|
|
36
|
+
| POST | /cookie | cookie | |
|
|
37
|
+
| DELETE | /cookie | | | | |
|
|
38
|
+
| DELETE | /cookie/:name | | |
|
|
39
|
+
| GET | /source | | |
|
|
40
|
+
| GET | /title | | |
|
|
41
|
+
| POST | /element | using, value | |
|
|
42
|
+
| POST | /elements | using, value | |
|
|
43
|
+
| POST | /element/active | none | |
|
|
44
|
+
| POST | /element/:elementId/element | using, value | |
|
|
45
|
+
| POST | /element/:elementId/elements | using, value | |
|
|
46
|
+
| POST | /element/:elementId/click | none | |
|
|
47
|
+
| POST | /element/:elementId/submit | none | |
|
|
48
|
+
| GET | /element/:elementId/text | none | |
|
|
49
|
+
| POST | /element/:elementId/value | value | |
|
|
50
|
+
| POST | /keys | value | |
|
|
51
|
+
| GET | /element/:elementId/name | | |
|
|
52
|
+
| POST | /element/:elementId/clear | none | |
|
|
53
|
+
| GET | /element/:elementId/selected | | |
|
|
54
|
+
| GET | /element/:elementId/enabled | | |
|
|
55
|
+
| GET | /element/:elementId/attribute/:name | | |
|
|
56
|
+
| GET | /element/:elementId/equals/:otherId | | |
|
|
57
|
+
| GET | /element/:elementId/displayed | | |
|
|
58
|
+
| GET | /element/:elementId/location | | |
|
|
59
|
+
| GET | /element/:elementId/location_in_view | | |
|
|
60
|
+
| GET | /element/:elementId/size | | |
|
|
61
|
+
| GET | /element/:elementId/css/:propertyName | | |
|
|
62
|
+
| GET | /orientation | | |
|
|
63
|
+
| POST | /orientation | orientation | |
|
|
64
|
+
| GET | /alert_text | | |
|
|
65
|
+
| POST | /alert_text | text | |
|
|
66
|
+
| POST | /accept_alert | none | |
|
|
67
|
+
| POST | /dismiss_alert | none | |
|
|
68
|
+
| POST | /click | | button |
|
|
69
|
+
| GET | /location | | |
|
|
70
|
+
| POST | /location | location | |
|
|
71
|
+
| POST | /log | type | |
|
|
72
|
+
| GET | /log/types | | |
|
|
73
|
+
| GET | /context | | |
|
|
74
|
+
| POST | /context | name | |
|
|
75
|
+
| GET | /contexts | | |
|
|
76
|
+
| POST | /receive_async_response | status, value | |
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### Appium-specific commands
|
|
80
|
+
|
|
81
|
+
| method | endpoint | req params | opt params |
|
|
82
|
+
| ------ | ---------------------------------------- | ---------- | ---------- |
|
|
83
|
+
| POST | /appium/device/shake | none | |
|
|
84
|
+
| GET | /appium/device/system_time | | |
|
|
85
|
+
| POST | /appium/device/lock | | seconds |
|
|
86
|
+
| POST | /appium/device/rotate | x, y, radius, rotation, touchCount, duration | element |
|
|
87
|
+
| POST | /appium/device/remove_app | appId or bundleId | |
|
|
88
|
+
| POST | /appium/device/hide_keyboard | | strategy, key, keyCode, keyName |
|
|
89
|
+
| POST | /appium/device/push_file | path, data | |
|
|
90
|
+
| POST | /appium/device/pull_file | path | |
|
|
91
|
+
| POST | /appium/device/pull_folder | path | |
|
|
92
|
+
| POST | /appium/simulator/touch_id | match | |
|
|
93
|
+
| POST | /appium/app/launch | none | |
|
|
94
|
+
| POST | /appium/app/close | none | |
|
|
95
|
+
| POST | /appium/app/background | seconds | |
|
|
96
|
+
| POST | /appium/app/strings | | language, stringFile |
|
|
97
|
+
| POST | /appium/element/:elementId/value | value | |
|
|
98
|
+
| POST | /appium/receive_async_response | response | |
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Attach to a Running WebDriverAgent
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The XCUITest driver provides the __`appium:webDriverAgentUrl`__ capability to attach to a running
|
|
9
|
+
WebDriverAgent (WDA) application. This works for real devices and simulators, but the primary usage
|
|
10
|
+
is for real devices.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
1. Start a WebDriverAgent application on a device
|
|
15
|
+
2. Start an XCUITest driver session with `appium:webDriverAgentUrl` capability
|
|
16
|
+
|
|
17
|
+
Please read [Manage WebDriverAgent by Yourself](./wda-custom-server.md) and
|
|
18
|
+
[Real Device Configuration](../preparation/real-device-config.md) about how to prepare WDA for a
|
|
19
|
+
real device.
|
|
20
|
+
|
|
21
|
+
The `appium:webDriverAgentUrl` value should be the WDA URL: `http://<reachable ip address for the device>:8100`.
|
|
22
|
+
If the environment has port-forward to the connected device, it can be `http://localhost:8100`.
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"platformName": "ios",
|
|
27
|
+
"appium:automationName": "xcuitest",
|
|
28
|
+
"appium:platformVersion": "15.5",
|
|
29
|
+
"appium:udid": "<device udid>",
|
|
30
|
+
"appium:deviceName": "iPhone",
|
|
31
|
+
"appium:webDriverAgentUrl": "http://<reachable ip address for the device>:8100"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This method allows you to manage the WDA process by yourself. The XCUITest driver then simply
|
|
36
|
+
attaches to the WDA process, which may improve the application performance.
|
|
37
|
+
|
|
38
|
+
Some XCUITest driver APIs (for example,
|
|
39
|
+
[mobile: calibrateWebToRealCoordinatesTranslation](../reference/execute-methods.md#mobile-calibratewebtorealcoordinatestranslation))
|
|
40
|
+
might still require the port number of the remote device if it is a real device. Providing the
|
|
41
|
+
`appium:webDriverAgentUrl` capability might not be sufficient to recognize the remote port number,
|
|
42
|
+
in case it is different from the local one. Consider settings the `appium:wdaRemotePort` capability
|
|
43
|
+
in such cases, to supply the driver with the appropriate data.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Audio Capture
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Appium XCUITest driver provides a possibility to record iOS audio stream and save it to a file,
|
|
7
|
+
which could be then retrieved on the client side. Apple does not provide any API to directly
|
|
8
|
+
retrieve the audio stream from a Simulator or a real device, but it is possible to redirect that
|
|
9
|
+
stream to the host machine, where it could be captured.
|
|
10
|
+
|
|
11
|
+
* [`mobile: startAudioRecording`](../reference/execute-methods.md#mobile-startaudiorecording)
|
|
12
|
+
* [`mobile: stopAudioRecording`](../reference//execute-methods.md#mobile-stopaudiorecording)
|
|
13
|
+
|
|
14
|
+
## Server Requirements
|
|
15
|
+
|
|
16
|
+
- The host machine must have [`ffmpeg`](https://www.ffmpeg.org/download.html) installed and added to PATH.
|
|
17
|
+
It can be installed via [`brew`](https://brew.sh/): `brew install ffmpeg`.
|
|
18
|
+
- For macOS 10.15+, applications recording Microphone audio need to be explicitly granted this permission.
|
|
19
|
+
This can be done in the following settings menu:
|
|
20
|
+
|
|
21
|
+
- macOS < 13: _System Preferences -> Security & Privacy -> Privacy -> Microphone_
|
|
22
|
+
- macOS 13+: _System Settings -> Privacy & Security -> Microphone_
|
|
23
|
+
|
|
24
|
+
Ensure that either `ffmpeg` itself or the parent Appium process (e.g. Terminal) is present in that list.
|
|
25
|
+
|
|
26
|
+
- As this is a potentially insecure feature, it must be explicitly allowed on the server side. See
|
|
27
|
+
[the Appium documentation on Security](https://appium.io/docs/en/latest/guides/security/) for more details.
|
|
28
|
+
The feature name is `audio_record`.
|
|
29
|
+
|
|
30
|
+
## Simulator Setup
|
|
31
|
+
|
|
32
|
+
The following steps are necessary to setup iOS Simulator audio capture:
|
|
33
|
+
|
|
34
|
+
* Install [Soundflower](https://github.com/mattingalls/Soundflower/releases)
|
|
35
|
+
* Redirect Simulator audio output to Soundflower: from the main Simulator menu, select
|
|
36
|
+
_I/O -> Audio Output -> Soundflower (2ch)_
|
|
37
|
+
* In terminal, run `ffmpeg -f avfoundation -list_devices true -i ""` to get the identifier of the
|
|
38
|
+
`Soundflower (2ch)` device. This identifier prefixed with `:` will be then used as `audioInput`
|
|
39
|
+
argument to `mobile: startAudioRecording` call
|
|
40
|
+
* Test that your setup works as expected. Run any audio playback in Simulator and execute the
|
|
41
|
+
following command in Terminal, replacing the `-i` argument value with the one you got from the
|
|
42
|
+
previous step:
|
|
43
|
+
```
|
|
44
|
+
ffmpeg -t 5 -f avfoundation -i ":1" -c:a aac -b:a 128k -ac 2 -ar 44100 -y ~/Desktop/out.mp4
|
|
45
|
+
```
|
|
46
|
+
After 5 seconds, a file named `out.mp4` should be created on your desktop, containing the recorded
|
|
47
|
+
audio stream.
|
|
48
|
+
|
|
49
|
+
## Real Device Setup
|
|
50
|
+
|
|
51
|
+
The following steps are necessary to setup iOS Real Device audio capture:
|
|
52
|
+
|
|
53
|
+
* Connect your device to the Mac host with a cable
|
|
54
|
+
* Open the _Audio MIDI Setup_ application
|
|
55
|
+
* Via Finder: _Applications -> Utilities -> Audio MIDI Setup_
|
|
56
|
+
* Via terminal: `open -a /System/Applications/Utilities/Audio\ MIDI\ Setup.app`
|
|
57
|
+
* Find your phone in the list of devices there and click `Enable` next to it
|
|
58
|
+
* In terminal, run `ffmpeg -f avfoundation -list_devices true -i ""` to get the identifier of your
|
|
59
|
+
device in the `AVFoundation audio devices` list. This identifier prefixed with `:` will be then
|
|
60
|
+
used as `audioInput` argument to `mobile: startAudioRecording` call
|
|
61
|
+
* Test that your setup works as expected. Run any audio playback on the device and execute the
|
|
62
|
+
following command in Terminal, replacing the `-i` argument value with the value you got from the
|
|
63
|
+
previous step:
|
|
64
|
+
```
|
|
65
|
+
ffmpeg -t 5 -f avfoundation -i ":1" -c:a aac -b:a 128k -ac 2 -ar 44100 -y ~/Desktop/out.mp4
|
|
66
|
+
```
|
|
67
|
+
After 5 seconds, a file named `out.mp4` should be created on your desktop, containing the recorded
|
|
68
|
+
audio stream.
|
|
69
|
+
|
|
70
|
+
!!! note
|
|
71
|
+
|
|
72
|
+
Apple does not allow phone calls to be redirected this way. You can only record application or system sounds.
|
|
73
|
+
|
|
74
|
+
## Further Reading
|
|
75
|
+
|
|
76
|
+
* <https://github.com/appium/appium-xcuitest-driver/pull/1207>
|
|
77
|
+
* <https://www.macobserver.com/tips/quick-tip/iphone-audio-input-mac/>
|
|
78
|
+
* <http://www.lorisware.com/blog/2012/04/28/recording-iphone-emulator-video-with-sound/>
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Basic Examples of Session Capability Sets
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
This article describes necessary capabilities that must be provided in order
|
|
6
|
+
to implement some common automation testing scenarios.
|
|
7
|
+
It only describes very minimum sets of capabilities required to
|
|
8
|
+
be included. For refined setups more of them might need to be provided. Check the
|
|
9
|
+
[Capabilities](../reference/capabilities.md) article for more details
|
|
10
|
+
on each option available for the fine-tuning of XCUITest driver sessions.
|
|
11
|
+
|
|
12
|
+
### Application File (Real Device)
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"platformName": "iOS",
|
|
17
|
+
"appium:automationName": "XCUITest",
|
|
18
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
19
|
+
"appium:udid": "<Phone_UUID>",
|
|
20
|
+
"appium:app": "/path/to/local/package.ipa"
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`appium:app` could also be a remote app or an archive:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
"appium:app": "https://example.com/package.ipa"
|
|
28
|
+
"appium:app": "https://example.com/package.zip"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`appium:udid` could also be set to `auto` in order to select the first matched device
|
|
32
|
+
connected to the host (or a single one if only one is connected):
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
"appium:udid": "auto"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Application File (Simulator)
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"platformName": "iOS",
|
|
43
|
+
"appium:automationName": "XCUITest",
|
|
44
|
+
"appium:deviceName": "<Simulator_Name>",
|
|
45
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
46
|
+
"appium:app": "/path/to/local/package.app"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`appium:app` could also be an archive:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
"appium:app": "https://example.com/package.zip"
|
|
54
|
+
"appium:app": "/path/to/local/package.zip"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Safari (Real Device)
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"platformName": "iOS",
|
|
62
|
+
"appium:automationName": "XCUITest",
|
|
63
|
+
"browserName": "Safari",
|
|
64
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
65
|
+
"appium:udid": "<Phone_UUID>"
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
You may also provide `appium:safariInitialUrl` capability value to navigate
|
|
70
|
+
to the desired page during the session startup:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
"appium:safariInitialUrl": "https://server.com/page"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Safari (Simulator)
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"platformName": "iOS",
|
|
81
|
+
"appium:automationName": "XCUITest",
|
|
82
|
+
"browserName": "Safari",
|
|
83
|
+
"appium:deviceName": "<Simulator_Name>",
|
|
84
|
+
"appium:platformVersion": "<iOS_Version>"
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Pre-Installed App (Real Device)
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"platformName": "iOS",
|
|
93
|
+
"appium:automationName": "XCUITest",
|
|
94
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
95
|
+
"appium:udid": "<Phone_UUID>",
|
|
96
|
+
"appium:bundleId": "<Bundle_ID_Of_Preinstalled_App>",
|
|
97
|
+
"appium:noReset": true
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The `appium:noReset` capability is set to `true` in order to tell the driver
|
|
102
|
+
the app identified by `appium:bundleId` is already preinstalled and must not be reset.
|
|
103
|
+
|
|
104
|
+
### Pre-Installed App (Simulator)
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"platformName": "iOS",
|
|
109
|
+
"appium:automationName": "XCUITest",
|
|
110
|
+
"appium:deviceName": "<Simulator_Name>",
|
|
111
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
112
|
+
"appium:bundleId": "<Bundle_ID_Of_Preinstalled_App>",
|
|
113
|
+
"appium:noReset": true
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Deeplink (Real Device running iOS 17+)
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"platformName": "iOS",
|
|
122
|
+
"appium:automationName": "XCUITest",
|
|
123
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
124
|
+
"appium:udid": "<Phone_UUID>",
|
|
125
|
+
"appium:initialDeeplinkUrl": "<Deeplink_Url>"
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Deeplink (Simulator running iOS 17+)
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"platformName": "iOS",
|
|
134
|
+
"appium:automationName": "XCUITest",
|
|
135
|
+
"appium:deviceName": "<Simulator_Name>",
|
|
136
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
137
|
+
"appium:initialDeeplinkUrl": "<Deeplink_Url>"
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Custom Launch (Real Device)
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"platformName": "iOS",
|
|
146
|
+
"appium:automationName": "XCUITest",
|
|
147
|
+
"appium:platformVersion": "<iOS_Version>",
|
|
148
|
+
"appium:udid": "<Phone_UUID>",
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
This will start your test at the Home screen.
|
|
153
|
+
Afterwards you may use any of the application management
|
|
154
|
+
methods, like [mobile: installApp](../reference//execute-methods.md#mobile-installapp)
|
|
155
|
+
or [mobile: activateApp](../reference//execute-methods.md#mobile-activateapp)
|
|
156
|
+
to manage the life cycle of your app or switch between contexts to
|
|
157
|
+
manage web pages. Check the full list of
|
|
158
|
+
[mobile: execute methods](../reference/execute-methods.md) for more details.
|
|
159
|
+
|
|
160
|
+
### Custom Launch (Simulator)
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"platformName": "iOS",
|
|
165
|
+
"appium:automationName": "XCUITest",
|
|
166
|
+
"appium:deviceName": "<Simulator_Name>",
|
|
167
|
+
"appium:platformVersion": "<iOS_Version>"
|
|
168
|
+
}
|
|
169
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Continuous Integration
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Setting up the XCUITest driver in an automated environment brings a few challenges with it. Any scenario
|
|
6
|
+
where user interaction is required must be automated or avoided altogether. For real device setup,
|
|
7
|
+
you should first follow the [Real Device Configuration tutorial](../preparation/real-device-config.md).
|
|
8
|
+
|
|
9
|
+
### Keychains
|
|
10
|
+
|
|
11
|
+
One common scenario is a prompt asking for a keychain to be unlocked in order to sign the WebDriverAgent.
|
|
12
|
+
There are multiple possible solutions for this:
|
|
13
|
+
|
|
14
|
+
1. Keychains can be set to have no timeout and be unlocked manually once. This can be done using the
|
|
15
|
+
keychain access application. Sometimes keychains still lock themselves though and this approach
|
|
16
|
+
is not recommended.
|
|
17
|
+
2. [It is possible to create a second keychain](../guides/troubleshooting.md#real-device-security-settings),
|
|
18
|
+
which just stores the required certificate to sign the WebDriverAgent. The issue with this
|
|
19
|
+
approach is that Codesign wants to unlock all listed keychains regardless of the specified
|
|
20
|
+
keychain, thus leading to a password prompt. This can be avoided by setting the default keychain
|
|
21
|
+
and basically hiding the login keychain at the start of the build.
|
|
22
|
+
[See this Stackoverflow article](https://stackoverflow.com/questions/16550594/jenkins-xcode-build-works-codesign-fails)
|
|
23
|
+
for how to utilize this approach. It is impractical when running other build jobs simultaneously.
|
|
24
|
+
3. Stick with the existing keychains as in approach 1, but explicitly call unlock keychain before
|
|
25
|
+
**each** build. This can be done using [fastlane unlock_keychain](https://docs.fastlane.tools/actions/unlock_keychain/)
|
|
26
|
+
or by using [security unlock-keychain](https://www.unix.com/man-page/osx/1/security/) directly.
|
|
27
|
+
The password can be saved as a CI variable/secret or on the machine itself.
|
|
28
|
+
|
|
29
|
+
It is recommended to go with the second or third option. The third one is the easiest and most
|
|
30
|
+
reliable one to set up, at the cost of having to set the keychain password as an environment variable.
|
|
31
|
+
|
|
32
|
+
### Xcode
|
|
33
|
+
|
|
34
|
+
When setting up a new machine as a CI server, you are probably going to install Xcode, without
|
|
35
|
+
executing it once, because you are not going to use it for development. Make sure to start Xcode at
|
|
36
|
+
least once and do the initial set up and install the suggested extensions.
|
|
37
|
+
|
|
38
|
+
### Linking Apple Account
|
|
39
|
+
|
|
40
|
+
This only applies for real device set up. Make sure to link your 'Apple Developer Account' in the
|
|
41
|
+
machine's system wide "Account Panel" when using the "Basic Automatic Configuration" described
|
|
42
|
+
[here](../preparation/prov-profile-basic-auto.md).
|
|
43
|
+
|
|
44
|
+
### Troubleshooting
|
|
45
|
+
|
|
46
|
+
Enable the `appium:showXcodeLog` [capability](../reference/capabilities.md#webdriveragent) and
|
|
47
|
+
check the Appium server output.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Get/Set Clipboard
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Working with the clipboard on real devices has an Apple security limitation, where the
|
|
9
|
+
WebDriverAgentRunner application must be in foreground in order for the action to work. Otherwise
|
|
10
|
+
an empty string is always returned, or it could raise an exception like
|
|
11
|
+
[this issue](https://github.com/appium/appium/issues/18730).
|
|
12
|
+
|
|
13
|
+
Consider using [`mobile: activateApp`](../reference/execute-methods.md/#mobile-activateapp)
|
|
14
|
+
and [`mobile: backgroundApp`](../reference/execute-methods.md/#mobile-backgroundapp) to change the
|
|
15
|
+
foreground application.
|
|
16
|
+
|
|
17
|
+
## Get Clipboard
|
|
18
|
+
|
|
19
|
+
Applies to iOS 13+ real devices. You can also use
|
|
20
|
+
[`mobile: getPasteboard`](../reference/execute-methods.md#mobile-getpasteboard) for simulators.
|
|
21
|
+
|
|
22
|
+
```ruby
|
|
23
|
+
# Ruby
|
|
24
|
+
|
|
25
|
+
# Bring the WebDriverAgent foreground. The bundle id depends on configuration such as "appium:updatedWDABundleId" for real devices.
|
|
26
|
+
driver.execute_script 'mobile: activateApp', {bundleId: 'com.facebook.WebDriverAgentRunner.xctrunner'}
|
|
27
|
+
# Get the clipboard content
|
|
28
|
+
driver.get_clipboard
|
|
29
|
+
# Go back to the application under test
|
|
30
|
+
driver.execute_script 'mobile: activateApp', {bundleId: '<bundle id of the test app>'}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Set Clipboard
|
|
34
|
+
|
|
35
|
+
Applies to iOS 15+ real devices. You can also use
|
|
36
|
+
[`mobile: setPasteboard`](../reference/execute-methods.md#mobile-setpasteboard) for simulators.
|
|
37
|
+
|
|
38
|
+
```ruby
|
|
39
|
+
# Ruby
|
|
40
|
+
|
|
41
|
+
# Bring the WebDriverAgent foreground. The bundle id depends on configuration such as "appium:updatedWDABundleId" for real devices.
|
|
42
|
+
driver.execute_script 'mobile: activateApp', {bundleId: 'com.facebook.WebDriverAgentRunner.xctrunner'}
|
|
43
|
+
# Set the clipboard content
|
|
44
|
+
driver.set_clipboard(content: 'happy testing')
|
|
45
|
+
# Go back to the application under test
|
|
46
|
+
driver.execute_script 'mobile: activateApp', {bundleId: '<bundle id of the test app>'}
|
|
47
|
+
```
|