appium-mcp 0.0.1 → 1.1.5
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 +43 -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 +114 -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-page-source.d.ts +2 -0
- package/dist/tools/interactions/get-page-source.js +48 -0
- package/dist/tools/interactions/get-page-source.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 +171 -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 +135 -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-page-source.ts +52 -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,72 @@
|
|
|
1
|
+
## Low-Level Insights on Android Input Events
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### What Are Input Events
|
|
5
|
+
|
|
6
|
+
Android OS uses events concept to handle signals received from different input devices.
|
|
7
|
+
It supports a wide range of different devices, such as touch screen, light pen, mouse, keyboard,
|
|
8
|
+
but most of them are using [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent) or [KeyEvent](https://developer.android.com/reference/android/view/KeyEvent) APIs, which are derived from the base [InputEvent](https://developer.android.com/reference/android/view/InputEvent) class. These APIs are quite flexible and support a wide range of different settings.
|
|
9
|
+
We are particularly interested in the part of these APIs, which are responsible for touch and
|
|
10
|
+
keyboard events generation/emulation.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### How Input Events Are Working
|
|
14
|
+
|
|
15
|
+
An event is an object, which is generated in response to a signal from an input device.
|
|
16
|
+
These objects are then delivered to the corresponding kernel subsystem, which processes them
|
|
17
|
+
and notifies all listening processes about taps, key presses, swipes, etc.
|
|
18
|
+
This means that in order to emulate a signal generated by
|
|
19
|
+
an external device, such as touch screen, it is necessary to just send event objects with
|
|
20
|
+
the same properties and in the same sequence as they would be generated by a real device.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Lets Simulate a Single Tap
|
|
24
|
+
|
|
25
|
+
Each input device has a set of actions whose property ranges and sequences are already predefined
|
|
26
|
+
in the operating system. These actions we call "tap", "swipe" or "double tap", etc. The properties
|
|
27
|
+
of each action could be found either in the Android documentation or in the OS source code.
|
|
28
|
+
In order to perform events sequence, which is recognized as single tap, it is necessary to generate
|
|
29
|
+
the following motion events:
|
|
30
|
+
- `ACTION_POINTER_DOWN`
|
|
31
|
+
- wait 125ms (525ms or longer wait will synthesize a long tap action instead)
|
|
32
|
+
- `ACTION_POINTER_UP`. The `downTime` property should be set to the same timestamp as for `ACTION_POINTER_DOWN`
|
|
33
|
+
|
|
34
|
+
It is also important, that coordinates and other properties of both the starting and the closing event should be equal except of the `eventTime` one, which is always equal to the current system timestamp in milliseconds (`SystemClock.uptimeMillis()`).
|
|
35
|
+
The `MotionEvent` object itself could be created via [obtain](https://developer.android.com/reference/android/view/MotionEvent#obtain(long,%20long,%20int,%20float,%20float,%20int)) API, where parameters are the corresponding event properties.
|
|
36
|
+
|
|
37
|
+
After events are created they must be passed to the system for execution.
|
|
38
|
+
Such action is not secure, so it is only possible in instrumented tests via [injectInputEvent](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/IUiAutomationConnection.aidl) method of `IUiAutomationConnection` interface.
|
|
39
|
+
This is a very low-level method and it can only be accessed via reflection in automated tests.
|
|
40
|
+
Normally, UiAutomator APIs have wrappers over it (like `touchDown`, `touchMove`, etc.), that already simulate the stuff described above.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### How About More Complicated Actions
|
|
44
|
+
|
|
45
|
+
In theory it is possible to emulate any input action using a generated events sequence.
|
|
46
|
+
Although, some actions, like multi-finger swipe,
|
|
47
|
+
are really complicated and require a lot of events to be generated
|
|
48
|
+
with correct properties and timings. The OS simply ignores given events if they don't follow
|
|
49
|
+
internal action requirements. There is also a little assistance from UiAutomator framework,
|
|
50
|
+
because Google only has wrappers for a limited set of simple actions, like `tap`, `drag` or `swipe`.
|
|
51
|
+
So, in order to generate two-finger symmetric swipe we need to supply the following events chain:
|
|
52
|
+
- `ACTION_POINTER_DOWN` (finger1)
|
|
53
|
+
- `ACTION_POINTER_DOWN` (finger2)
|
|
54
|
+
- start a loop, that generates `ACTION_POINTER_MOVE` event each `20ms` for both `finger1` and `finger2` until `ACTION_POINTER_UP` is performed. The `downTime` should be set to the same timestamp as for the corresponding `ACTION_POINTER_DOWN`. The coordinates of each move event should be points belonging to the path between the corresponding start and end point coordinates normalized by the current timestamp (x0 + sqrt(sqr(x0) + sqr(x1))) * k, y0 + sqrt(sqr(y0) + sqr(y1))) * k).
|
|
55
|
+
- `ACTION_POINTER_UP` (finger1) The `downTime` property should be set to the same timestamp as for the corresponding `ACTION_POINTER_DOWN`
|
|
56
|
+
- `ACTION_POINTER_UP` (finger2) The `downTime` property should be set to the same timestamp as for the corresponding `ACTION_POINTER_DOWN`
|
|
57
|
+
|
|
58
|
+
Google uses 5ms as interval duration between move events in UiAutomator code,
|
|
59
|
+
but according to our observations this value is too little,
|
|
60
|
+
which causes noticeable delays in actions execution.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Further Reading
|
|
64
|
+
|
|
65
|
+
Unfortunately, there is no so much detailed information on this topic. The only reliable source
|
|
66
|
+
of the information are Android OS sources themselves. Consider visiting the following resources:
|
|
67
|
+
|
|
68
|
+
- https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewConfiguration.java
|
|
69
|
+
- https://android.googlesource.com/platform/frameworks/uiautomator/+/refs/heads/master
|
|
70
|
+
- https://github.com/appium/appium-uiautomator2-server/tree/master/app/src/main/java/io/appium/uiautomator2/utils/w3c
|
|
71
|
+
- https://github.com/appium/appium-uiautomator2-server/tree/master/app/src/test/java/io/appium/uiautomator2/utils/w3c
|
|
72
|
+
- https://github.com/appium/appium-espresso-driver/tree/master/espresso-server/library/src/main/java/io/appium/espressoserver/lib/helpers/w3c
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
## How To Troubleshoot Activities Startup
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Capabilities
|
|
5
|
+
|
|
6
|
+
> The Activity class is a crucial component of an Android app, and the way activities are launched and put together is a fundamental part of the platform's application model. Unlike programming paradigms in which apps are launched with a main() method, the Android system initiates code in an Activity instance by invoking specific callback methods that correspond to specific stages of its lifecycle.
|
|
7
|
+
> © [Android Developer Documentation](https://developer.android.com/guide/components/activities/intro-activities)
|
|
8
|
+
|
|
9
|
+
Appium needs to know package and activity names in order to properly initialize the application under test. This information is expected to be provided in driver capabilities and consists of the following keys:
|
|
10
|
+
|
|
11
|
+
- `appActivity`: The name of the main application activity
|
|
12
|
+
- `appPackage`: The identifier of the application package
|
|
13
|
+
- `appWaitActivity`: The name of the application activity to wait for/which starts the first
|
|
14
|
+
- `appWaitPackage`: The id of the application package to wait for/which starts the first
|
|
15
|
+
- `appWaitDuration`: The maximum duration to wait until the `appWaitActivity` is focused in milliseconds (20000 by default)
|
|
16
|
+
- `appWaitForLaunch`: Whether to wait until Activity Manager returns the control to the calling process. By default the driver always waits until `appWaitDuration` is expired. Setting this capability to `false` effectively cancels this wait and unblocks the server loop as soon as `am` successfully triggers the command to start the activity.
|
|
17
|
+
|
|
18
|
+
All these capabilities are optional. If they are not set explicitly then Appium tries to auto detect them by reading their values from the APK manifest. Although, if the application under test is supposed to be already installed on the device (`noReset=true`) then at least `appActivity` and `appPackage` options are required to be set, since no package manifest is available in such case. If you don't set `appWaitPackage` and `appWaitActivity` explicitly then these are getting assigned to `appPackage`/`appActivity` values automatically. For more details check on the implementation of `packageAndLaunchActivityFromManifest` method in the [appium-adb](https://github.com/appium/appium-adb/blob/master/lib/tools/android-manifest.js) package.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### How Appium Starts Activities
|
|
22
|
+
|
|
23
|
+
Activities are started by [Call activity manager `am`](https://developer.android.com/studio/command-line/adb#am). Appium tries to start the `appPackage`/`appActivity` combination using `am start` and then waits until the `appWaitPackage`/`appWaitActivity` is focused or the `appWaitDuration` timeout expires. The currently focused activity name is parsed from `adb shell dumpsys window windows` command output (`mFocusedApp` or `mCurrentFocus` entries). For more details check on the implementation of `startApp`, and `getFocusedPackageAndActivity` methods in the [appium-adb](https://github.com/appium/appium-adb/blob/master/lib/tools/apk-utils.js) package.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Possible Problems And Solutions
|
|
27
|
+
|
|
28
|
+
#### java.lang.SecurityException: Permission Denial: starting Intent
|
|
29
|
+
|
|
30
|
+
The full error description usually looks like `'java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.mypackage/.myactivity.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } } from null (pid=11366, uid=2000) not exported from uid 10191`. Such error might be the indication of the fact that the combination of application package and activity name, which has been passed to Appium as `appPackage`/`appActivity` (or auto detected implicitly), is not the correct one to start the application under test. As a solution, it is necessary to check the correct values with the application developer and test them manually first by executing: `adb shell am start -W -n com.myfixedpackage/.myfixedactivity.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000`. If this commands succeeds manually and starts the necessary application on the device then it will work for Appium as well.
|
|
31
|
+
|
|
32
|
+
Some devices might require customization of the security configuration in the developer options, or security preferences. For example, Realme devices require [_Disable Permission Monitoring_ and a couple of flags in the developer options](https://github.com/appium/appium/issues/13802#issuecomment-702789411) to avoid the _Permission Denial_ error.
|
|
33
|
+
|
|
34
|
+
#### com.myactivity or com.myapp.com.myactivity never started
|
|
35
|
+
|
|
36
|
+
This exception usually indicates, that the first application activity is not the same package/activity, as it is set (or auto detected) by `appWaitPackage`/`appWaitActivity`. Such error normally happens in applications having multiple activities. In order to resolve the problem one should check with application developer regarding which activity/package is the very first one that appears on application startup. The currently focused activity name might be verified using the `adb shell dumpsys window windows` command mentioned above. Also, Appium allows to use wildcards while setting `appWaitActivity` value. This might be particularly useful if the activity name is generated dynamically or it is not the same all the time. For example `com.mycomany.*` will match any of `com.mycomany.foo`, `com.mycomany.bar`.
|
|
37
|
+
|
|
38
|
+
#### Command '…' timed out after X ms
|
|
39
|
+
|
|
40
|
+
If you've double checked that activity names are correct, but the startup still times out, then try to increase the value of `appWaitDuration` capability. Normally, the default 20 seconds is enough for the most of applications, however, some bigger apps might require more time to start and show the first activity. Please, don't create such apps.
|
|
41
|
+
|
|
42
|
+
There might be also situations where an activity does not return the control to the calling process at all, so `am start` call blocks forever independently of the value of `appWaitDuration`, thus causing the timeout. In such case setting `appWaitForLaunch` to `false` might help to resolve the issue. Although, by choosing this option, the driver cannot make sure the activity has fully started, so then it is up to the client code to verify the initial UI state is the one that is expected.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
#### java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException
|
|
46
|
+
|
|
47
|
+
`firebaseinstallations.googleapis.com` sends the apk's certificate information as the header `X-Android-Cert` in its initialization step. Appium UiAutomator2 driver resigns the application under test with the default Appium debug signature. It causes an exception, `java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException`, when the application under test starts. To avoid the exception, the session must have `noSign: true` capability to avoid re-signing. [Unblocking Firebase Network Traffic in Modified Android Applications](https://www.thecobraden.com/posts/unblocking_firebase_ids/) explains the cause more.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
## How To Test Android App Bundle
|
|
2
|
+
|
|
3
|
+
Google has released the [Android App Bundle](https://developer.android.com/platform/technology/app-bundle/) feature.
|
|
4
|
+
An `.aab` file is generated by the feature, which we are supposed to upload to the Google Play Store. We can manage the `.aab` file via CLI using the official [bundletool](https://developer.android.com/studio/command-line/bundletool) which is available from [bundletool](https://github.com/google/bundletool). [The guide](https://developer.android.com/guide/app-bundle/) also help us to understand the feature.
|
|
5
|
+
|
|
6
|
+
We can get distributed apk files from the `.aab` file via the CLI. Using the generated files, we can test against the release module. Since Appium 1.9.2, you can Appium tests against an `.apks` file using UiAutomator2 driver. [1](https://github.com/appium/appium-adb/pull/367) and [2](https://github.com/appium/appium-base-driver/pull/271) are PRs for the feature.
|
|
7
|
+
|
|
8
|
+
## How to run tests
|
|
9
|
+
|
|
10
|
+
1. Export `bundletool.jar` in your path
|
|
11
|
+
- Appium looks for `bundletool.jar` in your local environemnt. Make sure you can find the path with `which 'bundletool.jar'`. If you can't find it, please set the path correctly.
|
|
12
|
+
- Please make sure the bundletool version is above 1.6.0
|
|
13
|
+
2. Generate the `.apks` file from the `.aab` file
|
|
14
|
+
- The `.aab` is available over Android Studio 3.2
|
|
15
|
+
- You must sign correctly when you generate `.apks` from `.aab`. This step requires data signing.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
$ java -jar apks/bundletool.jar build-apks \
|
|
19
|
+
--bundle apks/release/release/app.aab \ # A generated aab file
|
|
20
|
+
--output apks/AppBundleSample.apks \ # An apks file you'd like to out put to
|
|
21
|
+
--ks apks/sign \ # Signing keystore
|
|
22
|
+
--ks-key-alias key0 \ # Alias of the keytstore
|
|
23
|
+
--ks-pass pass:kazucocoa \ # Password of the keystore
|
|
24
|
+
--overwrite # Overwrite any existing apks files
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
3. Use the path to the `.apks` file as your `app` capability.
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
capabilities = {
|
|
31
|
+
platformName: :android,
|
|
32
|
+
automationName: 'uiautomator2',
|
|
33
|
+
platformVersion: '8.1',
|
|
34
|
+
deviceName: 'Android Emulator',
|
|
35
|
+
app: "path/to/your.apks", # This line is important
|
|
36
|
+
fullReset: true,
|
|
37
|
+
...
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
core = ::Appium::Core.for capabilities: capabilities
|
|
41
|
+
driver = core.start_driver
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
You can find another way to get test APKs in https://developer.android.com/guide/app-bundle/
|
|
45
|
+
|
|
46
|
+
You could also install `.apks` bundles via Install App command like below.
|
|
47
|
+
|
|
48
|
+
```ruby
|
|
49
|
+
# Ruby
|
|
50
|
+
driver.execute_script 'mobile: installApp', {appPath: 'path/to/your.apks'}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Tips
|
|
54
|
+
### Make `bundletool.jar` executable
|
|
55
|
+
|
|
56
|
+
Make sure the bundletool is executable.
|
|
57
|
+
`$ chmod 655 /path/to/bundletool.jar` can make it executable, for example.
|
|
58
|
+
|
|
59
|
+
### Test with different languages
|
|
60
|
+
|
|
61
|
+
Set `fullReset: true` if you would like to test against the app using different languages' resources.
|
|
62
|
+
|
|
63
|
+
Appium only installs the minimum set of resources, following the behavior of the appbundle feature. For example, if a device's language is set of English, Appium will only install the `en` resource. The installed apk will have no Japanese resources.
|
|
64
|
+
|
|
65
|
+
In orfer to force re-install with a different set of language resources, specify `fullReset: true`
|
|
66
|
+
|
|
67
|
+
## An example project
|
|
68
|
+
|
|
69
|
+
- https://github.com/KazuCocoa/AppBundleSample
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
## Automating Mobile Gestures With UiAutomator2 Backend
|
|
2
|
+
|
|
3
|
+
Touch actions are the most advanced and the most complicated way to
|
|
4
|
+
implement any Android gesture. Although, there is a couple of basic
|
|
5
|
+
gestures, like swipe, fling or pinch, which are commonly used in
|
|
6
|
+
Android applications and for which it makes sense to have shortcuts,
|
|
7
|
+
where only high-level options are configurable.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### mobile: longClickGesture
|
|
11
|
+
|
|
12
|
+
This gesture performs long click action on the given element/coordinates.
|
|
13
|
+
Available since Appium v1.19
|
|
14
|
+
|
|
15
|
+
#### Supported arguments
|
|
16
|
+
|
|
17
|
+
* _elementId_: The id of the element to be clicked.
|
|
18
|
+
If the element is missing then both click offset coordinates must be provided.
|
|
19
|
+
If both the element id and offset are provided then the coordinates
|
|
20
|
+
are parsed as relative offsets from the top left corner of the element.
|
|
21
|
+
* _x_: The x-offset coordinate
|
|
22
|
+
* _y_: The y-offset coordinate
|
|
23
|
+
* _duration_: Click duration in milliseconds. `500` by default. The value must not be negative
|
|
24
|
+
* _locator_: The map containing [strategy and selector](../README.md#element-location) items to make it possible
|
|
25
|
+
to click dynamic elements.
|
|
26
|
+
|
|
27
|
+
#### Usage examples
|
|
28
|
+
|
|
29
|
+
```java
|
|
30
|
+
// Java
|
|
31
|
+
((JavascriptExecutor) driver).executeScript("mobile: longClickGesture", ImmutableMap.of(
|
|
32
|
+
"elementId", ((RemoteWebElement) element).getId()
|
|
33
|
+
));
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# Python
|
|
38
|
+
driver.execute_script('mobile: longClickGesture', {'x': 100, 'y': 100, 'duration': 1000})
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### mobile: doubleClickGesture
|
|
43
|
+
|
|
44
|
+
This gesture performs double click action on the given element/coordinates.
|
|
45
|
+
Available since Appium v1.21
|
|
46
|
+
|
|
47
|
+
#### Supported arguments
|
|
48
|
+
|
|
49
|
+
* _elementId_: The id of the element to be clicked.
|
|
50
|
+
If the element is missing then both click offset coordinates must be provided.
|
|
51
|
+
If both the element id and offset are provided then the coordinates
|
|
52
|
+
are parsed as relative offsets from the top left corner of the element.
|
|
53
|
+
* _x_: The x-offset coordinate
|
|
54
|
+
* _y_: The y-offset coordinate
|
|
55
|
+
* _locator_: The map containing [strategy and selector](../README.md#element-location) items to make it possible
|
|
56
|
+
to click dynamic elements.
|
|
57
|
+
|
|
58
|
+
#### Usage examples
|
|
59
|
+
|
|
60
|
+
```java
|
|
61
|
+
// Java
|
|
62
|
+
((JavascriptExecutor) driver).executeScript("mobile: doubleClickGesture", ImmutableMap.of(
|
|
63
|
+
"elementId", ((RemoteWebElement) element).getId()
|
|
64
|
+
));
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
# Python
|
|
69
|
+
driver.execute_script('mobile: doubleClickGesture', {'x': 100, 'y': 100})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### mobile: clickGesture
|
|
74
|
+
|
|
75
|
+
This gesture performs click action on the given element/coordinates.
|
|
76
|
+
Available since Appium UiAutomator2 driver 1.71.0. Usage of this gesture is recommended
|
|
77
|
+
as a possible workaround for cases where the "native" tap call fails,
|
|
78
|
+
even though tap coordinates seem correct. This issue is related to the fact
|
|
79
|
+
these calls use the legacy UIAutomator-based calls while this extension
|
|
80
|
+
is based on the same foundation as W3C does.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
#### Supported arguments
|
|
84
|
+
|
|
85
|
+
* _elementId_: The id of the element to be clicked.
|
|
86
|
+
If the element is missing then both click offset coordinates must be provided.
|
|
87
|
+
If both the element id and offset are provided then the coordinates
|
|
88
|
+
are parsed as relative offsets from the top left corner of the element.
|
|
89
|
+
* _x_: The x-offset coordinate
|
|
90
|
+
* _y_: The y-offset coordinate
|
|
91
|
+
* _locator_: The map containing [strategy and selector](../README.md#element-location) items to make it possible
|
|
92
|
+
to click dynamic elements.
|
|
93
|
+
|
|
94
|
+
#### Usage examples
|
|
95
|
+
|
|
96
|
+
```java
|
|
97
|
+
// Java
|
|
98
|
+
driver.executeScript("mobile: clickGesture", ImmutableMap.of(
|
|
99
|
+
"elementId", ((RemoteWebElement) element).getId()
|
|
100
|
+
));
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
# Python
|
|
105
|
+
driver.execute_script('mobile: clickGesture', {'x': 100, 'y': 100})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```javascript
|
|
109
|
+
// Javascript - @wdio
|
|
110
|
+
await driver.executeScript('mobile: clickGesture', [{x: 100, y: 100}]);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### mobile: dragGesture
|
|
114
|
+
|
|
115
|
+
This gesture performs drag action from the given element/coordinates to the given point.
|
|
116
|
+
Available since Appium v1.19
|
|
117
|
+
|
|
118
|
+
#### Supported arguments
|
|
119
|
+
|
|
120
|
+
* _elementId_: The id of the element to be dragged.
|
|
121
|
+
If the element id is missing then both start coordinates must be provided.
|
|
122
|
+
If both the element id and the start coordinates are provided then these
|
|
123
|
+
coordinates are considered as offsets from the top left element corner.
|
|
124
|
+
* _startX_: The x-start coordinate
|
|
125
|
+
* _startY_: The y-start coordinate
|
|
126
|
+
* _endX_: The x-end coordinate. Mandatory argument
|
|
127
|
+
* _endY_: The y-end coordinate. Mandatory argument
|
|
128
|
+
* _speed_: The speed at which to perform this gesture in pixels per second.
|
|
129
|
+
The value must not be negative. The default value is `2500 * displayDensity`
|
|
130
|
+
|
|
131
|
+
#### Usage examples
|
|
132
|
+
|
|
133
|
+
```java
|
|
134
|
+
// Java
|
|
135
|
+
((JavascriptExecutor) driver).executeScript("mobile: dragGesture", ImmutableMap.of(
|
|
136
|
+
"elementId", ((RemoteWebElement) element).getId(),
|
|
137
|
+
"endX", 100,
|
|
138
|
+
"endY", 100
|
|
139
|
+
));
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
### mobile: flingGesture
|
|
144
|
+
|
|
145
|
+
This gesture performs fling gesture on the given element/area.
|
|
146
|
+
Available since Appium v1.19
|
|
147
|
+
|
|
148
|
+
#### Supported arguments
|
|
149
|
+
|
|
150
|
+
* _elementId_: The id of the element to be flinged.
|
|
151
|
+
If the element id is missing then fling bounding area must be provided.
|
|
152
|
+
If both the element id and the fling bounding area are provided then this
|
|
153
|
+
area is effectively ignored.
|
|
154
|
+
* _left_: The left coordinate of the fling bounding area
|
|
155
|
+
* _top_: The top coordinate of the fling bounding area
|
|
156
|
+
* _width_: The width of the fling bounding area
|
|
157
|
+
* _height_: The height of the fling bounding area
|
|
158
|
+
* _direction_: Direction of the fling. Mandatory value.
|
|
159
|
+
Acceptable values are: `up`, `down`, `left` and `right` (case insensitive)
|
|
160
|
+
* _speed_: The speed at which to perform this
|
|
161
|
+
gesture in pixels per second. The value must be greater than the minimum fling
|
|
162
|
+
velocity for the given view (50 by default). The default value is `7500 * displayDensity`
|
|
163
|
+
|
|
164
|
+
#### Returned value
|
|
165
|
+
|
|
166
|
+
The returned value is a boolean one and equals to `true` if the object can still scroll in the given direction
|
|
167
|
+
|
|
168
|
+
#### Usage examples
|
|
169
|
+
|
|
170
|
+
```java
|
|
171
|
+
// Java
|
|
172
|
+
boolean canScrollMore = (Boolean) ((JavascriptExecutor) driver).executeScript("mobile: flingGesture", ImmutableMap.of(
|
|
173
|
+
"elementId", ((RemoteWebElement) element).getId(),
|
|
174
|
+
"direction", "down",
|
|
175
|
+
"speed", 500
|
|
176
|
+
));
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
```javascript
|
|
180
|
+
// Javascript - @wdio
|
|
181
|
+
await driver.executeScript('mobile: flingGesture', [{
|
|
182
|
+
elementId: element.elementId,
|
|
183
|
+
direction: 'right',
|
|
184
|
+
speed: 500,
|
|
185
|
+
}]);
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
### mobile: pinchOpenGesture
|
|
190
|
+
|
|
191
|
+
This gesture performs pinch-open gesture on the given element/area.
|
|
192
|
+
Available since Appium v1.19
|
|
193
|
+
|
|
194
|
+
#### Supported arguments
|
|
195
|
+
|
|
196
|
+
* _elementId_: The id of the element to be pinched.
|
|
197
|
+
If the element id is missing then pinch bounding area must be provided.
|
|
198
|
+
If both the element id and the pinch bounding area are provided then the
|
|
199
|
+
area is effectively ignored.
|
|
200
|
+
* _left_: The left coordinate of the pinch bounding area
|
|
201
|
+
* _top_: The top coordinate of the pinch bounding area
|
|
202
|
+
* _width_: The width of the pinch bounding area
|
|
203
|
+
* _height_: The height of the pinch bounding area
|
|
204
|
+
* _percent_: The size of the pinch as a percentage of the pinch area size.
|
|
205
|
+
Valid values must be float numbers in range 0..1, where 1.0 is 100%.
|
|
206
|
+
Mandatory value.
|
|
207
|
+
* _speed_: The speed at which to perform this gesture in pixels per second.
|
|
208
|
+
The value must not be negative. The default value is `2500 * displayDensity`
|
|
209
|
+
|
|
210
|
+
#### Usage examples
|
|
211
|
+
|
|
212
|
+
```java
|
|
213
|
+
// Java
|
|
214
|
+
((JavascriptExecutor) driver).executeScript("mobile: pinchOpenGesture", ImmutableMap.of(
|
|
215
|
+
"elementId", ((RemoteWebElement) element).getId(),
|
|
216
|
+
"percent", 0.75
|
|
217
|
+
));
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
### mobile: pinchCloseGesture
|
|
222
|
+
|
|
223
|
+
This gesture performs pinch-close gesture on the given element/area.
|
|
224
|
+
Available since Appium v1.19
|
|
225
|
+
|
|
226
|
+
#### Supported arguments
|
|
227
|
+
|
|
228
|
+
* _elementId_: The id of the element to be pinched.
|
|
229
|
+
If the element id is missing then pinch bounding area must be provided.
|
|
230
|
+
If both the element id and the pinch bounding area are provided then the
|
|
231
|
+
area is effectively ignored.
|
|
232
|
+
* _left_: The left coordinate of the pinch bounding area
|
|
233
|
+
* _top_: The top coordinate of the pinch bounding area
|
|
234
|
+
* _width_: The width of the pinch bounding area
|
|
235
|
+
* _height_: The height of the pinch bounding area
|
|
236
|
+
* _percent_: The size of the pinch as a percentage of the pinch area size.
|
|
237
|
+
Valid values must be float numbers in range 0..1, where 1.0 is 100%.
|
|
238
|
+
Mandatory value.
|
|
239
|
+
* _speed_: The speed at which to perform this gesture in pixels per second.
|
|
240
|
+
The value must not be negative. The default value is `2500 * displayDensity`
|
|
241
|
+
|
|
242
|
+
#### Usage examples
|
|
243
|
+
|
|
244
|
+
```java
|
|
245
|
+
// Java
|
|
246
|
+
((JavascriptExecutor) driver).executeScript("mobile: pinchCloseGesture", ImmutableMap.of(
|
|
247
|
+
"elementId", ((RemoteWebElement) element).getId(),
|
|
248
|
+
"percent", 0.75
|
|
249
|
+
));
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
# Python
|
|
254
|
+
can_scroll_more = driver.execute_script('mobile: pinchCloseGesture', {
|
|
255
|
+
'elementId': element.id,
|
|
256
|
+
'percent': 0.75
|
|
257
|
+
})
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
### mobile: swipeGesture
|
|
262
|
+
|
|
263
|
+
This gesture performs swipe gesture on the given element/area.
|
|
264
|
+
Available since Appium v1.19
|
|
265
|
+
|
|
266
|
+
#### Supported arguments
|
|
267
|
+
|
|
268
|
+
* _elementId_: The id of the element to be swiped.
|
|
269
|
+
If the element id is missing then swipe bounding area must be provided.
|
|
270
|
+
If both the element id and the swipe bounding area are provided then the
|
|
271
|
+
area is effectively ignored.
|
|
272
|
+
* _left_: The left coordinate of the swipe bounding area
|
|
273
|
+
* _top_: The top coordinate of the swipe bounding area
|
|
274
|
+
* _width_: The width of the swipe bounding area
|
|
275
|
+
* _height_: The height of the swipe bounding area
|
|
276
|
+
* _direction_: Swipe direction. Mandatory value.
|
|
277
|
+
Acceptable values are: `up`, `down`, `left` and `right` (case insensitive)
|
|
278
|
+
* _percent_: The size of the swipe as a percentage of the swipe area size.
|
|
279
|
+
Valid values must be float numbers in range 0..1, where 1.0 is 100%.
|
|
280
|
+
Mandatory value.
|
|
281
|
+
* _speed_: The speed at which to perform this gesture in pixels per second.
|
|
282
|
+
The value must not be negative. The default value is `5000 * displayDensity`
|
|
283
|
+
|
|
284
|
+
#### Usage examples
|
|
285
|
+
|
|
286
|
+
```java
|
|
287
|
+
// Java
|
|
288
|
+
((JavascriptExecutor) driver).executeScript("mobile: swipeGesture", ImmutableMap.of(
|
|
289
|
+
"left", 100, "top", 100, "width", 200, "height", 200,
|
|
290
|
+
"direction", "left",
|
|
291
|
+
"percent", 0.75
|
|
292
|
+
));
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
```python
|
|
296
|
+
# Python
|
|
297
|
+
driver.execute_script('mobile: swipeGesture', {
|
|
298
|
+
'left': 100,
|
|
299
|
+
'top': 100,
|
|
300
|
+
'width': 200,
|
|
301
|
+
'height': 200,
|
|
302
|
+
'direction': direction, 'percent': 0.75
|
|
303
|
+
})
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
### mobile: scrollGesture
|
|
308
|
+
|
|
309
|
+
This gesture performs scroll gesture on the given element/area.
|
|
310
|
+
Available since Appium v1.19
|
|
311
|
+
|
|
312
|
+
#### Supported arguments
|
|
313
|
+
|
|
314
|
+
* _elementId_: The id of the element to be scrolled.
|
|
315
|
+
If the element id is missing then scroll bounding area must be provided.
|
|
316
|
+
If both the element id and the scroll bounding area are provided then this
|
|
317
|
+
area is effectively ignored.
|
|
318
|
+
* _left_: The left coordinate of the scroll bounding area
|
|
319
|
+
* _top_: The top coordinate of the scroll bounding area
|
|
320
|
+
* _width_: The width of the scroll bounding area
|
|
321
|
+
* _height_: The height of the scroll bounding area
|
|
322
|
+
* _direction_: Scrolling direction. Mandatory value.
|
|
323
|
+
Acceptable values are: `up`, `down`, `left` and `right` (case insensitive)
|
|
324
|
+
* _percent_: The size of the scroll as a percentage of the scrolling area size.
|
|
325
|
+
Valid values must be float numbers greater than zero, where 1.0 is 100%.
|
|
326
|
+
Mandatory value.
|
|
327
|
+
* _speed_: The speed at which to perform this gesture in pixels per second.
|
|
328
|
+
The value must not be negative. The default value is `5000 * displayDensity`
|
|
329
|
+
|
|
330
|
+
#### Returned value
|
|
331
|
+
|
|
332
|
+
The returned value is a boolean one and equals to `true` if the object can still scroll in the given direction
|
|
333
|
+
|
|
334
|
+
#### Usage examples
|
|
335
|
+
|
|
336
|
+
```java
|
|
337
|
+
// Java
|
|
338
|
+
boolean canScrollMore = (Boolean) ((JavascriptExecutor) driver).executeScript("mobile: scrollGesture", ImmutableMap.of(
|
|
339
|
+
"left", 100, "top", 100, "width", 200, "height", 200,
|
|
340
|
+
"direction", "down",
|
|
341
|
+
"percent", 1.0
|
|
342
|
+
));
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
```python
|
|
346
|
+
# Python
|
|
347
|
+
can_scroll_more = driver.execute_script('mobile: scrollGesture', {
|
|
348
|
+
'left': 100, 'top': 100, 'width': 200, 'height': 200,
|
|
349
|
+
'direction': 'down',
|
|
350
|
+
'percent': 3.0
|
|
351
|
+
})
|
|
352
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Supported BiDi Commands And Events
|
|
2
|
+
|
|
3
|
+
Only events and commands mentioned below are supported.
|
|
4
|
+
All other entities described in the spec throw not implemented errors.
|
|
5
|
+
|
|
6
|
+
# Supported Events
|
|
7
|
+
|
|
8
|
+
## log.entryAdded
|
|
9
|
+
|
|
10
|
+
This event is emitted if the driver retrieves a new entry for any of the below log types.
|
|
11
|
+
|
|
12
|
+
### syslog
|
|
13
|
+
|
|
14
|
+
Events are emitted for both emulator and real devices. Each event contains a single device logcat line.
|
|
15
|
+
Events are always emitted with the `NATIVE_APP` context.
|
|
16
|
+
These events might be disabled if the `appium:skipLogcatCapture` capability is enabled.
|
|
17
|
+
|
|
18
|
+
### server
|
|
19
|
+
|
|
20
|
+
Events are emitted for both emulator and real devices. Each event contains a single Appium server log line.
|
|
21
|
+
Events are always emitted with the `NATIVE_APP` context.
|
|
22
|
+
Events are only emitted if the `get_server_logs` server security feature is enabled.
|
|
23
|
+
|
|
24
|
+
## appium:uiautomator2.contextUpdate
|
|
25
|
+
|
|
26
|
+
This event is emitted upon the context change, either explicit or implicit.
|
|
27
|
+
The event is always emitted upon new session initialization.
|
|
28
|
+
See the [GitHub feature ticket](https://github.com/appium/appium/issues/20741) for more details.
|
|
29
|
+
|
|
30
|
+
### CDDL
|
|
31
|
+
|
|
32
|
+
```cddl
|
|
33
|
+
appium:uiautomator2.contextUpdated = {
|
|
34
|
+
method: "appium:uiautomator2.contextUpdated",
|
|
35
|
+
params: {
|
|
36
|
+
name: text,
|
|
37
|
+
type: "NATIVE" / "WEB",
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The event contains the following params:
|
|
43
|
+
|
|
44
|
+
### name
|
|
45
|
+
|
|
46
|
+
Contains the actual name of the new context, for example `NATIVE_APP`.
|
|
47
|
+
|
|
48
|
+
### type
|
|
49
|
+
|
|
50
|
+
Either `NATIVE` or `WEB` depending on which context is currently active in the driver session.
|