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,100 @@
|
|
|
1
|
+
import { DOMParser, MIME_TYPE, XMLSerializer, } from '@xmldom/xmldom';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
const domParser = new DOMParser();
|
|
4
|
+
const xmlSerializer = new XMLSerializer();
|
|
5
|
+
export const xmlToDOM = (string) => domParser.parseFromString(string, MIME_TYPE.XML_TEXT);
|
|
6
|
+
export const domToXML = (dom) => xmlSerializer.serializeToString(dom);
|
|
7
|
+
/**
|
|
8
|
+
* Get the child nodes of a Node object
|
|
9
|
+
*
|
|
10
|
+
* @param {XMLNode} domNode
|
|
11
|
+
* @returns {Array<XMLNode>} list of Nodes
|
|
12
|
+
*/
|
|
13
|
+
export function childNodesOf(domNode) {
|
|
14
|
+
if (!domNode?.hasChildNodes()) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
return _.filter(domNode.childNodes, ['nodeType', domNode.ELEMENT_NODE]);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Look up an element in the Document source using the provided path
|
|
21
|
+
*
|
|
22
|
+
* @param {string} path a dot-separated string of indices
|
|
23
|
+
* @param {XMLDocument} sourceDoc app source in Document format
|
|
24
|
+
* @returns {XMLNode} element node
|
|
25
|
+
*/
|
|
26
|
+
export function findDOMNodeByPath(path, sourceDoc) {
|
|
27
|
+
let selectedElement = childNodesOf(sourceDoc)[0] ||
|
|
28
|
+
(sourceDoc.documentElement
|
|
29
|
+
? childNodesOf(sourceDoc.documentElement)[0]
|
|
30
|
+
: null);
|
|
31
|
+
if (!selectedElement) {
|
|
32
|
+
throw new Error('No element found in document');
|
|
33
|
+
}
|
|
34
|
+
for (const index of path.split('.')) {
|
|
35
|
+
selectedElement = childNodesOf(selectedElement)[parseInt(index, 10)];
|
|
36
|
+
}
|
|
37
|
+
return selectedElement;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Look up an element in the JSON source using the provided path
|
|
41
|
+
*
|
|
42
|
+
* @param {string} path a dot-separated string of indices
|
|
43
|
+
* @param {JSONElement} sourceJSON app source in JSON format
|
|
44
|
+
* @returns {JSONElement} element details in JSON format
|
|
45
|
+
*/
|
|
46
|
+
export function findJSONElementByPath(path, sourceJSON) {
|
|
47
|
+
let selectedElement = sourceJSON;
|
|
48
|
+
for (const index of path.split('.')) {
|
|
49
|
+
selectedElement = selectedElement.children[parseInt(index, 10)];
|
|
50
|
+
}
|
|
51
|
+
return { ...selectedElement };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Translates sourceXML to JSON
|
|
55
|
+
*
|
|
56
|
+
* @param {string} sourceXML
|
|
57
|
+
* @returns {JSONElement} source in JSON format
|
|
58
|
+
*/
|
|
59
|
+
export function xmlToJSON(sourceXML) {
|
|
60
|
+
const translateRecursively = (domNode, parentPath = '', index = null) => {
|
|
61
|
+
const attributes = {};
|
|
62
|
+
if (domNode.attributes) {
|
|
63
|
+
const elementNode = domNode;
|
|
64
|
+
for (let attrIdx = 0; attrIdx < elementNode.attributes.length; ++attrIdx) {
|
|
65
|
+
const attr = elementNode.attributes.item(attrIdx);
|
|
66
|
+
if (attr) {
|
|
67
|
+
// it should be show new line character(\n) in GUI
|
|
68
|
+
attributes[attr.name] = attr.value.replace(/(\n)/gm, '\\n');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Dot Separated path of indices
|
|
73
|
+
const path = _.isNil(index)
|
|
74
|
+
? ''
|
|
75
|
+
: `${!parentPath ? '' : parentPath + '.'}${index}`;
|
|
76
|
+
return {
|
|
77
|
+
children: childNodesOf(domNode).map((childNode, childIndex) => translateRecursively(childNode, path, childIndex)),
|
|
78
|
+
tagName: domNode.nodeName,
|
|
79
|
+
attributes,
|
|
80
|
+
path,
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
const sourceDoc = xmlToDOM(sourceXML);
|
|
84
|
+
// get the first child element node in the doc. some drivers write their xml differently so we
|
|
85
|
+
// first try to find an element as a direct descended of the doc, then look for one in
|
|
86
|
+
// documentElement
|
|
87
|
+
const firstChild = childNodesOf(sourceDoc)[0] ||
|
|
88
|
+
(sourceDoc.documentElement
|
|
89
|
+
? childNodesOf(sourceDoc.documentElement)[0]
|
|
90
|
+
: null);
|
|
91
|
+
return firstChild
|
|
92
|
+
? translateRecursively(firstChild)
|
|
93
|
+
: {
|
|
94
|
+
children: [],
|
|
95
|
+
tagName: '',
|
|
96
|
+
attributes: {},
|
|
97
|
+
path: '',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=source-parsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-parsing.js","sourceRoot":"","sources":["../../src/locators/source-parsing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function registerResources(server: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,qBAAqB,MAAM,oBAAoB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAW;IACnD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource for Java template files
|
|
3
|
+
*/
|
|
4
|
+
export default function javaTemplatesResource(server) {
|
|
5
|
+
server.addResource({
|
|
6
|
+
uri: 'generate://code-with-locators',
|
|
7
|
+
name: 'Generate Code With Locators',
|
|
8
|
+
description: `Generate code for the current page with locators which was retrieved from generate_locators tool.
|
|
9
|
+
The code should be generated in the same priorty order as the locators were generated.
|
|
10
|
+
For iOS the priority order is:
|
|
11
|
+
'id',
|
|
12
|
+
'accessibility id',
|
|
13
|
+
'-ios predicate string',
|
|
14
|
+
'-ios class chain',
|
|
15
|
+
'xpath',
|
|
16
|
+
'class name',
|
|
17
|
+
For Android the priority order is:
|
|
18
|
+
'id',
|
|
19
|
+
'accessibility id',
|
|
20
|
+
'xpath',
|
|
21
|
+
'-android uiautomator',
|
|
22
|
+
'class name',
|
|
23
|
+
which follows the page factory pattern. Dont not strictly create test cases, just generate the code for locators.`,
|
|
24
|
+
mimeType: 'text/plain',
|
|
25
|
+
async load() {
|
|
26
|
+
// Return all content directly without templates object
|
|
27
|
+
return {
|
|
28
|
+
message: 'Java templates for mobile automation, use this and generate code for the current page',
|
|
29
|
+
instruction: 'Use these templates to generate code for the current page',
|
|
30
|
+
text: `
|
|
31
|
+
package templates;
|
|
32
|
+
|
|
33
|
+
import io.appium.java_client.AppiumDriver;
|
|
34
|
+
import io.appium.java_client.pagefactory.AndroidFindBy;
|
|
35
|
+
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
|
|
36
|
+
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
|
|
37
|
+
import org.openqa.selenium.WebElement;
|
|
38
|
+
import org.openqa.selenium.support.PageFactory;
|
|
39
|
+
|
|
40
|
+
import java.time.Duration;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* This class demonstrates using PageFactory with Appium for cross-platform
|
|
44
|
+
* mobile app locators using @AndroidFindBy and @iOSXCUITFindBy annotations.
|
|
45
|
+
* Example:
|
|
46
|
+
*/
|
|
47
|
+
public class locators {
|
|
48
|
+
|
|
49
|
+
// ========== LOGIN SCREEN ELEMENTS ==========
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Username input field
|
|
53
|
+
* - Android: accessibility id = "username_input"
|
|
54
|
+
* - iOS: accessibility id = "username_input"
|
|
55
|
+
*/
|
|
56
|
+
@AndroidFindBy(accessibility = "username_input")
|
|
57
|
+
@iOSXCUITFindBy(accessibility = "username_input")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
public WebElement usernameField;
|
|
61
|
+
|
|
62
|
+
@iOSXCUITFindBy(iOSNsPredicate = "name = 'IntegerB'")
|
|
63
|
+
private WebElement textField2;
|
|
64
|
+
|
|
65
|
+
@iOSXCUITFindBy(iOSClassChain = "XCUIElementTypeWindow/*/XCUIElementTypeTextField[2]")
|
|
66
|
+
private WebElement secondTextField;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Constructor that initializes the PageFactory
|
|
70
|
+
*
|
|
71
|
+
* @param driver AppiumDriver instance
|
|
72
|
+
*/
|
|
73
|
+
public locators(AppiumDriver driver) {
|
|
74
|
+
PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(10)), this);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
`,
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/resources/java/template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAW;IACvD,MAAM,CAAC,WAAW,CAAC;QACjB,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE;;;;;;;;;;;;;;;sHAeqG;QAClH,QAAQ,EAAE,YAAY;QACtB,KAAK,CAAC,IAAI;YACR,uDAAuD;YACvD,OAAO;gBACL,OAAO,EACL,uFAAuF;gBACzF,WAAW,EACT,2DAA2D;gBAC7D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CT;aACE,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/schema.d.ts
ADDED
package/dist/schema.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,QAAQ,CAAC,kEAAkE,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Simple Documentation Indexing Script
|
|
4
|
+
*
|
|
5
|
+
* This script is a simplified version for indexing Markdown documents into an in-memory vector store
|
|
6
|
+
* using LangChain's RecursiveCharacterTextSplitter and MemoryVectorStore.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* - Index a single Markdown file: npm run simple-index-docs [markdownPath] [chunkSize] [overlap]
|
|
10
|
+
* - Index all Markdown files in a directory: npm run simple-index-docs [dirPath] [chunkSize] [overlap]
|
|
11
|
+
*
|
|
12
|
+
* Examples:
|
|
13
|
+
* - npm run simple-index-docs ./my-doc.md 1000 200
|
|
14
|
+
* - npm run simple-index-docs ./src/resources 1000 200
|
|
15
|
+
*
|
|
16
|
+
* If no path is provided, it defaults to indexing all Markdown files in the src/resources directory.
|
|
17
|
+
* If a file path is provided, it will index that specific file.
|
|
18
|
+
* If a directory path is provided, it will index all Markdown files in that directory.
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Simple Documentation Indexing Script
|
|
4
|
+
*
|
|
5
|
+
* This script is a simplified version for indexing Markdown documents into an in-memory vector store
|
|
6
|
+
* using LangChain's RecursiveCharacterTextSplitter and MemoryVectorStore.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* - Index a single Markdown file: npm run simple-index-docs [markdownPath] [chunkSize] [overlap]
|
|
10
|
+
* - Index all Markdown files in a directory: npm run simple-index-docs [dirPath] [chunkSize] [overlap]
|
|
11
|
+
*
|
|
12
|
+
* Examples:
|
|
13
|
+
* - npm run simple-index-docs ./my-doc.md 1000 200
|
|
14
|
+
* - npm run simple-index-docs ./src/resources 1000 200
|
|
15
|
+
*
|
|
16
|
+
* If no path is provided, it defaults to indexing all Markdown files in the src/resources directory.
|
|
17
|
+
* If a file path is provided, it will index that specific file.
|
|
18
|
+
* If a directory path is provided, it will index all Markdown files in that directory.
|
|
19
|
+
*/
|
|
20
|
+
import * as path from 'path';
|
|
21
|
+
import * as fs from 'fs';
|
|
22
|
+
import { indexMarkdown, indexAllMarkdownFiles, } from '../tools/documentation/simple-pdf-indexer.js';
|
|
23
|
+
/**
|
|
24
|
+
* Main function to handle the documentation indexing process
|
|
25
|
+
*/
|
|
26
|
+
async function main() {
|
|
27
|
+
// Parse command line arguments
|
|
28
|
+
const args = process.argv.slice(2);
|
|
29
|
+
let markdownPath;
|
|
30
|
+
let chunkSize = 1000; // Default chunk size
|
|
31
|
+
let chunkOverlap = 200; // Default overlap
|
|
32
|
+
let indexSingleFile = false;
|
|
33
|
+
if (args.length > 0 && args[0]) {
|
|
34
|
+
markdownPath = path.resolve(process.cwd(), args[0]);
|
|
35
|
+
if (fs.existsSync(markdownPath) && fs.statSync(markdownPath).isFile()) {
|
|
36
|
+
indexSingleFile = true;
|
|
37
|
+
console.log(`Using provided file path: ${markdownPath}`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log(`Using provided directory path: ${markdownPath}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Default to submodules directory which contains the git submodules
|
|
45
|
+
markdownPath = path.resolve(process.cwd(), 'src/resources/submodules');
|
|
46
|
+
console.log(`Using default submodules directory: ${markdownPath}`);
|
|
47
|
+
}
|
|
48
|
+
if (args.length > 1 && !isNaN(Number(args[1]))) {
|
|
49
|
+
chunkSize = Number(args[1]);
|
|
50
|
+
console.log(`Using chunk size: ${chunkSize}`);
|
|
51
|
+
}
|
|
52
|
+
if (args.length > 2 && !isNaN(Number(args[2]))) {
|
|
53
|
+
chunkOverlap = Number(args[2]);
|
|
54
|
+
console.log(`Using overlap: ${chunkOverlap}`);
|
|
55
|
+
}
|
|
56
|
+
console.log('Using sentence-transformers embeddings (no API key required)');
|
|
57
|
+
console.log('Starting simplified documentation indexing process with in-memory vector store...');
|
|
58
|
+
try {
|
|
59
|
+
if (indexSingleFile) {
|
|
60
|
+
console.log(`Indexing single Markdown file: ${markdownPath}`);
|
|
61
|
+
await indexMarkdown(markdownPath, chunkSize, chunkOverlap);
|
|
62
|
+
console.log('Documentation indexing completed successfully');
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.log(`Indexing all Markdown files in directory: ${markdownPath}`);
|
|
66
|
+
const indexedFiles = await indexAllMarkdownFiles(markdownPath, chunkSize, chunkOverlap);
|
|
67
|
+
console.log(`Documentation indexing completed successfully for ${indexedFiles.length} Markdown files`);
|
|
68
|
+
}
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error('Documentation indexing failed:', error);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
main();
|
|
77
|
+
//# sourceMappingURL=simple-index-documentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-index-documentation.js","sourceRoot":"","sources":["../../src/scripts/simple-index-documentation.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EACL,aAAa,EACb,qBAAqB,GACtB,MAAM,8CAA8C,CAAC;AAEtD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,YAAoB,CAAC;IACzB,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,qBAAqB;IAC3C,IAAI,YAAY,GAAG,GAAG,CAAC,CAAC,kBAAkB;IAC1C,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtE,eAAe,GAAG,IAAI,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,oEAAoE;QACpE,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CACT,mFAAmF,CACpF,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;YAC9D,MAAM,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;YACzE,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC9C,YAAY,EACZ,SAAS,EACT,YAAY,CACb,CAAC;YACF,OAAO,CAAC,GAAG,CACT,qDAAqD,YAAY,CAAC,MAAM,iBAAiB,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Simple Documentation Query Script
|
|
4
|
+
*
|
|
5
|
+
* This script is used to test the answerAppiumQuery function
|
|
6
|
+
* by querying the indexed Markdown documentation in the in-memory vector store.
|
|
7
|
+
*
|
|
8
|
+
* Usage: npm run simple-query-docs "your query here"
|
|
9
|
+
*
|
|
10
|
+
* Example: npm run simple-query-docs "What is Appium?"
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Simple Documentation Query Script
|
|
4
|
+
*
|
|
5
|
+
* This script is used to test the answerAppiumQuery function
|
|
6
|
+
* by querying the indexed Markdown documentation in the in-memory vector store.
|
|
7
|
+
*
|
|
8
|
+
* Usage: npm run simple-query-docs "your query here"
|
|
9
|
+
*
|
|
10
|
+
* Example: npm run simple-query-docs "What is Appium?"
|
|
11
|
+
*/
|
|
12
|
+
import { answerAppiumQuery } from '../tools/documentation/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Main function to handle the documentation query process
|
|
15
|
+
*/
|
|
16
|
+
async function main() {
|
|
17
|
+
console.log('Using sentence-transformers embeddings (no API key required)');
|
|
18
|
+
console.log('Note: This script will return relevant documentation chunks without generating responses');
|
|
19
|
+
console.log('process.argv:', process.argv);
|
|
20
|
+
const args = process.argv.slice(2);
|
|
21
|
+
console.log('args:', args);
|
|
22
|
+
let query = '';
|
|
23
|
+
if (args.length > 0) {
|
|
24
|
+
query = args.join(' ');
|
|
25
|
+
console.log(`Using provided query: "${query}"`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
query = 'What is Appium and how do I get started?';
|
|
29
|
+
console.log(`No query provided, using default query: "${query}"`);
|
|
30
|
+
}
|
|
31
|
+
console.log(`Querying in-memory vector store with: "${query}"`);
|
|
32
|
+
try {
|
|
33
|
+
const result = await answerAppiumQuery({
|
|
34
|
+
query,
|
|
35
|
+
});
|
|
36
|
+
console.log('\n--- ANSWER ---\n');
|
|
37
|
+
console.log(result.answer);
|
|
38
|
+
if (result.sources && result.sources.length > 0) {
|
|
39
|
+
console.log('\n--- SOURCES ---\n');
|
|
40
|
+
result.sources.forEach((source) => {
|
|
41
|
+
console.log(`- ${source}`);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('Query failed:', error);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
main();
|
|
52
|
+
//# sourceMappingURL=simple-query-documentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-query-documentation.js","sourceRoot":"","sources":["../../src/scripts/simple-query-documentation.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CACT,0FAA0F,CAC3F,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,0CAA0C,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,4CAA4C,KAAK,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0CAA0C,KAAK,GAAG,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,KAAK;SACN,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,EAAE;gBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/server.d.ts
ADDED
package/dist/server.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { FastMCP } from 'fastmcp';
|
|
2
|
+
import registerTools from './tools/index.js';
|
|
3
|
+
import registerResources from './resources/index.js';
|
|
4
|
+
import { hasActiveSession, safeDeleteSession } from './tools/session-store.js';
|
|
5
|
+
import log from './locators/logger.js';
|
|
6
|
+
const server = new FastMCP({
|
|
7
|
+
name: 'MCP Appium',
|
|
8
|
+
version: '1.0.0',
|
|
9
|
+
instructions: 'Intelligent MCP server providing AI assistants with powerful tools and resources for Appium mobile automation',
|
|
10
|
+
});
|
|
11
|
+
registerResources(server);
|
|
12
|
+
registerTools(server);
|
|
13
|
+
// Handle client connection and disconnection events
|
|
14
|
+
server.on('connect', event => {
|
|
15
|
+
log.info('Client connected:', event.session);
|
|
16
|
+
});
|
|
17
|
+
server.on('disconnect', async (event) => {
|
|
18
|
+
log.info('Client disconnected:', event.session);
|
|
19
|
+
// Only try to clean up if there's an active session
|
|
20
|
+
if (hasActiveSession()) {
|
|
21
|
+
try {
|
|
22
|
+
log.info('Active session detected on disconnect, cleaning up...');
|
|
23
|
+
const deleted = await safeDeleteSession();
|
|
24
|
+
if (deleted) {
|
|
25
|
+
log.info('Session cleaned up successfully on disconnect.');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
log.error('Error cleaning up session on disconnect:', error);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
log.info('No active session to clean up on disconnect.');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
export default server;
|
|
37
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,GAAG,MAAM,sBAAsB,CAAC;AAEvC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC;IACzB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;IAChB,YAAY,EACV,+GAA+G;CAClH,CAAC,CAAC;AAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtB,oDAAoD;AACpD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;IAC3B,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;IACpC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,oDAAoD;IACpD,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC1C,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const logger: {
|
|
2
|
+
getLogger: (name: string) => {
|
|
3
|
+
debug: (message: string, ...args: any[]) => void;
|
|
4
|
+
info: (message: string, ...args: any[]) => void;
|
|
5
|
+
warn: (message: string, ...args: any[]) => void;
|
|
6
|
+
error: (message: string, ...args: any[]) => void;
|
|
7
|
+
trace: (message: string, ...args: any[]) => void;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
declare const _default: {
|
|
11
|
+
logger: {
|
|
12
|
+
getLogger: (name: string) => {
|
|
13
|
+
debug: (message: string, ...args: any[]) => void;
|
|
14
|
+
info: (message: string, ...args: any[]) => void;
|
|
15
|
+
warn: (message: string, ...args: any[]) => void;
|
|
16
|
+
error: (message: string, ...args: any[]) => void;
|
|
17
|
+
trace: (message: string, ...args: any[]) => void;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Mock @appium/support for Jest tests
|
|
2
|
+
// This avoids the ESM/CommonJS mismatch with uuid dependency
|
|
3
|
+
export const logger = {
|
|
4
|
+
getLogger: (name) => {
|
|
5
|
+
// Simple logger implementation for tests
|
|
6
|
+
// No-op functions that match the logger interface
|
|
7
|
+
return {
|
|
8
|
+
debug: (message, ...args) => {
|
|
9
|
+
// Silent in tests by default
|
|
10
|
+
},
|
|
11
|
+
info: (message, ...args) => {
|
|
12
|
+
// Silent in tests by default
|
|
13
|
+
},
|
|
14
|
+
warn: (message, ...args) => {
|
|
15
|
+
// Silent in tests by default
|
|
16
|
+
},
|
|
17
|
+
error: (message, ...args) => {
|
|
18
|
+
// Silent in tests by default
|
|
19
|
+
},
|
|
20
|
+
trace: (message, ...args) => {
|
|
21
|
+
// Silent in tests by default
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
// Export other commonly used utilities from @appium/support if needed
|
|
27
|
+
export default {
|
|
28
|
+
logger,
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/tests/__mocks__/@appium/support.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6DAA6D;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;QAC1B,yCAAyC;QACzC,kDAAkD;QAClD,OAAO;YACL,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE;gBACzC,6BAA6B;YAC/B,CAAC;YACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE;gBACxC,6BAA6B;YAC/B,CAAC;YACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE;gBACxC,6BAA6B;YAC/B,CAAC;YACD,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE;gBACzC,6BAA6B;YAC/B,CAAC;YACD,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE;gBACzC,6BAA6B;YAC/B,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sEAAsE;AACtE,eAAe;IACb,MAAM;CACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { describe, test, expect } from '@jest/globals';
|
|
2
|
+
import { generateAllElementLocators, } from '../locators/generate-all-locators.js';
|
|
3
|
+
describe('generateAllElementLocators', () => {
|
|
4
|
+
// Sample XML for testing
|
|
5
|
+
const sampleXML = `
|
|
6
|
+
<hierarchy>
|
|
7
|
+
<android.widget.FrameLayout resource-id="android:id/content">
|
|
8
|
+
<android.widget.LinearLayout>
|
|
9
|
+
<android.widget.TextView text="Hello World" resource-id="com.example:id/text_view" clickable="true" enabled="true" displayed="true" />
|
|
10
|
+
<android.widget.Button text="Click Me" resource-id="com.example:id/button" clickable="true" enabled="true" displayed="true" />
|
|
11
|
+
<android.widget.EditText text="" resource-id="com.example:id/edit_text" clickable="true" enabled="true" displayed="true" />
|
|
12
|
+
</android.widget.LinearLayout>
|
|
13
|
+
</android.widget.FrameLayout>
|
|
14
|
+
</hierarchy>
|
|
15
|
+
`;
|
|
16
|
+
// Sample iOS XML for testing
|
|
17
|
+
const sampleIOSXML = `
|
|
18
|
+
<hierarchy>
|
|
19
|
+
<XCUIElementTypeApplication>
|
|
20
|
+
<XCUIElementTypeWindow>
|
|
21
|
+
<XCUIElementTypeButton name="Click Me" enabled="true" visible="true" />
|
|
22
|
+
<XCUIElementTypeTextField name="Enter text" enabled="true" visible="true" />
|
|
23
|
+
<XCUIElementTypeStaticText name="Hello World" enabled="true" visible="true" />
|
|
24
|
+
</XCUIElementTypeWindow>
|
|
25
|
+
</XCUIElementTypeApplication>
|
|
26
|
+
</hierarchy>
|
|
27
|
+
`;
|
|
28
|
+
test('should return an array when given valid XML', () => {
|
|
29
|
+
// Call the function with the sample XML
|
|
30
|
+
const result = generateAllElementLocators(sampleXML, true, 'uiautomator2');
|
|
31
|
+
// Basic validation of the result
|
|
32
|
+
expect(Array.isArray(result)).toBe(true);
|
|
33
|
+
expect(result.length).toBeGreaterThan(0);
|
|
34
|
+
// Verify the structure of the returned elements
|
|
35
|
+
if (result.length > 0) {
|
|
36
|
+
const element = result[0];
|
|
37
|
+
expect(element).toHaveProperty('tagName');
|
|
38
|
+
expect(element).toHaveProperty('locators');
|
|
39
|
+
expect(element).toHaveProperty('text');
|
|
40
|
+
expect(element).toHaveProperty('contentDesc');
|
|
41
|
+
expect(element).toHaveProperty('resourceId');
|
|
42
|
+
expect(element).toHaveProperty('clickable');
|
|
43
|
+
expect(element).toHaveProperty('enabled');
|
|
44
|
+
expect(element).toHaveProperty('displayed');
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
test('should return an empty array when given invalid XML', () => {
|
|
48
|
+
// Call the function with invalid XML (just a root element with no content)
|
|
49
|
+
const result = generateAllElementLocators('<hierarchy></hierarchy>', true, 'uiautomator2');
|
|
50
|
+
// Verify the result is an empty array or at least doesn't throw an error
|
|
51
|
+
expect(Array.isArray(result)).toBe(true);
|
|
52
|
+
expect(result.length).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
test('should apply includeTagNames filter correctly', () => {
|
|
55
|
+
// Call the function with filters
|
|
56
|
+
const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
|
|
57
|
+
includeTagNames: ['android.widget.Button'],
|
|
58
|
+
});
|
|
59
|
+
// If the filter works, either the result will be empty (if no buttons found)
|
|
60
|
+
// or all elements will be buttons
|
|
61
|
+
if (result.length > 0) {
|
|
62
|
+
expect(result.every(element => element.tagName.includes('Button'))).toBe(true);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
test('should apply excludeTagNames filter correctly', () => {
|
|
66
|
+
// Call the function with excludeTagNames filter
|
|
67
|
+
const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
|
|
68
|
+
excludeTagNames: ['android.widget.Button'],
|
|
69
|
+
});
|
|
70
|
+
// Verify no Button elements are included
|
|
71
|
+
expect(result.every(element => !element.tagName.includes('Button'))).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
test('should apply minAttributeCount filter correctly', () => {
|
|
74
|
+
// Call the function with minAttributeCount filter
|
|
75
|
+
const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
|
|
76
|
+
minAttributeCount: 3,
|
|
77
|
+
});
|
|
78
|
+
// All elements should have at least 3 attributes
|
|
79
|
+
if (result.length > 0) {
|
|
80
|
+
// We can't directly check the attributes count since we only have the processed elements
|
|
81
|
+
// But we can verify that elements with fewer attributes are filtered out
|
|
82
|
+
expect(result.length).toBeLessThanOrEqual(generateAllElementLocators(sampleXML, true, 'uiautomator2').length);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
test('should handle fetchableOnly filter for Android', () => {
|
|
86
|
+
// Call the function with fetchableOnly filter
|
|
87
|
+
const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
|
|
88
|
+
fetchableOnly: true,
|
|
89
|
+
});
|
|
90
|
+
// Verify the result contains only interactable elements
|
|
91
|
+
if (result.length > 0) {
|
|
92
|
+
const interactableTags = [
|
|
93
|
+
'EditText',
|
|
94
|
+
'Button',
|
|
95
|
+
'ImageButton',
|
|
96
|
+
'CheckBox',
|
|
97
|
+
'RadioButton',
|
|
98
|
+
'Switch',
|
|
99
|
+
'ToggleButton',
|
|
100
|
+
'TextView',
|
|
101
|
+
];
|
|
102
|
+
expect(result.every(element => {
|
|
103
|
+
return (interactableTags.some(tag => element.tagName.includes(tag)) ||
|
|
104
|
+
element.clickable === true);
|
|
105
|
+
})).toBe(true);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
test('should handle fetchableOnly filter for iOS', () => {
|
|
109
|
+
// Call the function with fetchableOnly filter for iOS
|
|
110
|
+
const result = generateAllElementLocators(sampleIOSXML, true, 'xcuitest', {
|
|
111
|
+
fetchableOnly: true,
|
|
112
|
+
});
|
|
113
|
+
// Verify the result contains only interactable iOS elements
|
|
114
|
+
if (result.length > 0) {
|
|
115
|
+
const interactableTags = [
|
|
116
|
+
'XCUIElementTypeTextField',
|
|
117
|
+
'XCUIElementTypeSecureTextField',
|
|
118
|
+
'XCUIElementTypeButton',
|
|
119
|
+
'XCUIElementTypeImage',
|
|
120
|
+
'XCUIElementTypeSwitch',
|
|
121
|
+
'XCUIElementTypeStaticText',
|
|
122
|
+
'XCUIElementTypeTextView',
|
|
123
|
+
'XCUIElementTypeCell',
|
|
124
|
+
'XCUIElementTypeLink',
|
|
125
|
+
];
|
|
126
|
+
expect(result.every(element => {
|
|
127
|
+
return interactableTags.some(tag => element.tagName.includes(tag));
|
|
128
|
+
})).toBe(true);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
test('should handle clickableOnly filter correctly', () => {
|
|
132
|
+
// Call the function with clickableOnly filter
|
|
133
|
+
const result = generateAllElementLocators(sampleXML, true, 'uiautomator2', {
|
|
134
|
+
clickableOnly: true,
|
|
135
|
+
});
|
|
136
|
+
// Verify all elements are clickable
|
|
137
|
+
expect(result.every(element => element.clickable === true)).toBe(true);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=generate-all-locators.test.js.map
|