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,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Appium Project History
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Appium has been around in one form or another since 2012. It's been under the
|
|
6
|
+
direction of various individuals and organizations, and it's even been
|
|
7
|
+
implemented in 3 different programming languages! Welcome to more than you ever
|
|
8
|
+
wanted to know about how Appium got to be what is it today...
|
|
9
|
+
|
|
10
|
+
## Early Inspiration
|
|
11
|
+
|
|
12
|
+
[Dan Cuellar](https://twitter.com/thedancuellar) was the Test Manager at Zoosk
|
|
13
|
+
in 2011, when he encountered a problem. The length of the test passes on the
|
|
14
|
+
iOS product was getting out of hand. Less testing was an option, but would come
|
|
15
|
+
with additional risk, especially with it taking several days to get patches
|
|
16
|
+
through the iOS App Store Review process. He thought back to his days working
|
|
17
|
+
on websites and realized automation was the answer.
|
|
18
|
+
|
|
19
|
+
Dan surveyed the existing landscape of tools, only to find that all of them
|
|
20
|
+
hand major drawbacks. The tool supplied by Apple, UIAutomation, required tests
|
|
21
|
+
to be written in JavaScript, and did not allow for real-time debugging or
|
|
22
|
+
interpretation. It also had to be executed inside the Xcode profiling tool,
|
|
23
|
+
Instruments. Other 3rd-party tools used private APIs and required SDKs and HTTP
|
|
24
|
+
Servers to be embedded into the application. This seemed highly undesirable.
|
|
25
|
+
|
|
26
|
+
Unsatisfied with the existing options, Dan asked his manager for some
|
|
27
|
+
additional time to see if he could find a better way. He spent 2 weeks poking
|
|
28
|
+
and prodding around to see if there was a way to use approved Apple
|
|
29
|
+
technologies to automate an iOS application. The first implementation he tried
|
|
30
|
+
used AppleScript to send messages to Mac UI elements using the OS
|
|
31
|
+
X accessibility APIs. This worked to some degree, but would never work on real
|
|
32
|
+
devices, not to mention other drawbacks.
|
|
33
|
+
|
|
34
|
+
So he thought, what if I could get the UIAutomation framework to run in real
|
|
35
|
+
time like an interpreter? He looked into it and he determined that all he would
|
|
36
|
+
need to do is find a way to receive, execute, and reply to commands from within
|
|
37
|
+
a UIAutomation javascript program. Using the utility Apple provided for
|
|
38
|
+
executing shell commands he was able to `cat` sequentially ordered text files
|
|
39
|
+
to receive commands, `eval()` the output to execute them, and write them back
|
|
40
|
+
to disk with `python`. He then prepared code in C# that implemented the
|
|
41
|
+
Selenium-style syntax to write the sequentially ordered javascript commands.
|
|
42
|
+
iOSAuto is born.
|
|
43
|
+
|
|
44
|
+
## Selenium Conference 2012
|
|
45
|
+
|
|
46
|
+
Dan was selected to speak at Selenium Conference 2012 in London about an
|
|
47
|
+
entirely different topic. As part of his presentation, he showed off iOS
|
|
48
|
+
Automation using Selenium syntax to demonstrate writing platform-agnostic tests
|
|
49
|
+
that use separate platform-specific page objects with a common interface. To
|
|
50
|
+
his surprise, the cool test architecture would take a backseat to the spectacle
|
|
51
|
+
of iOS tests running like WebDriver tests. Several people suggested that he
|
|
52
|
+
give a lightning talk later in the conference to explain exactly how it worked.
|
|
53
|
+
|
|
54
|
+
On the second day of the conference, Dan stepped up on stage to give the
|
|
55
|
+
lightning talk. Jason Huggins, co-creator of Selenium, moderated the lightning
|
|
56
|
+
talks. Dan experienced technical difficulties getting his presentation to
|
|
57
|
+
load, and Jason nearly had to move on to the next lightning talk. At the last
|
|
58
|
+
moment, the screen turned on and Dan jumped into his presentation. He explained
|
|
59
|
+
the details of his implementation and how it worked, begged for contributors,
|
|
60
|
+
and in five minutes it was over. The crowd applauded politely, and he left the
|
|
61
|
+
stage.
|
|
62
|
+
|
|
63
|
+
## The Phone Rings
|
|
64
|
+
|
|
65
|
+
Four months after the Selenium Conference, Jason called Dan. Jason had been
|
|
66
|
+
working on iOS testing support for a client at Sauce Labs. Jason remembered
|
|
67
|
+
Dan's lightning talk and thought the project might be useful to Jason's work,
|
|
68
|
+
but Dan's source code was not public. Jason asked Dan to meet up. Later that
|
|
69
|
+
week, Dan met Jason in a bar in San Francisco and showed him the source code
|
|
70
|
+
for iOS Auto.
|
|
71
|
+
|
|
72
|
+
A long-time open source advocate, Jason encouraged Dan to release his code
|
|
73
|
+
under an open source license. In August, Dan [released the source
|
|
74
|
+
code](https://github.com/penguinho/appium-old/commit/3ab56d3a5601897b2790b5256351f9b5af3f9e90)
|
|
75
|
+
on GitHub in C#. Jason encouraged Dan to change the language to make the
|
|
76
|
+
project more appealing to potential contributors. Dan [uploaded a new version
|
|
77
|
+
in
|
|
78
|
+
Python](https://github.com/penguinho/appium-old/commit/9b891207be0957bf209a77242750da17d3eb8eda).
|
|
79
|
+
In September, Jason added a web server and [began to implement the WebDriver
|
|
80
|
+
wire
|
|
81
|
+
protocol](https://github.com/hugs/appium-old/commit/ae8fe4578640d9af9137d0546190fa29317d1499)
|
|
82
|
+
over HTTP, making iOS Auto scriptable from any Selenium WebDriver client
|
|
83
|
+
library in any language.
|
|
84
|
+
|
|
85
|
+
## The Mobile Testing Summit
|
|
86
|
+
|
|
87
|
+
Jason decided that the project should be presented at the [Mobile Testing
|
|
88
|
+
Summit](https://twitter.com/mobtestsummit) in November, but suggested that the
|
|
89
|
+
project get a new name first. Many ideas were thrown out and they settled on
|
|
90
|
+
AppleCart. A day later, while he was perusing some of Apple's guidance on
|
|
91
|
+
copyright and trademarks, Jason noticed that under the section of examples for
|
|
92
|
+
names Apple would defend its trademarks against, the first example was
|
|
93
|
+
"AppleCart". He called Dan and informed him of the situation, and they
|
|
94
|
+
brainstormed for a bit before Jason hit the jackpot. Appium... Selenium for
|
|
95
|
+
Apps.
|
|
96
|
+
|
|
97
|
+
## Sauce Labs and Node.js
|
|
98
|
+
|
|
99
|
+
In January 2013, not long after the Mobile Testing Summit, Sauce Labs decided
|
|
100
|
+
to fully back Appium and provide more developer power. A task force was created
|
|
101
|
+
to evaluate the current state and how best to move forward with the project.
|
|
102
|
+
The team, which included Jonathan Lipps (the current project lead), decided
|
|
103
|
+
that Appium needed a rebirth, and ultimately settled on Node.js as the
|
|
104
|
+
framework to use. Node is well-known as a fast and efficient web server
|
|
105
|
+
backend, and at the end of the day, Appium is just a highly-specialized web
|
|
106
|
+
server. It was also decided that JavaScript as a language was accessible enough
|
|
107
|
+
that Appium would be able to grow into a larger community of open-source
|
|
108
|
+
developers with JavaScript than the other options on the table.
|
|
109
|
+
|
|
110
|
+
In just a few days, the team leveraged the existing work on Appium and had
|
|
111
|
+
a new version of Appium with as much functionality as the previous Python
|
|
112
|
+
version. The foundation had been laid for Appium's basic architecture, and we
|
|
113
|
+
have been successfully building on it since. A few weeks into this sprint,
|
|
114
|
+
Jonathan Lipps was formally designated project lead and he began to strategize
|
|
115
|
+
how to get more people from the community involved with Appium's development.
|
|
116
|
+
|
|
117
|
+
## Appium Around the World
|
|
118
|
+
|
|
119
|
+
Ultimately, Jonathan decided that getting Appium in front of as many developers
|
|
120
|
+
at conferences and meetups was the best way to attract users and contributions.
|
|
121
|
+
Appium in its new incarnation was debuted at the [Google Test Automation
|
|
122
|
+
Conference 2013](https://www.youtube.com/watch?v=1J0aXDbjiUE). Later in 2013,
|
|
123
|
+
Appium was presented at conferences and meetups all around the US, as well as
|
|
124
|
+
in England, Poland, Portugal, and Australia. Notably, Jonathan had Appium
|
|
125
|
+
[perform as instruments in a band](https://www.youtube.com/watch?v=zsbNVkayYRQ)
|
|
126
|
+
and Dan Cuellar put together a fun [Appium video
|
|
127
|
+
montage](https://www.youtube.com/watch?v=xkzrEn0v0II) for Selenium Conference.
|
|
128
|
+
|
|
129
|
+
But during all these presentations and conferences, the project continued to
|
|
130
|
+
develop. Early in 2013 we released Android and Selendroid support, making
|
|
131
|
+
Appium the first truly cross-platform automation framework. The project also
|
|
132
|
+
continued to attract users and contributors, and by the end of 2013, we'd
|
|
133
|
+
already had well over 1,000 commits.
|
|
134
|
+
|
|
135
|
+
## The Road to Appium 1.0
|
|
136
|
+
|
|
137
|
+
Appium began to grow and mature significantly. In May 2014,
|
|
138
|
+
we released Appium 1.0, which stood as a milestone in Appium's development.
|
|
139
|
+
Appium was given
|
|
140
|
+
[various](https://www.prnewswire.com/news-releases/black-duck-announces-black-duck-open-source-rookies-of-the-year-winners-242383341.html)
|
|
141
|
+
[awards](https://www.infoworld.com/article/2241247/164642-bossie-awards-2014-the-best-open-source-application-development-tools.html)
|
|
142
|
+
and became the most popular open-source cross-platform mobile automation
|
|
143
|
+
framework. Stability improved, bugs were prioritized and fixed, and features
|
|
144
|
+
added. Sauce Labs increased the number of developers it donated to working
|
|
145
|
+
on Appium, but the entire community stayed involved in guiding the project and
|
|
146
|
+
contributing to it, and project governance continued to happen in the open, on
|
|
147
|
+
public mailing lists and GitHub's issue tracker.
|
|
148
|
+
|
|
149
|
+
## The Appium Umbrella Broadens
|
|
150
|
+
|
|
151
|
+
Eventually, it became clear that the Appium codebase was not optimized for
|
|
152
|
+
a large team of distributed, sometime contributors. We took the opportunity as
|
|
153
|
+
a committer team to rewrite Appium from the ground up, using a more modern
|
|
154
|
+
version of the JavaScript language, and redoing Appium's architecture so that
|
|
155
|
+
it was easy for users or third-party developers to build their own Appium
|
|
156
|
+
"drivers". We wanted for it to be easier for new contributors to get ramped up
|
|
157
|
+
on the Appium codebase, and to see support for new platforms added to Appium by
|
|
158
|
+
groups other than the core team. That vision has begun to be fulfilled, with
|
|
159
|
+
groups like Microsoft and Youi.tv adding drivers to Appium for Windows desktop
|
|
160
|
+
app automation and Youi.tv app automation, respectively.
|
|
161
|
+
|
|
162
|
+
## Appium To The People
|
|
163
|
+
|
|
164
|
+
In late 2016, Sauce Labs donated Appium as a project to the [JS
|
|
165
|
+
Foundation](https://js.foundation), in order to cement for the world Sauce's
|
|
166
|
+
commitment that Appium remains open source. The JS Foundation is a non-profit
|
|
167
|
+
open source stewardship organization which takes responsibility for holding the
|
|
168
|
+
copyright for open source projects, as well as ensuring they have a long and
|
|
169
|
+
successful tenure in the community. As a result of our move to a non-profit
|
|
170
|
+
foundation, we hope that the door will open even more widely for new
|
|
171
|
+
contributors, either as individuals or representing one of the many companies
|
|
172
|
+
which now have an interest in seeing Appium move forward.
|
|
173
|
+
|
|
174
|
+
Eventually, the JS Foundation merged into the [OpenJS Foundation](https://openjsf.org),
|
|
175
|
+
and Appium became an Impact Project in the foundation.
|
|
176
|
+
|
|
177
|
+
## Appium 2.0
|
|
178
|
+
|
|
179
|
+
Appium 2 was released in 2023 and introduced an entirely revamped architecture, shifting focus to Appium
|
|
180
|
+
as an ecosystem rather than an all-in-one project. This unlocked the ability for anyone to develop
|
|
181
|
+
and share their own Appium extensions (drivers and plugins), opening up a world of possibilities
|
|
182
|
+
for automation-related development for platforms far beyond iOS and Android! As a result,
|
|
183
|
+
many third-party extensions were created, such as new drivers for Flutter and Windows, plugins for
|
|
184
|
+
mocking APIs and managing device farms, new Appium clients based on Rust and Swift, and much more.
|
|
185
|
+
|
|
186
|
+
Around this time was also when we started a sponsorship program for Appium, which attracted various
|
|
187
|
+
major and minor sponsors alike. This allowed us to give back to the Appium community, by compensating
|
|
188
|
+
contributors for their voluntary work on the project.
|
|
189
|
+
|
|
190
|
+
## Appium 3.0
|
|
191
|
+
|
|
192
|
+
2025 saw the release of Appium 3. This update was a lot smaller than Appium 2 and included only a
|
|
193
|
+
few behavioral changes, instead focusing on removing deprecated code and updating compatibility for
|
|
194
|
+
more modern ecosystems. Still, this reduced scope was also to be expected: since Appium 2, the
|
|
195
|
+
main feature development efforts had shifted to individual drivers and plugins, many of which had
|
|
196
|
+
gone through multiple major updates during the Appium 2 era.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Appium in a Nutshell
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
As mentioned on the main page, Appium aims to support UI automation of many _different platforms_
|
|
9
|
+
(mobile, web, desktop, etc.). Not only that, but it also aims to support automation code written in
|
|
10
|
+
_different languages_ (JS, Java, Python, etc.). Combining all of this functionality in a single
|
|
11
|
+
program is a very daunting, if not impossible task!
|
|
12
|
+
|
|
13
|
+
In order to achieve this, Appium is effectively split into four parts:
|
|
14
|
+
|
|
15
|
+
<div class="grid cards" markdown>
|
|
16
|
+
|
|
17
|
+
- :material-image-filter-center-focus-strong: __Appium Core__ - defines the core APIs
|
|
18
|
+
- :material-car: __Drivers__ - implement connectivity to specific platforms
|
|
19
|
+
- :octicons-code-16: __Clients__ - implement Appium's API in specific languages
|
|
20
|
+
- :fontawesome-solid-plug: __Plugins__ - change or extend Appium's core functionality
|
|
21
|
+
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
Therefore, in order to start automating something with Appium, you need to:
|
|
25
|
+
|
|
26
|
+
- Install Appium itself
|
|
27
|
+
- Install a driver for your target platform
|
|
28
|
+
- Install a client library for your target programming language
|
|
29
|
+
- (Optional) install one or more plugins
|
|
30
|
+
|
|
31
|
+
These are the basics! If you are ready to jump in, proceed with the [Quickstart](../quickstart/index.md)!
|
|
32
|
+
|
|
33
|
+
If you wish to learn more details about how it all works, see these pages for background material:
|
|
34
|
+
|
|
35
|
+
- [Appium Core](./appium.md)
|
|
36
|
+
- [Appium Drivers](./drivers.md)
|
|
37
|
+
- [Appium Clients](./clients.md)
|
|
38
|
+
|
|
39
|
+
Finally, to learn about the origins of Appium, check out the [Appium Project History](./history.md).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Getting Started
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Let's get up and running with Appium! To successfully use this quickstart, it's recommended that
|
|
9
|
+
you first have read the [Introduction](../intro/index.md), so that you understand the concepts involved in
|
|
10
|
+
running Appium and writing Appium scripts.
|
|
11
|
+
|
|
12
|
+
The basic plan for this quickstart is as follows:
|
|
13
|
+
|
|
14
|
+
1. Install Appium
|
|
15
|
+
1. Install an Appium driver and its dependencies
|
|
16
|
+
- This guide provides instructions for the [UiAutomator2 driver](https://github.com/appium/appium-uiautomator2-driver)
|
|
17
|
+
1. Install an Appium client library in your language of choice
|
|
18
|
+
- This guide contains options for JavaScript, Python, Java, Ruby, and .NET
|
|
19
|
+
1. Write and run a simple Appium automation script using a sample application
|
|
20
|
+
|
|
21
|
+
### Requirements
|
|
22
|
+
|
|
23
|
+
Before getting started, make sure your system satisfies the
|
|
24
|
+
[requirements](../quickstart/requirements.md) for running the Appium server. Additional requirements
|
|
25
|
+
will be discussed in conjunction with installing the UiAutomator2 driver. The guide also assumes
|
|
26
|
+
you have basic command line proficiency on your platform, for example being able to run commands, set
|
|
27
|
+
and persist environment variables, etc...
|
|
28
|
+
|
|
29
|
+
Now you're ready to get started! So head on over to [Installing Appium](./install.md).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Install Appium
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
!!! info
|
|
9
|
+
|
|
10
|
+
Before installing, make sure to check the [System Requirements](./requirements.md).
|
|
11
|
+
|
|
12
|
+
Appium can be installed globally using `npm`:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g appium
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
!!! note
|
|
19
|
+
|
|
20
|
+
Other package managers are not currently supported.
|
|
21
|
+
|
|
22
|
+
## Starting Appium
|
|
23
|
+
|
|
24
|
+
Appium can be started [using the command line](../reference/cli/index.md):
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
appium
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This launches the Appium server process, which loads all the installed Appium drivers, and
|
|
31
|
+
begins waiting for new session requests from client connections (such as test automation scripts).
|
|
32
|
+
Since the server process is independent from its clients, it must be explicitly launched before
|
|
33
|
+
attempting to start a new session.
|
|
34
|
+
|
|
35
|
+
When the server is launched, the console log will list all the valid URLs that clients can use to
|
|
36
|
+
connect to this server:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
[Appium] You can provide the following URLs in your client code to connect to this server:
|
|
40
|
+
[Appium] http://127.0.0.1:4723/ (only accessible from the same host)
|
|
41
|
+
(... any other URLs ...)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Once a client requests a new session, the Appium server process will start logging all details about
|
|
45
|
+
this session until its termination. Keep this in mind - if you ever encounter issues with Appium
|
|
46
|
+
tests, you can always check the server log for more details.
|
|
47
|
+
|
|
48
|
+
So what's next? Even though Appium is installed and running, it does not come bundled with any
|
|
49
|
+
drivers, which means it cannot automate anything yet. We will therefore set up automation for
|
|
50
|
+
Android - continue to [Installing the UiAutomator2 Driver](./uiauto2-driver.md).
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Next Steps
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Now that you've successfully set up your system for Android automation and run a simple test,
|
|
9
|
+
you'll want to continue exploring this documentation. In particular, these are good guides and
|
|
10
|
+
reference materials especially for beginners:
|
|
11
|
+
|
|
12
|
+
- The [Ecosystem](../ecosystem/index.md) page: browse the available drivers, clients, plugins, and tools
|
|
13
|
+
- [Managing Appium Drivers and Plugins](../guides/managing-exts.md)
|
|
14
|
+
- [Capabilities](../guides/caps.md)
|
|
15
|
+
- [Settings](../guides/settings.md)
|
|
16
|
+
|
|
17
|
+
You'll also find that the [Appium Inspector](https://github.com/appium/appium-inspector) is an
|
|
18
|
+
indispensable tool for writing Appium tests, as it enables visual inspection of apps and
|
|
19
|
+
helps you to discover element locators for use in your test scripts.
|
|
20
|
+
|
|
21
|
+
You might also take advantage of one of the many online Appium courses available to you.
|
|
22
|
+
|
|
23
|
+
Good luck and have fun!
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: System Requirements
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The basic requirements for the Appium server are:
|
|
9
|
+
|
|
10
|
+
* A macOS, Linux, or Windows operating system
|
|
11
|
+
* [Node.js](https://nodejs.org) version in the [SemVer](https://semver.org) range `^20.19.0 || ^22.12.0 || >=24.0.0`
|
|
12
|
+
* LTS is recommended
|
|
13
|
+
* [`npm`](https://npmjs.com) version `>=10` (`npm` is usually bundled with Node.js, but can be upgraded
|
|
14
|
+
independently)
|
|
15
|
+
|
|
16
|
+
By itself, Appium is relatively lightweight and doesn't have significant disk space or RAM
|
|
17
|
+
requirements. It can even be run in resource-constrained environments like Raspberry Pi, so long as
|
|
18
|
+
Node.js is available.
|
|
19
|
+
|
|
20
|
+
### Driver Requirements
|
|
21
|
+
|
|
22
|
+
Drivers for automating specific platforms will likely have other requirements. Refer to the
|
|
23
|
+
documentation of the [Appium driver(s)](../ecosystem/drivers.md) for that platform for additional
|
|
24
|
+
dependencies. It is almost universally the case that Appium drivers for a given platform will
|
|
25
|
+
require the developer toolchain and SDKs for that platform to be installed.
|
|
26
|
+
|
|
27
|
+
In order to assist with driver requirements, each (official) driver comes with the Appium Doctor tool,
|
|
28
|
+
which allows to verify if all requirements have been set up. Learn more about how to use this tool in
|
|
29
|
+
the [Command-Line Usage documentation](../reference/cli/extensions.md#doctor).
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Write a Test (.NET)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The [Appium .NET Client](https://github.com/appium/dotnet-client/) is
|
|
9
|
+
an official Appium client in C#. This driver is an extension of the Selenium C# client. It has all the functionalities of the regular driver, but add Appium-specific methods on top of this. The driver is available on the public NuGet Gallery as [Appium.WebDriver](https://www.nuget.org/packages/Appium.WebDriver/).
|
|
10
|
+
|
|
11
|
+
Now, we get inside the directory and create a new [NUnit](https://nunit.org/) project. We will also add the references to the Appium.Net driver, and other dependencies.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
cd dotnet-client
|
|
15
|
+
dotnet new nunit --name appiumtest
|
|
16
|
+
|
|
17
|
+
cd appiumtest
|
|
18
|
+
|
|
19
|
+
# This will install the latest 5.x version
|
|
20
|
+
dotnet add package Appium.WebDriver --prerelease
|
|
21
|
+
dotnet add package Newtonsoft.Json --version 13.0.3
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Once this is done, your project should have a placeholder file `UnitTest1.cs`. We will replace the code to include the OpenQA namespaces, an initialization of the driver, and the actual test.
|
|
25
|
+
|
|
26
|
+
```C# title="UnitTest1.cs"
|
|
27
|
+
using OpenQA.Selenium;
|
|
28
|
+
using OpenQA.Selenium.Appium;
|
|
29
|
+
using OpenQA.Selenium.Appium.Android;
|
|
30
|
+
using OpenQA.Selenium.Appium.Enums;
|
|
31
|
+
|
|
32
|
+
namespace appiumtest;
|
|
33
|
+
|
|
34
|
+
public class Tests
|
|
35
|
+
{
|
|
36
|
+
private AndroidDriver _driver;
|
|
37
|
+
|
|
38
|
+
[OneTimeSetUp]
|
|
39
|
+
public void SetUp()
|
|
40
|
+
{
|
|
41
|
+
var serverUri = new Uri(Environment.GetEnvironmentVariable("APPIUM_HOST") ?? "http://127.0.0.1:4723/");
|
|
42
|
+
var driverOptions = new AppiumOptions() {
|
|
43
|
+
AutomationName = AutomationName.AndroidUIAutomator2,
|
|
44
|
+
PlatformName = "Android",
|
|
45
|
+
DeviceName = "Android Emulator",
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
driverOptions.AddAdditionalAppiumOption("appPackage", "com.android.settings");
|
|
49
|
+
driverOptions.AddAdditionalAppiumOption("appActivity", ".Settings");
|
|
50
|
+
// NoReset assumes the app com.google.android is preinstalled on the emulator
|
|
51
|
+
driverOptions.AddAdditionalAppiumOption("noReset", true);
|
|
52
|
+
|
|
53
|
+
_driver = new AndroidDriver(serverUri, driverOptions, TimeSpan.FromSeconds(180));
|
|
54
|
+
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
[OneTimeTearDown]
|
|
58
|
+
public void TearDown()
|
|
59
|
+
{
|
|
60
|
+
_driver.Dispose();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[Test]
|
|
64
|
+
public void TestFindApps()
|
|
65
|
+
{
|
|
66
|
+
_driver.StartActivity("com.android.settings", ".Settings");
|
|
67
|
+
_driver.FindElement(By.XPath("//*[@text='Apps']")).Click();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
!!! note
|
|
73
|
+
|
|
74
|
+
It's not within the scope of this guide to give a complete run-down on the dotnet client
|
|
75
|
+
library or everything that's happening here, so we'll leave the code itself unexplained in
|
|
76
|
+
detail for now. You may want to read up particularly on Appium
|
|
77
|
+
[Capabilities](../guides/caps.md) in addition to familiarizing yourself with the
|
|
78
|
+
[dotnet client driver documentation](https://github.com/appium/dotnet-client/) for a fuller explanation
|
|
79
|
+
of the various API commands you see and what their purpose is.
|
|
80
|
+
|
|
81
|
+
Basically, this code is doing the following:
|
|
82
|
+
|
|
83
|
+
1. Defining a set of "Capabilities" (parameters) to send to the Appium server so Appium knows what
|
|
84
|
+
kind of thing you want to automate. Some of these parameters can be overridden using environment variables.
|
|
85
|
+
1. Starting an Appium session on the built-in Android settings app.
|
|
86
|
+
1. Finding the "Apps" list item and clicking it.
|
|
87
|
+
1. Ending the Appium session.
|
|
88
|
+
|
|
89
|
+
That's it! Let's give it a try. Before you run the test, make sure that you have an Appium server
|
|
90
|
+
running in another terminal session, otherwise you'll get an error about not being able to connect
|
|
91
|
+
to one. Then, you can execute the script:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
dotnet test
|
|
95
|
+
|
|
96
|
+
# Example output:
|
|
97
|
+
# Starting test execution, please wait...
|
|
98
|
+
# A total of 1 test files matched the specified pattern.
|
|
99
|
+
|
|
100
|
+
# Passed! - Failed: 0, Passed: 1, Skipped: 0, Total: 1, Duration: 323 ms - appiumtest.dll (net7.0)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
If all goes well, you'll see the Settings app open up and navigate to the "Apps" view in the emulator before the app closes again.
|
|
104
|
+
|
|
105
|
+
Congratulations, you've started your Appium journey! Read on for some [next steps](./next-steps.md) to explore.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Write a Test (Java)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The Appium team maintains an official [client](https://github.com/appium/java-client) for the Java programming language.
|
|
9
|
+
It is built on top of [Selenium](https://github.com/SeleniumHQ/selenium).
|
|
10
|
+
You can also use this client in your Kotlin projects.
|
|
11
|
+
|
|
12
|
+
Follow the [Add Appium java client to your test framework](https://github.com/appium/java-client#add-appium-java-client-to-your-test-framework)
|
|
13
|
+
tutorial in order to connect the library to your test framework sources.
|
|
14
|
+
|
|
15
|
+
The Appium Java client has dedicated classes to support most of the official Appium drivers. For other drivers
|
|
16
|
+
you could simply use the [AppiumDriver](https://github.com/appium/java-client/blob/master/src/main/java/io/appium/java_client/AppiumDriver.java) class
|
|
17
|
+
or build your custom derivatives from it. Check the [Drivers Support](https://github.com/appium/java-client#drivers-support)
|
|
18
|
+
article to learn more about the current driver class implementations.
|
|
19
|
+
|
|
20
|
+
Follow the [Usage Examples](https://github.com/appium/java-client#usage-examples) article in order understand
|
|
21
|
+
how to invoke Java client features from your test framework.
|
|
22
|
+
|
|
23
|
+
Once you've managed to successfully run a test, you can read on for some [next steps](./next-steps.md) to explore.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Write a Test (JS)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
To write an Appium test in JavaScript (Node.js), we need to choose an Appium-compatible client
|
|
9
|
+
library. The best-maintained library and the one the Appium team recommends using is
|
|
10
|
+
[WebdriverIO](https://webdriver.io), so let's use that. Since we already have Appium installed we
|
|
11
|
+
know our Node and NPM requirements are already satisfied. So just create a new project directory
|
|
12
|
+
somewhere on your computer and then initialize a new Node.js project in it:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm init
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
It doesn't really matter what you put in the prompts, just so long as you end up with a valid
|
|
19
|
+
`package.json`.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Now, install the `webdriverio` package via NPM:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm i --save-dev webdriverio
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Once this is done, your `package.json` file should include a section like the following:
|
|
29
|
+
|
|
30
|
+
```json title="package.json"
|
|
31
|
+
--8<-- "./sample-code/quickstarts/js/package.json"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Now it's time to type up the test itself. Create a new file called `test.js` with the following
|
|
35
|
+
contents:
|
|
36
|
+
|
|
37
|
+
```js title="test.js"
|
|
38
|
+
--8<-- "./sample-code/quickstarts/js/test.js"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
!!! note
|
|
42
|
+
|
|
43
|
+
It's not within the scope of this guide to give a complete run-down on the WebdriverIO client
|
|
44
|
+
library or everything that's happening here, so we'll leave the code itself unexplained in
|
|
45
|
+
detail for now. You may want to read up particularly on Appium
|
|
46
|
+
[Capabilities](../guides/caps.md) in addition to familiarizing yourself with the excellent
|
|
47
|
+
[WebdriverIO documentation](https://webdriver.io/docs/gettingstarted) for a fuller explanation
|
|
48
|
+
of the various API commands you see and what their purpose is.
|
|
49
|
+
|
|
50
|
+
!!! note
|
|
51
|
+
|
|
52
|
+
The sample code is available from [GitHub Appium repository](https://github.com/appium/appium/tree/master/packages/appium/sample-code/quickstarts/js).
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
Basically, this code is doing the following:
|
|
56
|
+
|
|
57
|
+
1. Defining a set of "Capabilities" (parameters) to send to the Appium server so Appium knows what
|
|
58
|
+
kind of thing you want to automate.
|
|
59
|
+
1. Starting an Appium session on the built-in Android settings app.
|
|
60
|
+
1. Finding the "Apps" list item and clicking it.
|
|
61
|
+
1. Pausing for a moment purely for visual effect.
|
|
62
|
+
1. Ending the Appium session.
|
|
63
|
+
|
|
64
|
+
That's it! Let's give it a try. Before you run the test, make sure that you have an Appium server
|
|
65
|
+
running in another terminal session, otherwise you'll get an error about not being able to connect
|
|
66
|
+
to one. Then, you can execute the script:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
node test.js
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If all goes well, you'll see the Settings app open up and navigate to the "Apps" view before the
|
|
73
|
+
app closes again.
|
|
74
|
+
|
|
75
|
+
Congratulations, you've started your Appium journey! Read on for some [next steps](./next-steps.md) to explore.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- toc
|
|
4
|
+
|
|
5
|
+
title: Write a Test (Python)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The [Appium Python Client](https://github.com/appium/python-client) is
|
|
9
|
+
an official Appium client in Python, which is available via pypi under the [Appium-Python-Client](https://pypi.org/project/Appium-Python-Client/) package name.
|
|
10
|
+
It inherits from the [Selenium Python Binding](https://pypi.org/project/selenium/),
|
|
11
|
+
so installing the Appium Python Client includes the selenium binding.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install Appium-Python-Client
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
This example uses Python's built-in `unittest` module, though you can use any Python test framework you want.
|
|
18
|
+
The Appium Python client adds the `appium:` vendor prefix automatically.
|
|
19
|
+
You usually do not need to worry about the prefix.
|
|
20
|
+
|
|
21
|
+
```python title="test.py"
|
|
22
|
+
--8<-- "./sample-code/quickstarts/py/test.py"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
!!! note
|
|
26
|
+
|
|
27
|
+
It's not within the scope of this guide to give a complete run-down on the Python client
|
|
28
|
+
library or everything that's happening here, so we'll leave the code itself unexplained in detail for now.
|
|
29
|
+
|
|
30
|
+
- You may want to read up particularly on Appium [Capabilities](../guides/caps.md).
|
|
31
|
+
- [functional test code](https://github.com/appium/python-client/tree/master/test/functional) in Python Client GitHub repository should help to find more working example.
|
|
32
|
+
- [Documentation](https://appium.github.io/python-client-sphinx/) also helps to find methods
|
|
33
|
+
defined in the Appium Python Client.
|
|
34
|
+
|
|
35
|
+
!!! note
|
|
36
|
+
|
|
37
|
+
The sample code is available from [GitHub Appium repository](https://github.com/appium/appium/tree/master/packages/appium/sample-code/quickstarts/py).
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Basically, this code is doing the following:
|
|
41
|
+
|
|
42
|
+
1. Defining a set of "Capabilities" (parameters) to send to the Appium server so Appium knows what
|
|
43
|
+
kind of thing you want to automate.
|
|
44
|
+
1. Starting an Appium session on the built-in Android settings app.
|
|
45
|
+
1. Finding the "Apps" list item and clicking it.
|
|
46
|
+
1. Pausing for a moment purely for visual effect.
|
|
47
|
+
1. Ending the Appium session.
|
|
48
|
+
|
|
49
|
+
That's it! Let's give it a try. Before you run the test, make sure that you have an Appium server
|
|
50
|
+
running in another terminal session, otherwise you'll get an error about not being able to connect
|
|
51
|
+
to one. Then, you can execute the script:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python test.py
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
If all goes well, you'll see the Settings app open up and navigate to the "Apps" view before the
|
|
58
|
+
app closes again.
|
|
59
|
+
|
|
60
|
+
Congratulations, you've started your Appium journey! Read on for some [next steps](./next-steps.md) to explore.
|