Compare commits

...
Author SHA1 Message Date
Jonathan Lipps 6742808345 chore: publish
- appium@2.14.0
 - @appium/base-driver@9.14.0
 - @appium/base-plugin@2.2.51
 - @appium/docutils@1.0.27
 - @appium/driver-test-support@0.7.2
 - @appium/eslint-config-appium-ts@1.0.1
 - @appium/execute-driver-plugin@4.0.0
 - @appium/fake-driver@5.6.0
 - @appium/fake-plugin@3.1.55
 - @appium/images-plugin@3.0.25
 - @appium/opencv@3.0.7
 - @appium/plugin-test-support@0.3.47
 - @appium/schema@0.7.1
 - @appium/support@6.0.1
 - @appium/test-support@3.1.1
 - @appium/types@0.23.0
 - @appium/universal-xml-plugin@1.0.27
2025-01-02 10:59:35 -08:00
renovate[bot] bb4ba0e52b chore(deps): update dependency @types/node to v22.10.3 (#20872)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-01 09:10:42 +00:00
renovate[bot] 990a0667e3 fix(execute-driver-plugin): update dependency webdriverio to v9.5.0 (#20871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-31 19:27:42 +00:00
renovate[bot] 389a3e83ac fix(docutils): update dependency yaml to v2.7.0 (#20870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-31 16:54:07 +00:00
renovate[bot] a034880a03 chore(deps): update eslint-related packages to v8.19.0 (#20869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-31 13:48:03 +00:00
Mykola Mokhnach 588381ecf4 test(appium): Delete obsolete todo 2024-12-31 09:46:23 +01:00
Mykola Mokhnach 3fc57a15b5 test(appium): Update Bidi over ssl test (#20868) 2024-12-31 09:44:25 +01:00
Mykola Mokhnach bbfc04026f feat(appium): Update entry point resolution logic for ESM extensions (#20866) 2024-12-30 10:44:34 +01:00
Kazuaki Matsuo c5443e9fc9 feat(fake-driver): add getWindowHandle and getWindowHandles to reduce wdio errors in CI (#20865) 2024-12-28 09:28:10 -08:00
renovate[bot] 31c6759061 chore(workflows): update peter-evans/create-pull-request action to v7.0.6 (#20862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-28 09:01:19 +00:00
renovate[bot] edd1c05d1e chore(deps): update dependency @eslint/js to v9.17.0 (#20863)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-28 09:59:34 +01:00
Edgars Eglītis 61b6689897 chore: adjust eslint-config-appium-ts related files (#20861) 2024-12-28 09:30:40 +01:00
Mykola Mokhnach 65658ccbdd fix: Reduce linter warnings (#20860) 2024-12-28 09:30:05 +01:00
Mykola Mokhnach 25ea9f73bc chore: Migrate to flat ESLint config (v9) (#20856) 2024-12-27 20:42:36 +01:00
renovate[bot] 4b3a8c2197 fix(docutils): update dependency consola to v3.3.3 (#20858)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-27 09:53:16 +00:00
renovate[bot] 24abb385e5 fix(types): update dependency type-fest to v4.31.0 (#20857)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-26 10:46:20 +00:00
renovate[bot] 861d060713 fix(docutils): update dependency consola to v3.3.1 (#20855)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-23 13:32:06 +00:00
Mykola Mokhnach c57f81d134 chore(appium): Tune BiDi logs (#20854) 2024-12-22 09:08:34 +01:00
Mykola Mokhnach 51acf54fe5 chore(appium): Move mixin BiDi-related methods into a separate module (#20852) 2024-12-21 11:02:36 +01:00
renovate[bot] aa880837da fix(docutils): update dependency consola to v3.3.0 (#20851)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-20 12:07:58 +00:00
Mykola Mokhnach af7aba492d chore(appium): Do not log all BiDi events (#20849) 2024-12-20 08:38:20 +01:00
Kazuaki Matsuo 25b8483294 docs(appium): add webSocketUrl in the docs (#20840)
* docs: add webSocketUrl in the docs
2024-12-19 23:02:52 -05:00
renovate[bot] 4474412a60 fix(execute-driver-plugin): update dependency webdriverio to v9.4.5 (#20847)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-19 12:20:12 +00:00
renovate[bot] 7c740f9b3a chore(js): update dependency webdriverio to v9 (#20832) 2024-12-18 22:00:22 +01:00
Mykola Mokhnach c765bc31e0 fix(base-driver): Return an empty object if the corresponding API response is undefined (#20845) 2024-12-18 20:28:19 +01:00
renovate[bot]andMykola Mokhnach 7abecaddd3 fix(types): update dependency type-fest to v4 (#20843)
* fix(types): update dependency type-fest to v4

* cast to string

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
2024-12-18 08:24:57 +01:00
renovate[bot] 083f7e2328 chore(docutils): update dependency mkdocs-material to v9.5.49 (#20842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 14:34:28 +00:00
renovate[bot] aaef1d6962 fix(universal-xml-plugin): update dependency fast-xml-parser to v4.5.1 (#20841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-15 13:03:08 +00:00
Mykola Mokhnach 64e768efb7 feat(appium): Add session.status BiDi command (#20839) 2024-12-14 19:41:12 +01:00
renovate[bot] a5897dd25a fix(types): update dependency type-fest to v4 (#20838)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 16:36:24 +01:00
renovate[bot] 66e3580731 chore(deps): update dependency @types/node to v22.10.2 (#20833)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-11 10:59:21 +00:00
Mykola Mokhnach 16e9f94903 feat(execute-driver-plugin): Bump webdriverio to v9 (#20824)
BREAKING CHANGE: webdriverio major version bumped to 9
2024-12-10 08:35:41 +01:00
Jonathan Lipps a917ec6ced feat(appium): allow drivers to define their own bidi commands (#20828)
* feat: allow drivers to define their own bidi commands

* docs(appium): add docs about adding custom bidi commands in drivers
2024-12-10 12:02:23 +09:00
renovate[bot] 342d6641ee chore(docutils): update dependency mkdocs-material to v9.5.48 (#20829)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-09 10:30:33 +00:00
Edgars Eglītis 04e2d1154b fix(appium): update CLI help messages (#20825)
* fix(appium): adjust some CLI output messages

* fix(appium): adjust more CLI output messages

* fix(appium): add reset command to CLI & update tests

* chore: revert name change for driver/plugin name argument
2024-12-06 20:14:24 +02:00
renovate[bot] c032352fad fix(base-driver): update dependency express to v4.21.2 (#20823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-06 10:01:24 +00:00
Mykola Mokhnach e3774ef0c0 ci(appium): Export mkdocs config to Crowdin as a plain text file (#20822) 2024-12-05 22:40:52 +01:00
Jonathan Lipps 1d16ac6b45 chore: publish
- appium@2.13.1
 - @appium/base-driver@9.13.1
 - @appium/base-plugin@2.2.50
 - @appium/docutils@1.0.26
 - @appium/driver-test-support@0.7.1
 - @appium/fake-driver@5.5.7
 - @appium/fake-plugin@3.1.54
 - @appium/images-plugin@3.0.24
 - @appium/plugin-test-support@0.3.46
 - @appium/support@6.0.0
 - @appium/test-support@3.1.0
 - @appium/types@0.22.3
 - @appium/universal-xml-plugin@1.0.26
2024-12-05 12:22:35 -08:00
Kazuaki Matsuo 6ea0830319 fix(base-driver): add * always for non-separator for backward compatibility (#20821)
* fix(base-driver): add * always for non-separator for backward compatibility

* simplify

* revert const

* add todo comment

* revert const
2024-12-05 11:49:55 -08:00
renovate[bot] 228b091edc fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.6 (#20819)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 11:10:58 +02:00
Mykola Mokhnach 81a5b57673 feat(test-support): Remove obsolete helpers (#20817) 2024-12-04 22:12:39 +01:00
Edgars Eglītis 8d94f48bc5 chore(github): adjust newlines in bug issue form (#20818) 2024-12-04 22:00:02 +02:00
Edgars Eglītis f03468a153 chore(github): update issue templates (#20816)
* chore(github): update issue templates

* chore: add back checkbox for latest component updates
2024-12-04 21:37:17 +02:00
renovate[bot] 6a78aa9cea chore(deps): update dependency eslint-import-resolver-typescript to v3.7.0 (#20815)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 14:00:00 +00:00
Edgars Eglītis 9c5407ce64 ci: add workflow to validate PR title (#20813)
* ci: add workflow to validate PR title

* ci: rerun job if title was edited
2024-12-04 13:11:34 +02:00
Mykola Mokhnach 2a99e43b88 docs(appium): Fix HTML formatting (#20814) 2024-12-04 12:05:57 +01:00
Edgars Eglītis dca88624a4 docs: update aggregate changelog (#20812) 2024-12-04 13:03:42 +02:00
renovate[bot] 69f100ad3e fix(support): update dependency axios to v1.7.9 (#20811)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 09:16:44 +01:00
renovate[bot] f5e708ac42 chore(deps): update dependency prettier to v3.4.2 (#20810)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 09:16:33 +01:00
renovate[bot] c91683f50f fix(support): update dependency teen_process to v2.2.2 (#20808)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 08:58:50 +01:00
Mykola Mokhnach 4a2bfe9418 docs(appium): Enable the documentation to be translated via Crowdin (#20800) 2024-12-04 08:33:05 +01:00
renovate[bot] 3008c0d7be chore(deps): update dependency mocha to v11 (#20798)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 08:32:08 +01:00
Mykola Mokhnach 9a3f990739 feat: Remove @appium/doctor from the monorepo (#20805) 2024-12-04 08:31:32 +01:00
Kazuaki Matsuo 16c3ae25ea chore(support): revert #20797 as a backward compatibility (#20801)
BREAKING CHANGE: revert #20797 which was used for a backward compatibility
2024-12-03 09:54:58 -08:00
renovate[bot] 93fa5ccb06 fix(docutils): update dependency lilconfig to v3.1.3 (#20803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 17:06:00 +00:00
renovate[bot] 8590432955 fix(types): update dependency type-fest to v4.30.0 (#20802)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 14:27:51 +02:00
renovate[bot] 42ef4841f9 fix(base-driver): update dependency @types/method-override to v3 (#20799)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 09:23:00 +02:00
Jonathan Lipps 8daf5e123a chore: publish
- appium@2.13.0
 - @appium/base-driver@9.13.0
 - @appium/base-plugin@2.2.49
 - @appium/doctor@2.1.15
 - @appium/docutils@1.0.25
 - @appium/driver-test-support@0.7.0
 - @appium/fake-plugin@3.1.53
 - @appium/images-plugin@3.0.23
 - @appium/plugin-test-support@0.3.45
 - @appium/support@5.1.8
 - @appium/test-support@3.0.53
 - @appium/types@0.22.2
2024-12-02 15:12:18 -08:00
Kazuaki Matsuo 3108a162ff fix{support}: keep backward compatibility for https://github.com/appium/appium/pull/2078 (#20797) 2024-12-02 14:52:40 -08:00
Mykola Mokhnach 942057d26c feat(base-driver): Allow to prefix feature names with automation names (#20793) 2024-12-02 10:51:41 +01:00
renovate[bot] 6ba31fe576 fix(types): update dependency type-fest to v4.29.1 (#20795)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 08:40:08 +02:00
renovate[bot] 7abf277ea3 chore(docutils): update dependency mkdocs-material to v9.5.47 (#20794)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 12:29:15 +00:00
Mykola Mokhnach 9aa9807b90 chore(driver-test-support): Remove stoppable utils (#20791) 2024-11-29 21:30:34 +01:00
Jonathan Lipps abc9ebb9e8 chore: publish
- appium@2.12.2
 - @appium/base-driver@9.12.2
 - @appium/base-plugin@2.2.48
 - @appium/doctor@2.1.14
 - @appium/docutils@1.0.24
 - @appium/driver-test-support@0.6.12
 - @appium/fake-driver@5.5.6
 - @appium/fake-plugin@3.1.52
 - @appium/images-plugin@3.0.22
 - @appium/plugin-test-support@0.3.44
 - @appium/support@5.1.7
 - @appium/test-support@3.0.52
 - @appium/types@0.22.1
 - @appium/universal-xml-plugin@1.0.25
2024-11-29 10:37:07 -08:00
Jonathan Lipps 522f05d25e fix(appium): correctly handle git/github install types (fix #20781) (#20788) 2024-11-29 08:47:17 -08:00
renovate[bot] 59a84424f2 fix(support): update dependency shell-quote to v1.8.2 (#20787)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 13:20:38 +00:00
renovate[bot] c82cbfeb58 chore(deps): update dependency @types/node to v22.10.1 (#20786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 09:48:38 +00:00
renovate[bot] b6aa5ace6e fix(types): update dependency type-fest to v4.29.0 (#20783)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-27 19:29:23 +02:00
renovate[bot] 6c4fd35332 chore(deps): update dependency prettier to v3.4.1 (#20780)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 22:00:53 +00:00
renovate[bot] 07d5fd1c4f chore(deps): update dependency @types/node to v22.10.0 (#20779)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 18:07:00 +00:00
renovate[bot] f9920e2c1b fix(support): update dependency axios to v1.7.8 (#20778)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 15:18:40 +00:00
renovate[bot] e22a94ea77 chore(docutils): update dependency mkdocs-material to v9.5.46 (#20777)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-26 09:54:18 +00:00
renovate[bot] a25d8f129c fix(types): update dependency type-fest to v4.28.0 (#20775)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-24 13:13:35 +02:00
renovate[bot] 8df9c63127 fix(driver-test-support): update dependency chai-as-promised to v8.0.1 (#20774)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-24 10:46:37 +00:00
renovate[bot] 760961c5eb fix(docutils): update dependency typescript to v5.7.2 (#20773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-23 13:10:09 +00:00
renovate[bot] 54b4879700 chore(deps): update dependency @types/node to v22.9.3 (#20772)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-23 09:03:08 +00:00
renovate[bot] 9cfdc8652b chore(deps): update dependency @types/mocha to v10.0.10 (#20770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-21 09:29:56 +00:00
renovate[bot] 7f99d3bdb9 chore(docutils): update dependency mkdocs-material to v9.5.45 (#20767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 14:24:30 +00:00
renovate[bot] e02608a373 chore(deps): update dependency @types/node to v22.9.1 (#20765)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 12:06:02 +00:00
renovate[bot]andMykola Mokhnach f91d8c8812 fix(appium): update dependency winston to v3.17.0 (#20736)
* fix(appium): update dependency winston to v3.17.0

* fix linter

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
2024-11-19 19:58:37 +01:00
renovate[bot] a5389e648a fix(docutils): update dependency yaml to v2.6.1 (#20762)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-19 13:39:22 +00:00
renovate[bot] d6b40797d3 fix(types): update dependency type-fest to v4.27.0 (#20754)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-15 20:00:01 +02:00
zhangxh075 22c71fa462 docs(appium): update zh commands documentation (#20753)
* Finish the translation of the index.md file

* Finish the translation of the base-driver.md file

* Finish the translation of the excute-driver-plugin.md file

* Finish the translation of the images-plugin.md file

* Finish the translation of the relaxed-caps-plugin.md file

* Finish the translation of the universal-xml-plugin.md file
2024-11-14 19:59:54 -08:00
zhangxh075 bd92186bfc docs: update zh contributing documentation (#20752)
* Finish the translation of the index.md file

* Finish the translation of the develop.md file

* Translate partial content of the config-system. md file
2024-11-14 19:58:58 -08:00
Kazuaki Matsuo c13ea56c6d docs(appium): turning migration guide (JP) (#20751)
* docs(appium): turning migration guide (JP)

* tweak more
2024-11-14 00:37:16 -08:00
Mykola Mokhnach 268b24ff83 feta(appium): Add a subcommand to reset all installed drivers and plugins (#20747) 2024-11-13 17:26:04 +01:00
Mykola Mokhnach 3696ac1d8d fix(support): Init MOCK_LOG before creating static logger instance (#20750) 2024-11-13 17:25:40 +01:00
Tomoda Kengo b0d8a4c3f4 docs(appium): Translated the migration guide to Appium2 into Japanese (#20746) 2024-11-12 23:50:32 -08:00
renovate[bot] 9c9fa612a1 fix(support): update dependency uuid to v11.0.3 (#20739)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 12:44:38 +02:00
renovate[bot] 9d21f56edb fix(doctor): update dependency appium-adb to v12.7.0 (#20738)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 09:32:17 +00:00
Mykola Mokhnach c694d7cc6f chore(appium): Bump the amount of max process listeners (#20737) 2024-11-10 19:18:57 +01:00
renovate[bot] d04665777a fix(doctor): update dependency appium-adb to v12.6.2 (#20735)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-10 09:42:35 +00:00
renovate[bot] b39cfd99e3 chore(docutils): update dependency mkdocs-redirects to v1.2.2 (#20734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-08 10:03:17 +00:00
renovate[bot] 8606bdb650 chore(deps): update dependency json-schema-to-typescript to v15.0.3 (#20733)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-08 08:47:19 +00:00
renovate[bot] e19bad2bc0 chore(deps): update dependency @types/node to v22.9.0 2024-11-06 12:20:27 +00:00
renovate[bot] 237e589b7c chore(docutils): update dependency mkdocs-material to v9.5.44 2024-11-06 10:30:05 +00:00
renovate[bot] c8d63532b8 chore(deps): update definitelytyped (#20706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 16:17:43 +02:00
renovate[bot] 0437720e36 chore(deps): update dependency @types/node to v20.17.6 2024-11-03 12:10:19 +00:00
renovate[bot] 850b095ac0 fix(support): update dependency yauzl to v3.2.0 (#20722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-03 13:37:31 +02:00
renovate[bot] 95406b603e fix(types): update dependency @types/ws to v8.5.13 2024-11-02 12:37:27 +00:00
renovate[bot] 275da089e4 fix(appium): update dependency winston to v3.16.0 2024-11-02 10:42:03 +00:00
renovate[bot] 7e19c88b79 fix(doctor): update dependency appium-adb to v12.6.1 2024-11-01 15:16:32 +00:00
renovate[bot] b167e765af chore(docutils): update dependency mkdocs-material to v9.5.43 2024-11-01 12:39:40 +00:00
renovate[bot] 522e0d5b6f chore(deps): update dependency lerna to v8.1.9 2024-11-01 10:47:06 +00:00
renovate[bot] 4953dfa655 chore(deps): update dependency @types/node to v20.17.5 2024-10-31 22:42:32 +00:00
renovate[bot] a9d4b5a30e chore(deps): update dependency mocha to v10.8.2 2024-10-31 09:52:38 +00:00
renovate[bot] 6a379c242f chore(deps): update dependency mocha to v10.8.1 2024-10-30 14:29:19 +00:00
renovate[bot] e3bce2b6be fix(driver-test-support): update definitelytyped 2024-10-30 11:27:15 +00:00
renovate[bot] 905f84faf5 fix(support): update dependency uuid to v11.0.2 (#20708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-29 12:53:34 +02:00
renovate[bot] f243787481 chore(deps): update definitelytyped 2024-10-29 09:46:46 +00:00
Jonathan Lipps e5f6cd9617 docs(appium): fix plugin building docs info re proxying (#20704) 2024-10-28 15:01:43 -07:00
renovate[bot] 805156bd8b fix(support): update dependency uuid to v11 (#20703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-28 15:47:08 +01:00
Mykola Mokhnach fdcf234e51 ci: Tune license checks on fork repositories (#20700) 2024-10-27 08:32:20 +01:00
renovate[bot] 7860c05285 fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.5 (#20699)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-26 18:34:15 +03:00
renovate[bot] d5a9e3926c chore(deps): update dependency @types/node to v20.17.1 (#20698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-26 09:20:09 +02:00
Mykola Mokhnach 4dc98932db ci: Only run FOSSA checks on the main repo (#20696) 2024-10-25 22:25:18 +02:00
zhangxh075 f548edc0d5 docs(appium): update zh cli documentation (#20697)
* Finish the translation of the index.md file

* Finish the translation of the args.md file

* Finish the translation of the env-vars.md file

* Finish the translation of the extensions.md file

* Finish the translation of the setup.md file

* Fix some errors in the document
2024-10-25 09:41:15 -07:00
Jonathan Lipps b0095bfd47 chore: publish
- appium@2.12.1
 - @appium/base-driver@9.12.1
 - @appium/base-plugin@2.2.47
 - @appium/doctor@2.1.13
 - @appium/docutils@1.0.23
 - @appium/driver-test-support@0.6.11
 - @appium/fake-plugin@3.1.51
 - @appium/images-plugin@3.0.21
 - @appium/support@5.1.6
 - @appium/test-support@3.0.51
2024-10-24 12:04:12 -07:00
renovate[bot] 15b783179d chore(deps): update dependency @types/node to v20.17.0 (#20695)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-24 09:07:03 +02:00
renovate[bot] 66ff497600 fix(driver-test-support): update dependency chai to v5.1.2 (#20693)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-23 12:34:55 +02:00
renovate[bot] 846dd52886 fix(support): update definitelytyped (#20691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-23 12:34:36 +02:00
renovate[bot] 4a896b7dc8 chore(docutils): update dependency mkdocs-git-revision-date-localized-plugin to v1.3.0 2024-10-23 10:19:07 +00:00
renovate[bot] e69f7fd1ad chore(deps): update dependency npm-run-all2 to v6.2.6 2024-10-22 14:35:49 +00:00
renovate[bot] 76cc279ad9 chore(deps): update dependency @types/node to v20.16.14 2024-10-22 09:37:20 +00:00
Jonathan Lipps bdc0bf4670 docs(appium): add appiumconf2025 banner (#20686) 2024-10-21 23:24:49 +05:30
renovate[bot] db4ed63de4 chore(docutils): update dependency mkdocs-material to v9.5.42 2024-10-20 12:26:55 +00:00
Phong Do 46278a1752 docs(appium): fix Android Studio SDK menu path (#20681) 2024-10-20 01:13:29 -07:00
renovate[bot] 958fca47c8 fix(driver-test-support): update definitelytyped 2024-10-19 13:40:38 +00:00
Edgars Eglītis 00cd1b4b0f fix(docutils): restore support for Python <3.12 (#20675)
* fix(docutils): restore support for Python <3.12

* fix(docutils): only add the pip flag when required

* chore: fix lint

* chore: tune version number validation

* chore: address review comments

* chore: use env var to handle any pip version

* chore: remove unused import

* docs: add the env variable to zh docs

* fix: pass env vars properly on Windows

* chore: improve readability
2024-10-19 00:07:30 +03:00
renovate[bot] 809477c70c chore(deps): update dependency npm-run-all2 to v6.2.4 (#20678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-18 13:15:36 +02:00
renovate[bot] 6bbb81724d chore(deps): update dependency @types/node to v20.16.12 (#20673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-17 08:10:16 +02:00
Mykola Mokhnach 4dc0a07884 chore(base-driver): Export the WebDriverProxy alias (#20672) 2024-10-17 08:09:58 +02:00
renovate[bot] 438b9da543 chore(docutils): update dependency mkdocs-material to v9.5.41 2024-10-16 12:08:41 +00:00
Jonathan Lipps de17d3762e docs(appium): turn sponsors list into full list (#20668)
* docs(appium): turn sponsors list into full list
OpenCollective generated section doesn't allow links to sponsor sites
or sponsor provided logos

* fix: testingbot no longer a sponsor
2024-10-15 13:35:53 -07:00
Jonathan Lipps e3f7bd07f7 chore: publish
- appium@2.12.0
 - @appium/base-driver@9.12.0
 - @appium/base-plugin@2.2.46
 - @appium/doctor@2.1.12
 - @appium/docutils@1.0.22
 - @appium/driver-test-support@0.6.10
 - @appium/execute-driver-plugin@3.0.36
 - @appium/fake-driver@5.5.5
 - @appium/fake-plugin@3.1.50
 - @appium/images-plugin@3.0.20
 - @appium/plugin-test-support@0.3.43
 - @appium/schema@0.7.0
 - @appium/support@5.1.5
 - @appium/test-support@3.0.50
 - @appium/types@0.22.0
 - @appium/universal-xml-plugin@1.0.24
2024-10-15 09:32:02 -07:00
renovate[bot] ed6c6dd544 fix(docutils): update dependency yaml to v2.6.0 2024-10-14 20:23:38 +00:00
renovate[bot] b56b180f34 fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.4 (#20663)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 20:59:59 +03:00
Edgars Eglītis 12969268fe docs: fix links in Appium history document (#20667) 2024-10-14 20:50:21 +03:00
zhangxh075 b312028d7e docs: update zh ecosystem documentation (#20658)
* Finish the translation of the index.md file

* Finish the translation of the drivers.md file

* Finish the translation of the clients.md file

* Finish the translation of the plugins.md file

* Finish the translation of the tools.md file
2024-10-14 20:49:24 +03:00
Edgars Eglītis 8d7cec96d8 fix(docutils): support Python 3.12+ (#20666) 2024-10-14 20:40:31 +03:00
renovate[bot] 0e443d2799 fix(support): update dependency form-data to v4.0.1 2024-10-10 14:25:36 +00:00
renovate[bot] 5c41112134 chore(docutils): update dependency mkdocs-material to v9.5.40 2024-10-10 11:03:19 +00:00
renovate[bot] dd52d04b21 fix(docutils): update dependency typescript to v5.6.3 2024-10-09 13:28:02 +00:00
renovate[bot] 0e52da4b3a fix(base-driver): update dependency express to v4.21.1 2024-10-09 09:41:17 +00:00
renovate[bot] 98eed2d13f chore(deps): update definitelytyped 2024-10-08 09:57:47 +00:00
renovate[bot] 371568da36 chore(deps): update dependency eslint-find-rules to v4.2.0 2024-10-06 13:35:49 +00:00
Mykola Mokhnach 56618886ed feat(appium): Make server graceful shutdown timeout configurable via command line args (#20641) 2024-10-05 16:14:31 +02:00
renovate[bot] ab12235483 fix(appium): update dependency winston to v3.15.0 2024-10-05 09:40:28 +00:00
renovate[bot] 08f05562c1 chore(deps): update dependency eslint-plugin-import to v2.31.0 2024-10-04 09:05:01 +00:00
Kim ArnettandKazuaki Matsuo a1d35404a2 docs(appium): add axe DevTools for Mobile drivers to Appium other drivers list: Supports accessibility testing for mobile apps (#20630)
* docs: add axe DevTools for Mobile drivers to Appium other drivers list: Supports accessibility testing for mobile apps

* Update packages/appium/docs/en/ecosystem/drivers.md

Co-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>

---------

Co-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>
2024-10-03 17:12:34 -07:00
Kazuaki Matsuo a16c4c9521 docs(appium): Remove HS from development sponsor for now (#20635)
* docs(appium): Remove HS from development sponsor for now

* remove from docs/en/index.md as well
2024-10-03 16:57:06 -07:00
renovate[bot] a2b0ba8773 fix(driver-test-support): update dependency @types/lodash to v4.17.10 2024-10-03 16:36:36 +00:00
renovate[bot] 796ca9f98f fix(execute-driver-plugin): update dependency webdriverio to v8.40.6 2024-10-03 09:16:38 +00:00
renovate[bot] 69e9abeed3 fix(types): update dependency @types/express to v5 (#20620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02 20:03:52 +03:00
renovate[bot] cabc114935 chore(docutils): update dependency mkdocs-material to v9.5.39 2024-09-29 13:09:37 +00:00
renovate[bot] aa86ef9603 chore(deps): update dependency @types/node to v20.16.10 2024-09-28 10:04:05 +00:00
Kazuaki Matsuo 656ba166e1 docs(appium): move sponsors into appium.io page (#20623)
* docs(appium): move sponsors

* modify existing page

* fix review

* use https://appium.io/docs/en/latest/sponsors/
2024-09-27 17:12:59 -07:00
renovate[bot] e8886ae0d2 fix(base-driver): update dependency path-to-regexp to v8.2.0 2024-09-26 21:13:25 +00:00
Jonathan Lipps 122a1863de chore: publish
- appium@2.11.5
 - @appium/base-driver@9.11.5
 - @appium/base-plugin@2.2.45
 - @appium/docutils@1.0.21
 - @appium/driver-test-support@0.6.9
 - @appium/execute-driver-plugin@3.0.35
 - @appium/fake-driver@5.5.4
 - @appium/fake-plugin@3.1.49
 - @appium/test-support@3.0.49
 - @appium/universal-xml-plugin@1.0.23
2024-09-26 09:27:56 -07:00
renovate[bot] 0bbd2f8a76 chore(docutils): update dependency mkdocs-material to v9.5.38 2024-09-26 12:27:38 +00:00
renovate[bot] f03816cca5 chore(deps): update dependency @types/node to v20.16.9 2024-09-26 11:24:46 +00:00
renovate[bot] e1e478cf32 chore(docutils): update dependency mkdocs-material to v9.5.37 2024-09-25 14:09:43 +00:00
renovate[bot] c799629b7d chore(deps): update definitelytyped (#20611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-25 17:07:46 +03:00
renovate[bot] 1d9821352a chore(deps): update definitelytyped 2024-09-25 11:35:20 +00:00
zhangxh075 b8b0e42f69 docs: translate some documents into Chinese (#20608)
* Finish the translation of the requirements.md file

* Finish the translation of the test-rb.md file

* Finish the translation of the test-dotnet.md file

* Translate the missing parts in test-rb.md
2024-09-25 10:18:00 +03:00
renovate[bot] 6a8f26a9cb fix(test-support): update dependency sinon to v19 (#20576) 2024-09-24 10:05:13 +02:00
renovate[bot] e65c1cdaed fix(docutils): update dependency typescript to v5.6.2 (#20556) 2024-09-24 09:45:44 +02:00
renovate[bot] da7a4fdce8 fix(driver-test-support): update definitelytyped (#20605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-24 09:39:30 +02:00
renovate[bot] f344504f15 fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.3 (#20599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-24 09:25:47 +02:00
Mykola Mokhnach f0de55da0d fix(appium): Return hostname as web socket url for BiDi if a broadcast address is assigned to the server (#20603) 2024-09-24 08:40:04 +02:00
renovate[bot] 6704491be0 chore(docutils): update dependency mkdocs-material to v9.5.36 2024-09-21 13:35:40 +00:00
Edgars Eglītis 2a68d05b4d docs: remove AppiumConf banner (#20596) 2024-09-20 09:44:34 +03:00
Edgars Eglītis 5553016582 fix(execute-driver-plugin): replace vm2 with Node's built-in vm (#20594)
* fix: replace unsafe package vm2 with Node's vm

* chore: use node: prefix
2024-09-20 08:43:26 +03:00
Edgars Eglītis 9879d9f9b8 docs: update contributing guide (#20593) 2024-09-19 19:38:14 +03:00
renovate[bot] 517828be57 chore(docutils): update dependency mkdocs-material to v9.5.35 2024-09-18 13:48:43 +00:00
renovate[bot] e791a9b30c chore(deps): update dependency eslint to v8.57.1 2024-09-18 09:01:55 +00:00
Kazuaki Matsuo c2ccc80438 docs: add submit expense capture img in payout.md 2024-09-17 23:07:39 -07:00
Jonathan Lipps a56f0f820a chore: publish
- appium@2.11.4
 - @appium/base-driver@9.11.4
 - @appium/base-plugin@2.2.44
 - @appium/doctor@2.1.11
 - @appium/docutils@1.0.20
 - @appium/driver-test-support@0.6.8
 - @appium/execute-driver-plugin@3.0.34
 - @appium/fake-driver@5.5.3
 - @appium/fake-plugin@3.1.48
 - @appium/images-plugin@3.0.19
 - @appium/opencv@3.0.6
 - @appium/plugin-test-support@0.3.42
 - @appium/support@5.1.4
 - @appium/test-support@3.0.48
 - @appium/types@0.21.3
 - @appium/universal-xml-plugin@1.0.22
2024-09-16 13:16:36 -07:00
Edgars Eglītis b88ff49f80 Revert "chore(deps): update dependency conventional-changelog-conventionalcom…" (#20581)
This reverts commit 5bde635d19.
2024-09-16 22:39:21 +03:00
renovate[bot] 5bde635d19 chore(deps): update dependency conventional-changelog-conventionalcommits to v8 (#20085)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-16 19:17:20 +03:00
Kazuaki Matsuo 175b7acc27 docs: add &random=1 in SPONSORS.md to generate a unique url as temporary (#20580) 2024-09-16 09:06:06 -07:00
renovate[bot] 507f2ba8b5 chore(deps): update dependency npm-run-all2 to v6.2.3 2024-09-15 13:17:20 +00:00
Oliver-Dang Dinh Ngoc 1ae1fe9c44 chore(docs): update config parameter when start appium server from --config-file to --config (#20579) 2024-09-15 12:06:31 +03:00
Kazuaki Matsuo c70faded35 docs: add forum example 2024-09-13 20:33:11 -07:00
renovate[bot] e922e9738c chore(deps): update dependency @types/mocha to v10.0.8 2024-09-13 14:23:09 +00:00
renovate[bot] 0899725aab chore(docutils): update dependency mkdocs-git-revision-date-localized-plugin to v1.2.9 2024-09-13 11:11:31 +00:00
Kazuaki Matsuo 62be085f95 docs: about payout (#20563)
* docs: about payout

* Update payout.md
2024-09-12 10:27:13 -07:00
renovate[bot] cb9fb9c6fe fix(base-driver): update dependency express to v4.21.0 2024-09-12 17:26:02 +00:00
renovate[bot] 82c5caf0b5 chore(deps): update dependency serve-static to v1.16.2 2024-09-12 14:50:55 +00:00
renovate[bot] bcbb8ee86e chore(deps): update dependency finalhandler to v1.3.1 2024-09-12 09:38:58 +00:00
renovate[bot] 980aa69b93 fix(test-support): update dependency sinon to v18.0.1 2024-09-11 13:40:05 +00:00
renovate[bot] 1cae549a7b fix(base-driver): update dependency path-to-regexp to v8.1.0 (#20562)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-11 12:39:01 +03:00
renovate[bot] ef163eb8df fix(base-driver): update dependency express to v4.20.0 2024-09-10 15:36:03 +00:00
renovate[bot] 8c3b3005be chore(deps): update dependency serve-static to v1.16.0 2024-09-10 12:09:30 +00:00
renovate[bot] 056baba3a0 fix(base-driver): update dependency body-parser to v1.20.3 2024-09-10 11:21:14 +00:00
renovate[bot]andMykola Mokhnach 0ee7716cf0 fix(appium): update dependency @sidvind/better-ajv-errors to v3 (#20552)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
2024-09-09 21:15:16 +02:00
renovate[bot]andKazuaki Matsuo 3d674d0085 fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.2 (#20537)
* fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.2

* wrap different type for now

* revert some redundant lines, add annotation

* Add a url to the xmldom ticket as a reference

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>
2024-09-09 15:03:34 +02:00
renovate[bot] bbe3b6c6e5 chore(docutils): update dependency mkdocs-git-revision-date-localized-plugin to v1.2.8 2024-09-09 11:06:32 +00:00
renovate[bot] 42d7ed8afe fix(doctor): update dependency appium-adb to v12.6.0 2024-09-08 10:22:15 +00:00
renovate[bot] 5b8cb76ea3 fix(types): update dependency type-fest to v4 (#20548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-08 10:52:08 +02:00
renovate[bot] d5959902bc fix(docutils): update dependency diff to v7 (#20547)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-07 20:50:08 +03:00
zhangxh075 1d066073dc docs: translate some documents into Chinese (#20545)
* Translate the sections 'Automation mapping' and 'Multi-level architecture' in 'intro/drivers.md'

* Translate the sections 'Proxy mode' in 'intro/drivers.md'

* Translate the sections 'Early Inspiration' in 'intro/history.md'

* Translate the sections 'Selenium Conference 2012' in 'intro/history.md'

* Finish the translation of the history.md file
2024-09-06 17:12:34 -07:00
renovate[bot] 048ce520d8 fix(doctor): update dependency appium-adb to v12.5.3 2024-09-06 09:05:29 +00:00
renovate[bot] 19fb9d608f chore(deps): update dependency @types/node to v20.16.5 2024-09-05 09:45:28 +00:00
renovate[bot] 38afce5ea5 chore(deps): update dependency tsd to v0.31.2 (#20535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-05 10:25:05 +03:00
renovate[bot]andMykola Mokhnach 63cb664af1 fix(base-driver): update dependency path-to-regexp to v8 (#20520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
2024-09-04 18:47:07 +02:00
renovate[bot] 51c3063194 chore(deps): update dependency finalhandler to v1.3.0 (#20532)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-04 17:46:43 +02:00
renovate[bot] 750872af47 fix(docutils): update dependency yaml to v2.5.1 2024-09-04 12:03:49 +00:00
renovate[bot] 32645ba726 chore(deps): update dependency @types/node to v20.16.4 2024-09-04 10:22:22 +00:00
renovate[bot] f5f0aa5068 fix(docutils): update dependency diff to v6 (#20525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-03 17:30:10 +03:00
renovate[bot] 00dc1eddaa chore(deps): update dependency eslint-plugin-import to v2.30.0 2024-09-03 14:05:37 +00:00
renovate[bot] 3bf1eaf5a9 chore(deps): update dependency finalhandler to v1.2.1 2024-09-03 11:18:36 +00:00
renovate[bot] 75710ab823 fix(universal-xml-plugin): update dependency fast-xml-parser to v4.5.0 2024-09-03 07:09:13 +00:00
renovate[bot] 7fe67a286a fix(support): update dependency axios to v1.7.7 2024-09-02 15:52:09 +00:00
renovate[bot] 38cc8a343f chore(docutils): update dependency mkdocs-material to v9.5.34 2024-09-02 14:08:59 +00:00
renovate[bot] 511ff11220 chore(deps): update dependency @types/node to v20.16.3 2024-09-02 11:31:57 +00:00
renovate[bot] ce36003edb chore(docutils): update dependency mkdocs to v1.6.1 2024-08-31 12:42:05 +00:00
renovate[bot] 0e51b9b8b9 chore(deps): update dependency json-schema-to-typescript to v15.0.2 2024-08-31 09:53:57 +00:00
renovate[bot]andMykola Mokhnach da3f9ff881 fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.0 (#20513)
* fix(universal-xml-plugin): update dependency @xmldom/xmldom to v0.9.0

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
2024-08-30 16:15:50 +02:00
renovate[bot] dcb6de22ea fix(execute-driver-plugin): update dependency webdriverio to v8.40.5 2024-08-29 15:45:17 +00:00
renovate[bot] 8f20c973f4 fix(types): update dependency type-fest to v4.26.0 (#20511)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-29 15:01:24 +03:00
renovate[bot] 89e8d2e4d4 chore(deps): update dependency @types/diff to v5.2.2 2024-08-29 10:48:15 +00:00
renovate[bot] b692914a95 chore(deps): update dependency @types/chai-as-promised to v8 (#20502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-29 09:55:46 +03:00
digitalvoice-nz a83f8eee9b docs(appiupm): update appiumconf banner (#20507)
Changed banner for Appium Conf to call for registrations instead of proposals
2024-08-28 19:11:19 -07:00
Mykola Mokhnach f583e99e60 chore(base-driver): Only print axios messages instead of full stacktraces (#20506) 2024-08-28 18:11:18 +02:00
renovate[bot] 21dd13e5e5 chore(deps): update definitelytyped 2024-08-28 10:28:26 +00:00
renovate[bot] 45681602c0 chore(deps): update dependency eslint-import-resolver-typescript to v3.6.3 2024-08-27 10:47:53 +00:00
Mykola Mokhnach efdb1ce6ce fix(appium): Fix the condition for secure websocket (#20497) 2024-08-27 11:00:07 +02:00
renovate[bot] b6c97cd11e chore(deps): update dependency @types/chai to v4.3.18 2024-08-26 14:46:54 +00:00
renovate[bot] fedabb1fdc fix(support): update dependency axios to v1.7.5 2024-08-24 11:11:04 +00:00
renovate[bot] 49ac8126a2 chore(docutils): update dependency mkdocs-material to v9.5.33 2024-08-23 14:56:34 +00:00
renovate[bot] 894c193150 chore(deps): update dependency json-schema-to-typescript to v15.0.1 2024-08-21 09:27:25 +00:00
renovate[bot] 688af4ddb4 chore(docutils): update dependency mkdocs-material to v9.5.32 2024-08-20 11:12:06 +00:00
renovate[bot] c8e7fa642f chore(docutils): update dependency mkdocs-git-revision-date-localized-plugin to v1.2.7 2024-08-19 12:01:47 +00:00
renovate[bot] 449dbe9a5c chore(deps): update dependency @types/node to v20.16.1 2024-08-19 10:38:48 +00:00
renovate[bot] 2468aeca60 chore(deps): update dependency @types/node to v20.16.0 2024-08-18 12:05:23 +00:00
renovate[bot] 9a66f48001 fix(types): update dependency type-fest to v4 (#20471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-17 16:17:39 +02:00
renovate[bot] ec04635925 chore(deps): update dependency @types/node to v20.15.0 2024-08-17 13:28:36 +00:00
renovate[bot] 035e30b892 chore(support): update dependency sharp to v0.33.5 (#20469)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-17 12:16:32 +03:00
renovate[bot] 893fc040e1 fix(appium): update dependency winston to v3.14.2 (#20465)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-16 17:17:50 +02:00
renovate[bot] 482a1f7bbf fix(types): update dependency type-fest to v4 (#20467)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-16 14:58:48 +02:00
renovate[bot] d17d022224 fix(support): update dependency axios to v1.7.4 2024-08-16 11:28:55 +00:00
renovate[bot] 46085635a9 fix(execute-driver-plugin): update dependency webdriverio to v8.40.3 2024-08-16 10:02:07 +00:00
renovate[bot] db28605532 fix(doctor): update dependency appium-adb to v12.5.2 2024-08-15 20:20:08 +00:00
renovate[bot] a5ea99aacd chore(docutils): update dependency mike to v2.1.3 2024-08-15 15:34:45 +00:00
renovate[bot] 880111b0ff chore(deps): update dependency mocha to v10.7.3 2024-08-15 13:17:35 +00:00
renovate[bot] d6cdd3b05f chore(deps): update definitelytyped 2024-08-15 11:10:49 +00:00
Edgars Eglītis 326942d8ac fix(renovate): adjust config for Renovate v38 (#20455) 2024-08-14 16:04:33 +03:00
Mykola Mokhnach 622b245ea3 fix(base-driver): Add a server flag to check if it operates a secure protocol (#20449) 2024-08-10 18:29:11 +02:00
renovate[bot] 5034f1afc6 chore(deps): update dependency lerna to v8.1.8 (#20441)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-09 07:45:52 +02:00
Mykola Mokhnach a97f3893e6 chore(base-driver): Print a log message if a command gets added into a non-empty waiting queue (#20447) 2024-08-09 07:45:29 +02:00
Jonathan Lipps edf2593e17 chore: publish
- appium@2.11.3
 - @appium/base-driver@9.11.3
 - @appium/base-plugin@2.2.43
 - @appium/doctor@2.1.10
 - @appium/docutils@1.0.19
 - @appium/driver-test-support@0.6.7
 - @appium/execute-driver-plugin@3.0.33
 - @appium/fake-plugin@3.1.47
 - @appium/images-plugin@3.0.18
 - @appium/logger@1.6.1
 - @appium/plugin-test-support@0.3.41
 - @appium/support@5.1.3
 - @appium/test-support@3.0.47
 - @appium/types@0.21.2
 - @appium/universal-xml-plugin@1.0.21
2024-08-07 11:20:04 -07:00
Jonathan Lipps 7a14f9f929 fix(types): commit type gen update (#20445) 2024-08-07 11:18:25 -07:00
renovate[bot] b4612e0c7a fix(execute-driver-plugin): update dependency webdriverio to v8.40.0 (#20442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-06 08:21:52 +02:00
kkb912002 8a307a078b fix(support): Allow temp dir which do not have a parent folder (#20440) 2024-08-05 10:30:25 +02:00
zhangxh075 0ffca811ce docs: translate some documents into Chinese (#20439)
* Translate part of the document in intro/appium.md

* Translate part of the document in intro/drivers.md

* Translate the 'Interface Implementations' section in the 'intro/drivers.md' file
2024-08-04 21:36:23 -07:00
Mykola Mokhnach 89f2e25a6c chore(appium): Replace fancy-log dependency with appium logger (#20434) 2024-08-02 20:00:08 +02:00
renovate[bot] 7aac098d60 chore(docutils): update dependency mkdocs-material to v9.5.31 2024-08-02 15:27:56 +00:00
renovate[bot] 32f57500e8 chore(deps): update dependency @types/node to v20.14.14 2024-08-02 12:41:29 +00:00
renovate[bot] 1ca77c6ded fix(support): update dependency axios to v1.7.3 2024-08-02 09:38:44 +00:00
renovate[bot] 92b32f8524 chore(deps): update dependency rimraf to v5.0.10 2024-08-01 12:01:09 +00:00
renovate[bot] c1c3957cb7 chore(deps): update dependency @types/chai to v4.3.17 2024-08-01 10:38:12 +00:00
Mykola Mokhnach 885570e7ca fix(support): Print an empty string if no arguments are provided to a logging function (#20424) 2024-07-31 08:23:33 +02:00
renovate[bot] 8413ccb4fa chore(deps): update eslint-related packages to v7.18.0 2024-07-30 12:16:54 +00:00
renovate[bot] 82b7515867 fix(doctor): update dependency appium-adb to v12.5.1 2024-07-30 09:33:23 +00:00
renovate[bot] 2957b8344b chore(deps): update dependency eslint-plugin-mocha to v10.5.0 2024-07-29 13:25:14 +00:00
renovate[bot] ea86eff938 chore(deps): update dependency json-schema-to-typescript to v15 (#20401)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-29 13:04:19 +02:00
renovate[bot] b98dc4f46f chore(deps): update definitelytyped (#20418)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-29 13:03:57 +02:00
renovate[bot] 61276f2e7c fix(universal-xml-plugin): update dependency fast-xml-parser to v4.4.1 2024-07-28 10:03:00 +00:00
zhangxh075 9625052d05 docs: translate some documents into Chinese (#20404)
* fixed the errors in the zh/intro/index.md file

* Translate the file located at zh\intro\appium.md

* Improve the missing menu items

* Supplement the missing documentation

* update zh/index.md file

* Keep the content of build-drivers.md

* Translate part of the document in intro/appium.md
2024-07-25 19:48:56 +03:00
renovate[bot] 0c755f503c fix(docutils): update dependency yaml to v2.5.0 2024-07-24 17:47:41 +00:00
renovate[bot] a2294fa716 chore(docutils): update dependency mkdocs-material to v9.5.30 2024-07-24 14:01:24 +00:00
renovate[bot] 32fae41c03 chore(deps): update dependency @types/node to v20.14.12 2024-07-24 11:03:31 +00:00
renovate[bot] 0e8e3c7144 fix(types): update dependency type-fest to v4.23.0 (#20396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-24 10:55:19 +03:00
renovate[bot] 96b45a85cf chore(deps): update dependency mocha to v10.7.0 2024-07-23 16:44:58 +00:00
renovate[bot] e08e7ebec2 fix(docutils): update dependency typescript to v5.5.4 2024-07-23 12:02:25 +00:00
renovate[bot] a0be939031 chore(deps): update dependency lerna to v8.1.7 2024-07-23 03:47:59 +00:00
renovate[bot] bb26085f7e chore(deps): update eslint-related packages 2024-07-23 01:21:30 +00:00
Mykola Mokhnach 75e0788784 chore(appium): Remove debug logging from the manifest class (#20393) 2024-07-17 22:06:47 +02:00
Niklas 7b3f0b5dbb docs: correct URL for selenium and w3c (#20392) 2024-07-17 19:54:09 +02:00
Kazuaki Matsuo 9eb65f7ad4 fix(base-driver): change required to option for setWindowRect to follow w3c (#20391) 2024-07-17 08:49:26 -07:00
renovate[bot] 47405dda8a fix(types): update dependency type-fest to v4.22.0 (#20387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-17 16:36:53 +03:00
renovate[bot] 5a9ab97924 fix(support): update dependency semver to v7.6.3 2024-07-17 09:54:34 +00:00
renovate[bot] 4494fad3af chore(deps): update dependency @types/node to v20.14.11 2024-07-17 08:22:44 +00:00
Kazuaki Matsuo 6a97fe48ae fix(base-driver): calls startNewCommandTimeout before returning NotYetImplementedError (#20380) 2024-07-16 00:12:44 -07:00
renovate[bot] d35ed1c8ac chore(deps): update eslint-related packages to v7.16.1 (#20381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 09:10:16 +02:00
renovate[bot] d5ef0f9c86 fix(driver-test-support): update dependency @types/lodash to v4.17.7 (#20382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 09:09:48 +02:00
Mykola Mokhnach 139dbaeef6 fix(base-driver): Start command timeout even if the recent command has thrown an exception (#20379) 2024-07-16 08:59:44 +02:00
Kazuaki Matsuo 2d7b2c4b4c chore(): define docs:publish and remove generate-docs (#20374) 2024-07-15 18:49:52 -07:00
renovate[bot] 6488a0a4e1 fix(base-driver): update dependency path-to-regexp to v7.1.0 (#20376)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-15 14:54:41 +03:00
renovate[bot] 6b9d844998 chore(docutils): update dependency mkdocs-material to v9.5.29 2024-07-15 09:53:35 +00:00
renovate[bot] 8ee816d0cf chore(deps): update dependency prettier to v3.3.3 2024-07-14 09:40:25 +00:00
renovate[bot] b1b7c33edd fix(types): update dependency @types/ws to v8.5.11 2024-07-13 13:26:39 +00:00
Srinivasan Sekar 57dc6a045d chore(docs): Add AppiumConf info in website (#20373)
* Add AppiumConf in website header

* add appium conference as blog
2024-07-13 14:34:40 +05:30
renovate[bot] 75289711ee fix(appium): update dependency ajv to v8.17.1 2024-07-13 07:14:00 +00:00
renovate[bot] b7b97a24d6 fix(doctor): update dependency appium-adb to v12.5.0 2024-07-11 14:49:13 +00:00
renovate[bot] 715942845b fix(support): update dependency glob to v10.4.5 (#20365)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-11 11:27:39 +03:00
renovate[bot] 8d79467da8 fix(logger): update dependency lru-cache to v10.4.3 (#20364)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-11 11:16:03 +03:00
renovate[bot] dcfec17d1c fix(appium): update dependency winston to v3.13.1 2024-07-11 08:06:48 +00:00
Edgars Eglītis c38e639d52 docs(appium): add more AppiumTestDistribution plugins (#20361) 2024-07-10 23:26:51 +02:00
Jonathan Lipps 74292e2292 chore: publish
- appium@2.11.2
 - @appium/base-driver@9.11.2
 - @appium/base-plugin@2.2.42
 - @appium/doctor@2.1.9
 - @appium/docutils@1.0.18
 - @appium/driver-test-support@0.6.6
 - @appium/execute-driver-plugin@3.0.32
 - @appium/fake-plugin@3.1.46
 - @appium/images-plugin@3.0.17
 - @appium/logger@1.6.0
 - @appium/opencv@3.0.5
 - @appium/plugin-test-support@0.3.40
 - @appium/strongbox@0.3.3
 - @appium/support@5.1.2
 - @appium/test-support@3.0.46
 - @appium/types@0.21.1
2024-07-10 12:39:13 -07:00
Sudharsan Selvaraj 8ccaf09877 chore(docs): Add FlutterIntegration driver to community supported driver list (#20354) 2024-07-09 17:36:44 +02:00
renovate[bot] d3d77a38df chore(deps): update dependency rimraf to v5.0.9 (#20349)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 11:32:48 +02:00
renovate[bot] 0149490522 chore(deps): update eslint-related packages to v7.16.0 (#20350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 11:32:27 +02:00
Mykola Mokhnach 16015de1b5 chore(driver-test-support): Bump chai and chai-as-promised (#20344) 2024-07-08 22:56:16 +02:00
Mykola Mokhnach b7999aed03 chore(types): Deprecate AppiumServerSocket (#20348) 2024-07-08 20:34:04 +02:00
Mykola Mokhnach 1fa8c54765 chore(base-driver): Optimize server close algorithm (#20345) 2024-07-08 14:59:43 +02:00
Mykola Mokhnach 8565209fda chore(execute-driver-plugin): Update wdio resolution (#20346) 2024-07-08 13:29:18 +02:00
Mykola Mokhnach f8819836b5 chore(base-driver): Improve the exception message (#20343) 2024-07-07 09:30:12 +02:00
Mykola Mokhnach ac912606e7 chore(base-driver): Optimize routeToCommandName logic (#20331) 2024-07-07 08:04:26 +02:00
renovate[bot] dcac55711c chore(deps): update dependency rimraf to v5.0.8 2024-07-06 15:32:00 +00:00
renovate[bot] 821ed01ae2 chore(deps): update dependency lerna to v8.1.6 2024-07-06 14:32:03 +00:00
renovate[bot] 62fe09d563 chore(deps): update dependency @types/node to v20.14.10 2024-07-06 09:53:34 +00:00
renovate[bot] 8894b9adf7 fix(types): update dependency type-fest to v4.21.0 (#20335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-05 13:58:24 +03:00
renovate[bot] 44e423110a fix(appium): update dependency ws to v8.18.0 2024-07-04 18:57:21 +00:00
renovate[bot] 41a18f3b68 chore(deps): update dependency mocha to v10.6.0 2024-07-04 16:22:07 +00:00
renovate[bot] c2f3a618e4 fix(execute-driver-plugin): update dependency webdriverio to v8.39.1 2024-07-04 13:37:24 +00:00
renovate[bot] 5ce3b0c1aa chore(deps): update dependency npm-run-all2 to v6.2.2 2024-07-04 09:17:13 +00:00
renovate[bot] 177dff4f0e fix(doctor): update dependency appium-adb to v12.4.8 2024-07-03 18:40:47 +00:00
Mykola Mokhnach e7665d1cd9 feat(logger): Use LRUCache to manage log history (#20325) 2024-07-03 19:25:21 +02:00
renovate[bot] 34b636082f chore(docutils): update dependency mkdocs-material to v9.5.28 2024-07-03 13:11:18 +00:00
renovate[bot] 06607da92e fix(support): update dependency teen_process to v2.2.0 2024-07-02 16:28:23 +00:00
renovate[bot] 9d6bbdb13e chore(deps): update eslint-related packages to v7.15.0 2024-07-02 13:25:44 +00:00
renovate[bot] 234ad59798 fix(docutils): update dependency typescript to v5.5.3 2024-07-02 10:01:42 +00:00
renovate[bot] fe1b926886 chore(deps): update dependency eslint-plugin-promise to v6.4.0 2024-07-01 11:36:46 +00:00
renovate[bot] 5281f5a01a fix(doctor): update dependency appium-adb to v12.4.6 2024-06-30 13:46:46 +00:00
renovate[bot] 86f843b9e1 fix(support): update dependency teen_process to v2.1.10 2024-06-30 09:48:08 +00:00
renovate[bot] 5226fa897b fix(support): update dependency teen_process to v2.1.7 2024-06-29 12:09:54 +00:00
Jonathan Lipps 19928e9b90 chore: publish
- appium@2.11.1
 - @appium/base-driver@9.11.1
 - @appium/base-plugin@2.2.41
 - @appium/doctor@2.1.8
 - @appium/docutils@1.0.17
 - @appium/driver-test-support@0.6.5
 - @appium/fake-plugin@3.1.45
 - @appium/images-plugin@3.0.16
 - @appium/support@5.1.1
 - @appium/test-support@3.0.45
2024-06-28 16:12:35 -07:00
renovate[bot] e43c7a4dce fix(images-plugin): update dependency lru-cache to v10.3.0 (#20306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-28 15:59:13 +03:00
renovate[bot] 82e40c1400 fix(driver-test-support): update dependency @types/lodash to v4.17.6 2024-06-28 09:50:07 +00:00
Kazuaki Matsuo f3d959ef91 fix(support): add ? in casae it does not have updateAsyncStorage function deps (#20304) 2024-06-27 23:37:50 -07:00
Jonathan Lipps e8a838417a chore: publish
- appium@2.11.0
 - @appium/base-driver@9.11.0
 - @appium/base-plugin@2.2.40
 - @appium/doctor@2.1.7
 - @appium/docutils@1.0.16
 - @appium/driver-test-support@0.6.4
 - @appium/execute-driver-plugin@3.0.31
 - @appium/fake-plugin@3.1.44
 - @appium/images-plugin@3.0.15
 - @appium/logger@1.5.0
 - @appium/plugin-test-support@0.3.39
 - @appium/support@5.1.0
 - @appium/test-support@3.0.44
 - @appium/types@0.21.0
2024-06-27 12:12:33 -07:00
renovate[bot] 9773a23b26 chore(deps): update dependency mocha to v10.5.2 2024-06-27 09:27:08 +00:00
renovate[bot] cc10b65ee5 chore(deps): update dependency json-schema-to-typescript to v14.1.0 2024-06-26 14:33:41 +00:00
renovate[bot] 530045ec53 chore(deps): update dependency @types/node to v20.14.9 2024-06-26 10:10:08 +00:00
renovate[bot] 8e0fa2c1b3 chore(deps): update eslint-related packages to v7.14.1 2024-06-25 18:27:57 +00:00
renovate[bot] d0d7548576 chore(deps): update dependency mocha to v10.5.1 2024-06-25 15:01:30 +00:00
renovate[bot] c7198b13e4 chore(deps): update dependency lerna to v8.1.5 2024-06-25 10:52:13 +00:00
renovate[bot] 4279cc6cee chore(docutils): update dependency mike to v2.1.2 2024-06-25 06:54:41 +00:00
renovate[bot] a746eefbbb fix(base-driver): update dependency path-to-regexp to v7 (#20279) 2024-06-25 08:50:56 +02:00
renovate[bot] b6de85359d chore(deps): update definitelytyped 2024-06-22 19:32:26 +00:00
Edgars Eglītis f2c8b69608 feat(appium): show extension update info message for newer major versions (#20283)
* feat(appium): add extension update info message if newer major version exists

* chore: add comment
2024-06-22 20:33:09 +03:00
Mykola Mokhnach 87fc50c2af fix(logger): Print an empty message if no arguments are provided (#20284) 2024-06-22 17:21:54 +02:00
Edgars Eglītis f25079354b feat(appium): show spinner during extension uninstall (#20282) 2024-06-22 00:05:43 +03:00
renovate[bot] 189bce88a0 fix(docutils): update dependency typescript to v5.5.2 2024-06-21 19:34:14 +00:00
renovate[bot] 15234bc055 fix(doctor): update dependency appium-adb to v12.4.4 2024-06-21 17:28:47 +00:00
renovate[bot] 073447ae4a fix(support): update dependency @types/uuid to v10 (#20280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-21 15:51:15 +03:00
renovate[bot] dd070dc51d chore(deps): update dependency @types/node to v20.14.7 2024-06-21 09:48:41 +00:00
Mykola Mokhnach 2882e71631 fix(base-driver): Check if app path is relative earlier (#20276) 2024-06-21 10:55:08 +02:00
Jonathan Lipps c106326169 docs(appium): README logos need to be fully qualified URLs (#20249)
So they should up on NPM OK.
2024-06-20 09:23:56 -07:00
renovate[bot] 5203480df6 chore(deps): update dependency @types/node to v20.14.6 2024-06-20 14:32:36 +00:00
Hans Chan 52ae52a90a docs: fix some deprecated links of w3c and android (#20272) 2024-06-20 12:39:31 +03:00
renovate[bot] d5e5186cb7 fix(support): update dependency glob to v10.4.2 (#20268)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-20 09:30:54 +03:00
renovate[bot] 541246184d fix(support): update dependency teen_process to v2.1.6 2024-06-19 09:25:11 +00:00
renovate[bot] faf9623a65 fix(execute-driver-plugin): update dependency webdriverio to v8.39.0 2024-06-18 20:36:52 +00:00
renovate[bot] bc388db111 fix(support): update dependency teen_process to v2.1.5 2024-06-18 16:58:10 +00:00
renovate[bot] bdea13130c chore(deps): update eslint-related packages to v7.13.1 2024-06-18 12:29:03 +00:00
renovate[bot] cc23c22b60 chore(deps): update dependency @types/node to v20.14.5 2024-06-18 10:06:06 +00:00
kkb912002 f675abc27b feat(appium): Improve context logging (#20250) 2024-06-18 09:55:30 +02:00
renovate[bot] 6fa0ed57ff chore(deps): update dependency tsd to v0.31.1 (#20260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-18 09:38:13 +03:00
renovate[bot] 57bbb7f46d fix(support): update dependency uuid to v10 (#20236)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 22:54:22 +02:00
renovate[bot] d2b24daba0 fix(appium): update dependency ws to v8.17.1 2024-06-17 12:23:23 +00:00
renovate[bot] 14d27fe2a4 chore(docutils): update dependency mkdocs-material to v9.5.27 2024-06-17 09:22:02 +00:00
renovate[bot] 19845531f5 fix(types): update dependency type-fest to v4.20.1 (#20255)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-16 22:21:42 +03:00
Mykola Mokhnach 3cc878d835 chore(appium): Tune logging for the log rules config issues (#20253) 2024-06-13 19:46:33 +02:00
renovate[bot] 4345a40a15 fix(doctor): update dependency appium-adb to v12.4.3 2024-06-13 12:04:45 +00:00
Jonathan Lipps 89e5f7e8db chore: publish
- appium@2.10.3
 - @appium/base-driver@9.10.3
 - @appium/base-plugin@2.2.39
 - @appium/doctor@2.1.6
 - @appium/docutils@1.0.15
 - @appium/driver-test-support@0.6.3
 - @appium/fake-plugin@3.1.43
 - @appium/images-plugin@3.0.14
 - @appium/logger@1.4.2
 - @appium/plugin-test-support@0.3.38
 - @appium/support@5.0.3
 - @appium/test-support@3.0.43
 - @appium/types@0.20.3
2024-06-11 13:02:33 -07:00
Corneliu Duplachi 9469aaef0e fix(logger): use index.d.ts for types instead of index.ts (#20247) 2024-06-11 21:18:52 +02:00
Jonathan Lipps 2b12d5974a chore: publish
- appium@2.10.2
 - @appium/base-driver@9.10.2
 - @appium/base-plugin@2.2.38
 - @appium/doctor@2.1.5
 - @appium/docutils@1.0.14
 - @appium/driver-test-support@0.6.2
 - @appium/fake-plugin@3.1.42
 - @appium/images-plugin@3.0.13
 - @appium/plugin-test-support@0.3.37
 - @appium/schema@0.6.1
 - @appium/support@5.0.2
 - @appium/test-support@3.0.42
 - @appium/types@0.20.2
2024-06-11 12:06:28 -07:00
Jonathan Lipps 45cc948671 fix(schema): edit a comment in order to trigger a publish 2024-06-11 12:05:50 -07:00
Jonathan Lipps 192f1f3793 chore: publish
- appium@2.10.1
 - @appium/base-driver@9.10.1
 - @appium/base-plugin@2.2.37
 - @appium/doctor@2.1.4
 - @appium/docutils@1.0.13
 - @appium/driver-test-support@0.6.1
 - @appium/fake-plugin@3.1.41
 - @appium/images-plugin@3.0.12
 - @appium/logger@1.4.1
 - @appium/plugin-test-support@0.3.36
 - @appium/support@5.0.1
 - @appium/test-support@3.0.41
 - @appium/types@0.20.1
2024-06-11 11:55:29 -07:00
Edgars Eglītis 5baf93672d chore(support): update changelog (#20246)
* chore: update support package changelog

* chore: update wording for changelog
2024-06-11 20:31:07 +03:00
Mykola Mokhnach c670010ec7 fix(logger): Type declaration for DEFAULT_LOG_LEVELS (#20244) 2024-06-11 18:07:59 +02:00
renovate[bot] 4a07f82cec chore(deps): update eslint-related packages to v7.13.0 2024-06-11 13:01:06 +00:00
renovate[bot] b28b524957 chore(deps): update dependency prettier to v3.3.2 2024-06-11 09:03:31 +00:00
Jonathan Lipps f40598161c chore: publish
- appium@2.10.0
 - @appium/base-driver@9.10.0
 - @appium/base-plugin@2.2.36
 - @appium/doctor@2.1.3
 - @appium/docutils@1.0.12
 - @appium/driver-test-support@0.6.0
 - @appium/fake-plugin@3.1.40
 - @appium/images-plugin@3.0.11
 - @appium/logger@1.4.0
 - @appium/plugin-test-support@0.3.35
 - @appium/schema@0.6.0
 - @appium/support@5.0.0
 - @appium/test-support@3.0.40
 - @appium/types@0.20.0
2024-06-10 16:29:53 -07:00
Jonathan LippsandEdgars Eglītis 0ddedec0c4 docs(appium): add sauce labs as strategic sponsor (#20240)
* docs(appium): add sauce labs as strategic sponsor

* Update SPONSORS.md

Co-authored-by: Edgars Eglītis <37242620+eglitise@users.noreply.github.com>

---------

Co-authored-by: Edgars Eglītis <37242620+eglitise@users.noreply.github.com>
2024-06-10 13:36:54 -07:00
Edgars Eglītis def3474b05 docs(appium): fix more image links (#20238) 2024-06-10 10:29:41 -07:00
Jonathan Lipps 1b9c1e96a3 docs(appium): fix sponsor logo image urls again 2024-06-10 09:49:27 -07:00
Jonathan Lipps e60e840316 docs(appium): fix sponsor logo image urls 2024-06-10 08:20:37 -07:00
Jonathan Lipps 6505d7921a docs(appium): fix sponsor logo image urls 2024-06-10 08:17:37 -07:00
Jonathan LippsandEdgars Eglītis def655cb39 docs(appium): add strategic partner browserstack (#20232)
* docs(appium): add strategic partner browserstack

* Partner announce (#20237)

* docs: move assets to override dir

* docs: remove copy-assets script

* docs: fix browserstack color-specific logo

---------

Co-authored-by: Edgars Eglītis <edgars.eglitis@outlook.com>

---------

Co-authored-by: Edgars Eglītis <edgars.eglitis@outlook.com>
2024-06-10 08:05:51 -07:00
renovate[bot] 1828501c66 fix(docutils): update dependency lilconfig to v3.1.2 2024-06-10 10:52:58 +00:00
renovate[bot] 6a08c95fc9 fix(docutils): update dependency yaml to v2.4.5 2024-06-09 09:03:13 +00:00
Mykola Mokhnach a156bc5bf5 chore(support): Simplify the logic for the AppiumLogger instance retrieval (#20230) 2024-06-09 08:07:52 +02:00
Mykola Mokhnach dbc3b668a0 feat(support): Move SecureValuesPreprocessor to @appum/logger (#20228)
The SecureValuesPreprocessor has been moved directly to the @appum/logger module and set as a private logger instance property.
The loadSecureValuesPreprocessingRules method is now public instance method of the Logger class. Unit tests were ported to the @appium/logger module as well.
2024-06-08 14:38:53 +02:00
renovate[bot] 69bbb5370e fix(driver-test-support): update dependency @types/lodash to v4.17.5 2024-06-08 12:03:35 +00:00
renovate[bot] ea00626091 fix(types): update dependency type-fest to v4.20.0 (#20227)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-08 13:38:47 +03:00
Mykola Mokhnach 1e86537e94 feat(appium): Add a possibility to print logs in json format (#20224) 2024-06-08 08:08:37 +02:00
Kazuaki Matsuo 93c271ec5d feat(support): remove unleakString as no usage (#20221)
BREAKING CHANGE: Remove unleakString since it is now in appium/logger
2024-06-07 17:57:13 -07:00
0363aab8ba feat(appium): Add session signature to all logs (#20202) (#20214)
* feat(appium): Add session signature to all logs (#20202) (#20214)

* test(logger): add tests for unleakString (#20222)

---------

Co-authored-by: Mykola Mokhnach <mokhnach@gmail.com>
Co-authored-by: Edgars Eglītis <37242620+eglitise@users.noreply.github.com>
2024-06-07 13:13:39 -07:00
Kazuaki Matsuo dd421b397b feat(support): Remove patchLogger from logger (#20220)
BREAKING CHANGE: Remove patchLogger exported method from logger
2024-06-07 09:44:08 -07:00
Kazuaki Matsuo 8ee7d07af4 feat(logger): Add the debug level to the default logger (#20219)
* feat(logger): Add the debug level to the default logger
2024-06-07 09:43:49 -07:00
Kazuaki Matsuo 1c19a8dbba chore(logger): update lerna to keep ISC as the license (#20217)
* chore(logger): update lerna to keep ISC as the license

* tweak sync
2024-06-07 09:43:23 -07:00
renovate[bot] 1ed646cc8f chore(docutils): update dependency mkdocs-material to v9.5.26 2024-06-07 05:50:25 +00:00
Jonathan Lipps d4ce2a82d9 chore: publish
- appium@2.9.0
 - @appium/base-driver@9.9.0
 - @appium/base-plugin@2.2.35
 - @appium/doctor@2.1.2
 - @appium/docutils@1.0.11
 - @appium/driver-test-support@0.5.0
 - @appium/fake-plugin@3.1.39
 - @appium/images-plugin@3.0.10
 - @appium/logger@1.3.0
 - @appium/plugin-test-support@0.3.34
 - @appium/support@4.5.0
 - @appium/test-support@3.0.39
 - @appium/types@0.19.2
2024-06-06 16:25:41 -07:00
Kazuaki Matsuo 40def9dbdb fix(appium): Revert changes in 20203 and 20202 (#20209)
* Revert "feat(appium): Add session signature to all logs (#20202)"

This reverts commit b3f8a47c2d.

* Revert "feat(logger): Add the 'debug' level to the default logger (#20203)"

This reverts commit 7fd9d5f626.
2024-06-06 16:17:57 -07:00
Mykola Mokhnach b3f8a47c2d feat(appium): Add session signature to all logs (#20202) 2024-06-06 22:46:52 +02:00
Jonathan Lipps 5b043cc1ab chore: publish
- appium@2.8.0
 - @appium/base-driver@9.8.1
 - @appium/base-plugin@2.2.34
 - @appium/doctor@2.1.1
 - @appium/docutils@1.0.10
 - @appium/driver-test-support@0.4.26
 - @appium/fake-plugin@3.1.38
 - @appium/images-plugin@3.0.9
 - @appium/logger@1.2.0
 - @appium/plugin-test-support@0.3.33
 - @appium/support@4.4.0
 - @appium/test-support@3.0.38
 - @appium/types@0.19.1
 - @appium/universal-xml-plugin@1.0.20
2024-06-06 13:20:24 -07:00
Edgars Eglītis 3fbc4f1fe0 fix: add logger dependencies in package.json (#20205) 2024-06-06 23:06:01 +03:00
Sudharsan Selvaraj 7492c3357e fix(universal-xml-plugin): add checks to disable the plguin in webview (#20179)
* fix(universal-xml-plugin): add checks to prevent transforming elements in webview

* Add missing tests

* Make context check to short circuit after selector validation
2024-06-06 10:25:29 -07:00
Mykola Mokhnach 7fd9d5f626 feat(logger): Add the 'debug' level to the default logger (#20203) 2024-06-06 19:21:54 +02:00
Jonathan Lipps 5f25351c9d docs(appium): fix sponsor logo image urls 2024-06-06 10:05:28 -07:00
Jonathan Lipps 339acd345f chore: publish
- appium@2.7.0
 - @appium/base-driver@9.8.0
 - @appium/base-plugin@2.2.33
 - @appium/doctor@2.1.0
 - @appium/docutils@1.0.9
 - @appium/driver-test-support@0.4.25
 - @appium/execute-driver-plugin@3.0.30
 - @appium/fake-plugin@3.1.37
 - @appium/images-plugin@3.0.8
 - @appium/logger@1.1.0
 - @appium/plugin-test-support@0.3.32
 - @appium/support@4.3.0
 - @appium/test-support@3.0.37
 - @appium/types@0.19.0
2024-06-06 09:54:55 -07:00
Mykola Mokhnach 21316e94d0 feat(base-driver): Make addition of search query params to cache optional (#20195) 2024-06-06 12:04:36 +02:00
Jonathan LippsandEdgars Eglītis 43fcc17b31 docs(appium): recognize headspin as development partner (#20191)
* docs(appium): recognize headspin as development partner

* update partner announcement branch (#20200)

* docs: make sponsor placement prettier

* docs: add margin to sponsor footer

* docs: add margin around individual sponsor images in footer

* docs: hide sponsor footer on landing page

---------

Co-authored-by: Edgars Eglītis <edgars.eglitis@outlook.com>

* partners plural

---------

Co-authored-by: Edgars Eglītis <edgars.eglitis@outlook.com>
2024-06-05 12:47:07 -07:00
renovate[bot] b1a4045bbd chore(deps): update dependency prettier to v3.3.1 2024-06-05 15:09:29 +00:00
renovate[bot] d2a8edbb7a chore(deps): update dependency @types/node to v20.14.2 2024-06-05 14:54:14 +00:00
Edgars Eglītis 6d67177e2f chore(logger): tidy up logger integration (#20194) 2024-06-05 10:27:19 +03:00
renovate[bot] db62358dba fix(types): update dependency type-fest to v4.19.0 (#20193)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-05 09:26:39 +03:00
Mykola Mokhnach 4fd6893146 fix(support): Make sure response stream is defined while stopping it (#20189) 2024-06-05 08:13:40 +02:00
Mykola Mokhnach 8915934270 feat(appium): Replace npmlog with the local fork (#20190) 2024-06-05 08:12:07 +02:00
renovate[bot] ae7f74a014 fix(appium): update dependency ajv to v8.16.0 2024-06-04 21:15:20 +00:00
renovate[bot] ea9cf8d910 chore(deps): update eslint-related packages to v7.12.0 2024-06-04 18:53:20 +00:00
Kazuaki Matsuo 70449cd077 feat(logger): add packages/logger package from npmlog (#20161)
* feat: move logger into appium/logger

* add logger in tsconfig.json

* add smoke with loading the index.js

* modify files to fit other modules

* refer to @appium/logger

* update with npm run sync-pkgs and a few

* cleanup changelog and package-lock.json

* update smoke

* pin deps

* adjust tsconfig.json with others

* Update README.md

* update license

* update license

* Update LICENSE

* fix review
2024-06-04 09:12:27 -07:00
Jonathan Lipps 65c47acf59 fix(appium): ensure ws close code is valid (#20178) 2024-06-04 07:46:16 -07:00
renovate[bot] 96a7a3f23b fix(support): update dependency teen_process to v2.1.4 2024-06-04 14:02:01 +00:00
renovate[bot] c8f997973c fix(execute-driver-plugin): update dependency webdriverio to v8.38.2 2024-06-04 11:27:38 +00:00
renovate[bot] bea47aacca fix(doctor): update dependency appium-adb to v12.4.2 2024-06-04 06:22:57 +00:00
renovate[bot] 10e5b37211 chore(deps): update dependency @types/node to v20.14.1 2024-06-04 06:05:50 +00:00
Kazuaki Matsuo 459f0a34b2 docs(appium): add icons by opencollevtive in sponsors (#20170)
* docs: add svg by opencollevtive to add icons

* Update SPONSORS.md
2024-06-03 14:11:00 -07:00
renovate[bot] 4c15dc6e5d chore(deps): update dependency @types/node to v20.14.0 2024-06-03 15:05:34 +00:00
renovate[bot] 848eb00afb fix(docutils): update dependency yaml to v2.4.3 2024-06-03 13:14:51 +00:00
renovate[bot] de8b1c97dc chore(deps): update dependency json-schema-to-typescript to v14.0.5 2024-06-03 11:00:57 +00:00
renovate[bot] 092ebb2a69 chore(deps): update dependency prettier to v3.3.0 2024-06-02 09:13:49 +00:00
renovate[bot] dddc4aa8c0 chore(deps): update dependency @types/node to v20.13.0 2024-06-01 07:26:37 +00:00
renovate[bot] 425d3eac1d chore(docutils): update dependency mkdocs-git-revision-date-localized-plugin to v1.2.6 2024-06-01 05:35:41 +00:00
renovate[bot] 57b0406a33 fix(support): update dependency @types/which to v3 (#20164)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-31 13:28:10 +02:00
renovate[bot] e3e1757c56 fix(doctor): update dependency appium-adb to v12.4.1 2024-05-31 11:07:08 +00:00
renovate[bot] 17e271afff chore(deps): update dependency @types/node to v20.12.13 2024-05-30 07:53:34 +00:00
renovate[bot] 7718cd01d1 chore(deps): update eslint-related packages to v7.11.0 2024-05-28 12:21:51 +00:00
444 changed files with 21734 additions and 21717 deletions
-9
View File
@@ -1,9 +0,0 @@
**/coverage/**
**/node_modules/**
examples/javascript-wd
**/build/**
**/*.min.js
sample-code
**/build-fixtures/**
packages/appium/docs/**/assets/**
packages/appium/docs/**/js/**
-62
View File
@@ -1,62 +0,0 @@
{
"extends": ["@appium/eslint-config-appium-ts"],
"overrides": [
{
"files": "packages/fake-driver/**/*",
"rules": {"require-await": "off"}
},
{"files": "packages/support/**/*", "globals": {"BigInt": "readonly"}},
{
"files": "packages/*/test/**/*",
"rules": {"func-names": "off"}
},
{
"files": [
"packages/appium/support.js",
"packages/appium/driver.js",
"packages/appium/plugin.js"
],
"parserOptions": {
"sourceType": "script"
}
},
{
"files": [
"./test/setup.js",
"./**/scripts/**/*.js",
"./packages/*/index.js",
"./packages/docutils/bin/appium-docs.js"
],
"rules": {
"@typescript-eslint/no-var-requires": "off"
},
"parserOptions": {
"sourceType": "script"
}
},
{
"files": "./packages/*/test/**/*.js",
"rules": {
"@typescript-eslint/no-var-requires": "off",
"no-restricted-properties": [
"error",
{
"object": "sinon",
"property": "spy",
"message": "Use `sandbox = sinon.createSandbox()` and `sandbox.spy()` instead. Don't forget to call `sandbox.restore()` in `afterEach`"
},
{
"object": "sinon",
"property": "stub",
"message": "Use `sandbox = sinon.createSandbox()` and `sandbox.stub()` instead. Don't forget to call `sandbox.restore()` in `afterEach`"
},
{
"object": "sinon",
"property": "mock",
"message": "Use `sandbox = sinon.createSandbox()` and `sandbox.mock()` instead. Don't forget to call `sandbox.restore()` in `afterEach`"
}
]
}
}
]
}
+1 -3
View File
@@ -24,9 +24,7 @@ targets:
- type: npm
path: ./packages/base-driver
- type: npm
path: ./packages/doctor
- type: npm
path: ./packages/eslint-config-appium
path: ./packages/eslint-config-appium-ts
- type: npm
path: ./packages/fake-driver
- type: npm
+82 -63
View File
@@ -1,51 +1,97 @@
name: 🐞 Bug Report
description: File a new bug report
title: 'bug: <title>'
description: Create a new bug report.
title: '🐞 bug: <title>'
labels: [Bug, Needs Triage]
body:
- type: markdown
attributes:
value: ':stop_sign: _For support questions, please visit [http://discuss.appium.io](http://discuss.appium.io) instead._'
value: ':stop_sign: _Make sure you are reporting an issue. For general questions, please use [http://discuss.appium.io](http://discuss.appium.io)._'
- type: checkboxes
attributes:
label: 'Do I have the most recent component updates?'
description: 'Appium 1-related issues are going to be ignored as this version has reached its end of life.'
options:
- label: 'I use the most recent available driver/plugin and server versions'
required: true
- type: checkboxes
attributes:
label: 'Is the component officially supported by the Appium team?'
description: 'Make sure you report an issue for a component which is officially supported/maintained by the Appium team.'
options:
- label: 'I have verified the component repository is present under the Appium organization in GitHub'
required: true
- type: checkboxes
attributes:
label: 'Is there an existing issue for this?'
label: Is there an existing issue for this?
description: 'Please [search :mag: the issues](https://github.com/appium/appium/issues) to check if this bug has already been reported.'
options:
- label: 'I have searched the existing issues'
- label: I have searched the existing issues
required: true
- type: textarea
- type: input
attributes:
label: 'Current Behavior'
description: 'Describe the problem you are experiencing. **Please do not paste your logs here.** Screenshots are welcome.'
label: Appium Version
description: What Appium server version are you running?
placeholder: Output of `appium --version`
validations:
required: true
- type: textarea
attributes:
label: 'Expected Behavior'
description: 'Describe what you expect to happen instead.'
validations:
required: true
- type: textarea
attributes:
label: 'Minimal Reproducible Example'
description: |
Please provide a the _smallest, complete code snippet_ that Appium's maintainers can run to reproduce the issue ([read more about what this entails](https://stackoverflow.com/help/minimal-reproducible-example)). Failing this, any sort of reproduction steps are better than nothing!
An easy way to get started is to copy [sample code](https://github.com/appium/appium/tree/master/packages/appium/sample-code) and modify it accordingly.
- type: dropdown
attributes:
label: Appium Host Type
description: |
How is your Appium server being hosted? For options other than "Command Line", please add more details under "Further Information".
options:
- Command Line
- Virtual Machine/Docker
- Cloud Provider (e.g. BrowserStack/Sauce Labs)
- Other
validations:
required: true
- type: input
attributes:
label: Are you using Appium components not maintained by the Appium team?
description: Refer to the [Appium Ecosystem](http://appium.io/docs/en/latest/ecosystem/) page for officially-supported components.
placeholder: Please provide the names of any third-party components.
- type: checkboxes
attributes:
label: Is this issue reproducible using the latest components?
description: |
You can retrieve the latest server/driver/plugin version number by running `npm info <package-name> version`. If you are not up to date, please try to reproduce your issue after updating all affected components.
options:
- label: I confirm the issue is still reproducible with the latest component versions
- type: textarea
attributes:
label: Current Behavior
description: Describe the problem you are experiencing. **Please do not paste your logs here.** Screenshots are welcome.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Describe what you expect to happen instead.
validations:
required: true
- type: input
attributes:
label: Appium Log
description: |
Please create a [Gist](https://gist.github.com) with your _full_ Appium server log and link it here. Alternatively, you can directly attach your logfile in the "Further Information" field below.
:warning: _Remember to redact or remove any sensitive information!_
placeholder: 'https://gist.github.com/...'
- type: textarea
attributes:
label: Environment Details
description: |
Please provide additional information about your environment; feel free to remove any items which are not relevant.
:warning: _Remember to redact or remove any sensitive information!_
value: |
- Debug details (`appium --show-debug-info`):
- Last component version(s) which did _not_ exhibit the problem:
- Platform and version of device under test:
- Real device or emulator/simulator:
- type: textarea
attributes:
label: Minimal Reproducible Example
description: |
Please provide [the smallest, complete code snippet](https://stackoverflow.com/help/minimal-reproducible-example) that Appium's maintainers can run to reproduce the issue. An easy way to get started is to copy [sample code](https://github.com/appium/appium/tree/master/packages/appium/sample-code) and modify it accordingly. Failing this, any sort of reproduction steps are better than nothing!
If the result is more than a screenful of text _or_ requires multiple files, please:
@@ -54,39 +100,12 @@ body:
- Provide a link to a new or existing public repository exhibiting the issue
validations:
required: true
- type: textarea
attributes:
label: 'Environment'
description: 'Please provide the following information about your environment; feel free to remove any items which are not relevant.'
value: |
- Operating system:
- Appium server version (output of `appium --version`):
- Appium driver(s) and their version(s) (`appium driver list`):
- Appium plugin(s) and their version(s) (`appium plugin list`):
- Node.js version (output of `node --version`):
- `npm` version (output of `npm --version`):
- Last component(s) version which did _not_ exhibit the problem:
- Platform and version under test:
- Real device or emulator/simulator:
validations:
required: false
- type: input
attributes:
label: 'Link to Appium Logs'
description: |
Create a [Gist](https://gist.github.com)—which contains your _full_ Appium logs—and link it here. Alternatively, you can attach a logfile to this issue (drag it into the "Further Information" field below).
:warning: _Remember to redact or remove any sensitive information!_
placeholder: 'https://gist.github.com/...'
- type: textarea
attributes:
label: Further Information
description: |
Links? References? Anything that will give us more context about the issue you are encountering!
description: If needed, please provide additional information about your issue (attachments, links, references, etc.).
_Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in._
validations:
required: false
- type: markdown
attributes:
value: ':stop_sign: _For support questions, please visit [http://discuss.appium.io](http://discuss.appium.io) instead._'
value: ':stop_sign: _Make sure you are reporting an issue. For general questions, please use [http://discuss.appium.io](http://discuss.appium.io)._'
+1 -1
View File
@@ -2,4 +2,4 @@ blank_issues_enabled: true
contact_links:
- name: ❓ Question
url: https://discuss.appium.io/
about: Please use the Appium forum for questions
about: Please use the Appium forum for any questions.
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[Feat]:"
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
@@ -0,0 +1,33 @@
name: 💡 Feature Request
description: Suggest an idea for this project.
title: "💡 feat: <title>"
labels: [Enhancement]
body:
- type: textarea
attributes:
label: Is your feature request related to a problem?
description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...].
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like.
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Describe alternatives you've considered.
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
validations:
required: false
+1 -1
View File
@@ -16,7 +16,7 @@ _Put an `x` in the boxes that apply_
_Put an `x` in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code._
- [ ] I have read the [CONTRIBUTING](https://github.com/appium/appium/blob/master/CONTRIBUTING.md) doc
- [ ] I have read the [Contributing Guide](https://appium.io/docs/en/latest/contributing/)
- [ ] I have signed the CLA
- [ ] Lint and unit tests pass locally with my changes
- [ ] I have added tests that prove my fix is effective or that my feature works
+15 -20
View File
@@ -48,26 +48,11 @@ labels:
matcher:
files: ['packages/base-driver/**']
- label: '@appium/eslint-config-appium'
sync: true
matcher:
files: ['packages/eslint-config-appium/**']
- label: '@appium/eslint-config-appium-ts'
sync: true
matcher:
files: ['packages/eslint-config-appium-ts/**']
- label: '@appium/base-plugin'
sync: true
matcher:
files: ['packages/base-plugin/**']
- label: '@appium/doctor'
sync: true
matcher:
files: ['packages/doctor/**']
- label: '@appium/docutils'
sync: true
matcher:
@@ -78,6 +63,11 @@ labels:
matcher:
files: ['packages/driver-test-support/**']
- label: '@appium/eslint-config-appium-ts'
sync: true
matcher:
files: ['packages/eslint-config-appium-ts/**']
- label: '@appium/execute-driver-plugin'
sync: true
matcher:
@@ -98,6 +88,11 @@ labels:
matcher:
files: ['packages/images-plugin/**']
- label: '@appium/logger'
sync: true
matcher:
files: ['packages/logger/**']
- label: '@appium/opencv'
sync: true
matcher:
@@ -123,6 +118,11 @@ labels:
matcher:
files: ['packages/support/**']
- label: '@appium/strongbox'
sync: true
matcher:
files: ['packages/strongbox/**']
- label: '@appium/test-support'
sync: true
matcher:
@@ -142,8 +142,3 @@ labels:
sync: true
matcher:
files: ['packages/universal-xml-plugin/**']
- label: '@appium/strongbox'
sync: true
matcher:
files: ['packages/strongbox/**']
+3
View File
@@ -42,6 +42,9 @@ on:
- '!**/sample-code/**'
- '!packages/*/docs/**'
env:
CI: true
permissions:
contents: read
@@ -0,0 +1,38 @@
# Retrieves non-English translations from Crowdin and creates a PR with new changes
name: Sync Crowdin Docs Translations
on:
workflow_dispatch:
# TODO: Uncomment the scheduler as soon as we have existing translations
# imported to Crowdin
# schedule:
# - cron: 0 0 * * 0
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js LTS
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Crowdin Sync
run: npm run crowdin-sync-docs-translations
env:
# appium-documentation
CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_DOCS_PROJECT_ID }}
CROWDIN_TOKEN: ${{ secrets.CROWDIN_DOCS_TOKEN }}
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7.0.6
with:
token: ${{ github.token }}
commit-message: 'docs(appium): Update documentation translations'
title: 'docs(appium): Update documentation translations'
branch: crowdin-sync-${{ github.run_id }}
body: 'Automated Update of Documentation Translations: https://crowdin.com/project/appium-documentation'
@@ -0,0 +1,31 @@
# Updates Crowdin with any changes in document files in English
name: Update Crowdin English Docs
on:
push:
branches: [master]
paths:
- 'packages/appium/docs/en/**.md'
- 'packages/appium/docs/mkdocs-en.yml'
- '.github/workflows/crowdin-update-docs-resources.yml' # this file
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js LTS
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Crowdin Update
run: npm run crowdin-update-docs
env:
# appium-documentation
CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_DOCS_PROJECT_ID }}
CROWDIN_TOKEN: ${{ secrets.CROWDIN_DOCS_TOKEN }}
+1 -1
View File
@@ -44,7 +44,7 @@ jobs:
useRollingCache: true
install-command: npm ci
- name: Install dependencies (Python)
run: pip install -r packages/docutils/requirements.txt
run: PIP_BREAK_SYSTEM_PACKAGES=1 pip install -r packages/docutils/requirements.txt
- name: Configure Git User
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
+10 -5
View File
@@ -10,6 +10,8 @@ jobs:
fossa-check:
name: Run FOSSA Analysis
runs-on: ubuntu-latest
env:
FOSSA_API_KEY: ${{secrets.FOSSA_API_KEY}}
steps:
- uses: actions/checkout@v4
with:
@@ -17,10 +19,13 @@ jobs:
- name: Install dependencies
uses: bahmutov/npm-install@v1
- name: Install fossa-cli
run: ./scripts/install-fossa.sh -d
run: |
curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install-latest.sh | bash
- name: Run FOSSA analysis
run: |
fossa analyze
fossa test
env:
FOSSA_API_KEY: ${{secrets.FOSSA_API_KEY}}
if [ -n "$FOSSA_API_KEY" ]; then
fossa analyze
fossa test
else
echo "License checks did not run. FOSSA_API_KEY is not defined for this fork."
fi
+15
View File
@@ -0,0 +1,15 @@
name: Conventional Commits
on:
pull_request:
types: [opened, edited, synchronize, reopened]
jobs:
conventional:
name: PR Title
runs-on: ubuntu-latest
steps:
- uses: beemojs/conventional-pr-action@v3
with:
config-preset: angular
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
useRollingCache: true
install-command: npm ci
- name: Install dependencies (Python)
run: pip install -r packages/docutils/requirements.txt
run: PIP_BREAK_SYSTEM_PACKAGES=1 pip install -r packages/docutils/requirements.txt
- name: Publish docs
run: |
cd packages/appium
+4
View File
@@ -37,6 +37,9 @@ certificate.key
*.pdb
.vs
#vscode
.history
old
.tern-project
coverage
@@ -60,5 +63,6 @@ appium.zip
**/build-fixtures/**
*.tsbuildinfo
packages/*/LICENSE
\!packages/*/LICENSE
local_appium_home
*.tgz
+1 -1
View File
@@ -3,7 +3,7 @@
'use strict';
module.exports = {
require: [require.resolve('./test/setup.js')],
require: ['ts-node/register'],
// forbids use of .only() in CI
forbidOnly: Boolean(process.env.CI),
color: true,
+4 -1
View File
@@ -1,6 +1,9 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>appium/appium//renovate/default"],
"schedule": ["after 10pm and before 5:00am"],
"schedule": [
"after 10pm",
"before 5:00am"
],
"timezone": "America/Vancouver"
}
+21 -13
View File
@@ -1,36 +1,44 @@
# Aggregate Changelog
Appium contains many different modules and supports a variety of drivers, plugins and clients, most of which have their own changelogs. Links to these individual changelogs are aggregated here.
The Appium monorepo contains many different modules and supports a variety of drivers, plugins and clients,
most of which have their own changelogs. Links to these individual changelogs are aggregated here.
## Main Appium Module
* ### [Appium 2.0 Changelog](packages/appium/CHANGELOG.md)
* ### [Appium 2 Changelog](packages/appium/CHANGELOG.md)
* [Appium 1.x Changelog](https://github.com/appium/appium/blob/1.x/CHANGELOG.md)
## Appium Drivers / Clients / Plugins
* Refer to the [Appium Ecosystem](https://appium.io/docs/en/latest/ecosystem/) page for links to specific driver/client/plugin documentation
* Changelogs for plugins maintained by Appium Team are also linked in the Other Modules section below
## Drivers / Clients
Refer to the [Appium Ecosystem](https://appium.io/docs/en/latest/ecosystem/) page for links
to driver/client documentation
## Other Appium Modules
## Plugins
* [execute-driver-plugin](packages/execute-driver-plugin/CHANGELOG.md)
* [images-plugin](packages/images-plugin/CHANGELOG.md)
* [relaxed-caps-plugin](packages/relaxed-caps-plugin/CHANGELOG.md)
* [universal-xml-plugin](packages/universal-xml-plugin/CHANGELOG.md)
## Other Modules
* [base-driver](packages/base-driver/CHANGELOG.md)
* [base-plugin](packages/base-plugin/CHANGELOG.md)
* [doctor](packages/doctor/CHANGELOG.md)
* [docutils](packages/docutils/CHANGELOG.md)
* [driver-test-support](packages/driver-test-support/CHANGELOG.md)
* [eslint-config-appium](packages/eslint-config-appium/CHANGELOG.md)
* [eslint-config-appium-ts](packages/eslint-config-appium-ts/CHANGELOG.md)
* [execute-driver-plugin](packages/execute-driver-plugin/CHANGELOG.md)
* [fake-driver](packages/fake-driver/CHANGELOG.md)
* [fake-plugin](packages/fake-plugin/CHANGELOG.md)
* [images-plugin](packages/images-plugin/CHANGELOG.md)
* [logger](packages/logger/CHANGELOG.md)
* [opencv](packages/opencv/CHANGELOG.md)
* [plugin-test-support](packages/plugin-test-support/CHANGELOG.md)
* [relaxed-caps-plugin](packages/relaxed-caps-plugin/CHANGELOG.md)
* [schema](packages/schema/CHANGELOG.md)
* [strongbox](packages/strongbox/CHANGELOG.md)
* [support](packages/support/CHANGELOG.md)
* [test-support](packages/test-support/CHANGELOG.md)
* [tsconfig](packages/tsconfig/CHANGELOG.md)
* [typedoc-plugin-appium](packages/typedoc-plugin-appium/CHANGELOG.md)
* [types](packages/types/CHANGELOG.md)
* [universal-xml-plugin](packages/universal-xml-plugin/CHANGELOG.md)
## Removed Modules
The changelog links used for these modules lead to the last version of their changelog file.
* [doctor](https://github.com/appium/appium/blob/8daf5e123ac14c8325acf504fb33eb28e1a3dd78/packages/doctor/CHANGELOG.md) ([removal PR](https://github.com/appium/appium/pull/20805))
* [eslint-config-appium](https://github.com/appium/appium/blob/4b3a8c2197a587ec5a2606b662e4e7667a7852cb/packages/eslint-config-appium/CHANGELOG.md) ([removal PR](https://github.com/appium/appium/pull/20856))
* [gulp-plugins](https://github.com/appium/appium/blob/0823f0b60e40395cd1dc3b72cfa3c0092bc81302/packages/gulp-plugins/CHANGELOG.md) ([removal PR](https://github.com/appium/appium/pull/17943))
* [typedoc-plugin-appium](https://github.com/appium/appium/blob/d6204b6902074210943d7bbbf72d139b9b170a20/packages/typedoc-plugin-appium/CHANGELOG.md) ([removal PR](https://github.com/appium/appium/pull/19465))
-63
View File
@@ -1,63 +0,0 @@
# Contributing to Appium
There are a lot of different ways to contribute to Appium. See below for
everything you can do and the processes to follow for each contribution method.
Note that no matter how you contribute, your participation is governed by our
[Code of Conduct](CONDUCT.md).
### Make changes to the Appium code or docs
Fork the project, make a change, and send a pull request! Please have a look at
our [Style Guide](/docs/en/contributing-to-appium/style-guide.md) before
getting to work. Please make sure the unit and functional tests pass before
sending a pull request; for more information on how to run tests, keep reading!
Make sure you read and follow the setup instructions in the README first. And note
that all participation in the Appium community (including code submissions) is
governed by our [Code of Conduct](CONDUCT.md). Then, have a look at our
[running from source doc](/docs/en/contributing-to-appium/appium-from-source.md) for more
information on how to get set up to run tests and start slinging code.
You will probably also want to have a look at this more in-depth [Developer's
Overview](/docs/en/contributing-to-appium/developers-overview.md) of the Appium
project, how Appium is architected, how to make changes to modules, and so on.
Finally, before we accept your code, you will need to have signed our
[Contributor License
Agreement](https://cla.js.foundation/appium/appium).
### Become an Appium Triager
You can help us manage our issue tracker! All you need is enough familiarity
with Appium to try and reproduce bugs. We triage issues by having conversations
with the issue creator and then either closing the issue or moving it into the
[Bugs](https://github.com/appium/appium/milestones/Bugs) or
[Features](https://github.com/appium/appium/milestones/Features) milestone. We
use these buckets as the backlogs for our upcoming releases.
We use this "algorithm" for triaging issues, which anyone can jump in and follow:
1. If issue is a feature request, discuss amongst Appium devs.
* If we decide to build it, add to the Features milestone.
* If we decide not to build it, just close.
2. If issue is a bug report, attempt to verify
* If it's a duplicate, close with link to bug already reported.
* If it ultimately can't be verified, close until we have enough information to verify (e.g., in most cases we need a full set of Appium logs to help diagnose an issue).
* If the user hasn't provided enough information, keep asking for enough information to verify.
* If it's a verified new bug, add it to the Bugs milestone.
* If we have been waiting for a reply from the user for over 3 weeks, close.
If you're interested in joining our triage rotation, contact
[@jlipps](https://github.com/jlipps) or
[@imurchie](https://github.com/imurchie).
### Help out on our forums
We can always use help on our forums at
[discuss.appium.io](https://discuss.appium.io)! Hop on over and see if there
are any questions that you can answer.
### Submit bug reports or feature requests
Just use the GitHub issue tracker to submit your bug reports and feature
requests. If you are submitting a bug report, please follow the [issue template](https://github.com/appium/appium/issues/new).
+5 -6
View File
@@ -67,10 +67,9 @@ significant contributions to the project but are no longer actively committing.
### Other Contributors
Other, less formal, kinds of contribution are outlined in our
[CONTRIBUTING](/CONTRIBUTING.md) doc. We also very much appreciate those who spend their valuable
time assisting with the [Appium forums](https://discuss.appium.io). Current high-level forum
contributors and mods include:
Other, less formal, kinds of contribution are outlined in our [Contributing Guide](https://appium.io/docs/en/latest/contributing/).
We also very much appreciate those who spend their valuable time assisting with the [Appium forums](https://discuss.appium.io).
Current high-level forum contributors and mods include:
* [aleksei](https://discuss.appium.io/u/aleksei/summary)
* [wreed](https://discuss.appium.io/u/wreed/summary)
@@ -83,7 +82,7 @@ related to contributions of funds. Both are extremely important to the ongoing h
project. Financial sponsorship is mediated through our [OpenCollective page](https://opencollective.com/appium).
Sponsorship tiers and benefits are described below:
- **Development Partners**: The primary need of any open source project is for sustained maintenance and contributorship. Companies that officially sponsor such development with dedicated employee time are recognized as Development Partners, and receive the same benefits as the highest tier of financial sponsorship. To be considered a Development Partner, a company must devote at least 50% of a full-time employee's time to Appium maintenance.
- **Development Partners**: The primary need of any open source project is for sustained maintenance and contributorship. Companies that officially sponsor such development with dedicated employee time are recognized as Development Partners, and receive the same benefits as the highest tier of financial sponsorship. To be considered a Development Partner, a company must devote at least 50% of a full-time employee's time to Appium maintenance. This means that the contributors designated by the company must have been appointed as "committers" in good standing of one or more core Appium repositories. (See above for a description of how to become a committer).
- **Strategic Partners**: Representing the highest tier of ongoing financial support for the project, Strategic Partners are what make our compensation scheme for contributors possible, and we thank them for their significant investment into the project! More than financial contribution, Strategic Partners help elevate Appium's position in the industry through marketing and evangelism efforts, and partner with the Appium team to help make Appium better. Along with the Development Partners, Strategic Partners have their logos displayed prominently on our website, and have the ability to link to their Appium-related products in a few relevant places in our documentation.
- **Gold, Silver, and Bronze Sponsors**: these sponsorship levels correspond to different amounts of recurring financial contribution that generously support our contributor compensation scheme. Sponsors at these levels also have the opportunity to display their logo on our website.
- **Backers**: individuals who benefit from the Appium project can also donate on a one-time or recurring basis, at any amount, and will be recognized as Backers for their contribution!
@@ -91,7 +90,7 @@ Sponsorship tiers and benefits are described below:
To become a sponsor at one of these levels, follow the process indicated at the [OpenCollective
page](https://opencollective.com/appium).
### Compensation for TC Members, Committers, Contributors, and upstream projects
### Compensation Scheme
With funds received through sponsorship, the Appium project wants to incentivize contributions of
code, documentation efforts, maintenance, and project leadership. We have developed a scheme
+39 -2
View File
@@ -2,18 +2,22 @@
<p align="center">
<a href="https://appium.io/">
<img alt="Appium" src="https://raw.githubusercontent.com/appium/appium/master/packages/appium/docs/assets/images/appium-logo-horiz.png" width="500">
<img alt="Appium" src="https://raw.githubusercontent.com/appium/appium/master/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png" width="500">
</a>
</p>
<p align="center">
Cross-platform test automation for native, hybrid, mobile web and desktop apps.
</p>
<div align="center">
[![NPM version](https://badge.fury.io/js/appium.svg)](https://npmjs.org/package/appium)
[![Monthly Downloads](https://img.shields.io/npm/dm/appium.svg)](https://npmjs.org/package/appium)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_shield)
[![StandWithUkraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://github.com/vshymanskyy/StandWithUkraine/)
</div>
***
<p align="center"><b>
@@ -21,7 +25,7 @@
<a href="https://appium.io/docs/en/latest/intro/">Get Started</a> |
<a href="https://appium.io/docs/en/latest/ecosystem/">Ecosystem</a> |
<a href="https://github.com/appium/appium/blob/master/packages/appium/CHANGELOG.md">Changelog</a> |
<a href="https://github.com/appium/appium/blob/master/ROADMAP.md">Roadmap</a> |
<a href="https://appium.io/docs/en/latest/contributing/">Contributing Guide</a> |
<a href="https://discuss.appium.io">Discussion Forum</a>
</b></p>
@@ -178,8 +182,41 @@ cross-platform native app automation, for mobile and beyond!
If you are looking for a more comprehensive description of what this is all about, please read our
documentation on [How Does Appium Work?](https://appium.io/docs/en/latest/intro/appium/).
## Sponsors
Appium has a [Sponsorship Program](GOVERNANCE.md#sponsorship)! If you or your company uses Appium
and wants to give back financially to the project, we use these funds to [encourage development and
contributions](GOVERNANCE.md#compensation-scheme), as well as support other open source projects we
rely on. [Become a sponsor](https://opencollective.com/appium) via our OpenCollective page.
### Development and Strategic Partners
Appium is incredibly grateful to our Development and Strategic Partners for their sustained
contribution of project development and leadership!
<p align="center">
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<picture>
<source srcset="packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png" media="(prefers-color-scheme: dark)"/>
<source srcset="packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png" media="(prefers-color-scheme: light)"/>
<img src="packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png" width="300" alt="Browserstack"/>
</picture>
</a>
</p>
<p align="center">
<a href="https://saucelabs.com/resources/blog/appium-strategic-partner"><img src="packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png"
width="300" alt="Sauce Labs" /></a>
</p>
### Other Sponsors
A full list of sponsors is available at our [Sponsors page](https://appium.io/docs/en/latest/sponsors/).
## License
[Apache-2.0](./LICENSE)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_large)
`@appium/logger` package is under [ISC](./packages/logger/LICENSE) License.
+1 -33
View File
@@ -1,35 +1,3 @@
# Sponsors & Backers
Appium is an Apache-2 licensed open source project whose development is made possible entirely by
donations of time and money by individuals and companies who benefit from our software and our
mission. If you'd like to join this amazing group and help ensure Appium's continued development
and maintenance, you can contribute via [Appium's OpenCollective
Hub](https://opencollective.com/appium).
## Development Partners
We are very grateful for the support of our Development Partners, who donate Appium development and
maintenance as part of their employees' core job duties!
* *Coming Soon!*
## Strategic Partners
We are very grateful for the financial and marketing support of our exclusive Strategic Partners,
who contribute a significant ongoing investment of funds to help the project attract and reward
contributors!
* *Coming Soon!*
## Gold Sponsors
* [Become a Gold Sponsor](https://opencollective.com/appium/contribute/gold-sponsor-72877/checkout?interval=month&amount=500&contributeAs=me)
## Silver Sponsors
* [Become a Silver Sponsor](https://opencollective.com/appium/contribute/silver-sponsor-72876/checkout?interval=month&amount=250&contributeAs=me)
## Bronze Sponsors
- [MagicPod](https://magicpod.com/en/)
* [Become a Bronze Sponsor](https://opencollective.com/appium/contribute/sponsors-70690/checkout?interval=month&amount=100&contributeAs=me)
Please check [Sponsors & Backers](https://appium.io/docs/en/latest/sponsors/)
+28
View File
@@ -0,0 +1,28 @@
This documentation is a note for the opencollective payout.
1. Select `Submit expense`
<img width="200" alt="Screenshot 2024-09-17 at 11 04 32 PM" src="https://github.com/user-attachments/assets/5d598a46-8aa3-41e0-aadc-ce3f34b10f6b">
2. Select `Invoice`
3. Type proper account name in `Who is being paid for this expense?`
- The form depends on the target user
4. Select `Next`
5. Input expense info and complete the form. Then, the user will recieve the expense info.
- Expense title: `<year-month> contribution payout`
- e.g. `2024-07 contribution payout`
- Description in "Set invoice details"
- for TCs:
- `<year-month> contribution as a TC https://github.com/appium/appium/blob/master/GOVERNANCE.md#the-technical-committee and maintaining Appium project itself (development, review etc)`
- i.e. `2024-07 contribution as a TC https://github.com/appium/appium/blob/master/GOVERNANCE.md#the-technical-committee and maintaining Appium project itself (development, review etc)`
- for individuals
- `PR contribution: <PRs>` for PRs. `Community contribution in Q&A forum at https://discuss.appium.io/` for appium forums
- E.g.
- `PR contribution: https://github.com/appium/dotnet-client/pull/810, https://github.com/appium/dotnet-client/pull/808`
- `PR contribution: https://github.com/appium/java-client/pull/2206, https://github.com/appium/java-client/pull/2203 and a few PRs`
- `Community contribution in Q&A forum at https://discuss.appium.io/`
- Amount
- Type the amount in `USD`
6. Approve each expense after getting response for each expense
<img width="500" alt="Screenshot 2024-09-11 at 8 40 35 PM" src="https://github.com/user-attachments/assets/462cda69-1ce7-458c-b319-dda87cf10d65">
+23
View File
@@ -0,0 +1,23 @@
import tsConfig from '@appium/eslint-config-appium-ts';
export default [
...tsConfig,
{
...tsConfig.find(({name}) => name === 'Test Files'),
name: 'Test Support',
files: [
'packages/test-support/lib/**',
'packages/driver-test-support/lib/**',
'packages/plugin-test-support/lib/**',
],
},
{
ignores: [
'**/build-fixtures/**',
'packages/appium/docs/**/assets/**',
'packages/appium/docs/**/js/**',
'packages/appium/sample-code/**',
],
},
];
+7730 -13955
View File
File diff suppressed because it is too large Load Diff
+43 -44
View File
@@ -38,12 +38,15 @@
"clean:interactive": "git clean -d -x -i",
"clean:force": "git clean -d -x -f",
"clean:workspaces": "lerna run clean || true",
"crowdin-sync-docs-translations": "node ./scripts/crowdin-sync-docs-translations.mjs",
"crowdin-update-docs": "node ./scripts/crowdin-update-docs-resources.mjs",
"dev": "run-s build:compile \"build:workspaces\" \"build:compile -- --watch\"",
"dev:docs": "npm run -w packages/appium dev:docs",
"docs": "npm run -w packages/appium build:docs",
"docs:preview": "npm run -w packages/appium build:docs:preview",
"doctor": "node ./packages/doctor",
"generate-docs": "npm run --workspace=packages/appium generate-docs",
"docs:publish": "npm run -w packages/appium publish:docs",
"doctor": "node ./scripts/doctor-stub.mjs",
"install-docs-deps": "npm run -w packages/appium install-docs-deps",
"lint": "eslint .",
"lint:ci": "eslint --quiet .",
"lint:fix": "run-s \"lint -- --fix\"",
@@ -59,12 +62,13 @@
"start": "appium",
"sync-pkgs": "run-p sync-pkgs:*",
"sync-pkgs:appium-readme": "sync-monorepo-packages --force --no-package-json --packages=packages/appium README.md",
"sync-pkgs:common-fields": "sync-monorepo-packages --fields=author,license,bugs,homepage,engines",
"sync-pkgs:keywords": "sync-monorepo-packages --field=keywords --packages=\"packages/*\" --packages=\"!packages/eslint-config-appium\" --packages=\"!packages/types\" --packages=\"!packages/eslint-config-appium-ts\" ",
"sync-pkgs:license": "sync-monorepo-packages --force --no-package-json LICENSE",
"sync-pkgs:common-fields:default": "sync-monorepo-packages --packages=\"!packages/logger\" --fields=author,license,bugs,homepage,engines",
"sync-pkgs:common-fields:logger": "sync-monorepo-packages --packages=\"packages/logger\" --fields=author,bugs,homepage,engines",
"sync-pkgs:keywords": "sync-monorepo-packages --field=keywords --packages=\"packages/*\" --packages=\"!packages/types\" --packages=\"!packages/eslint-config-appium-ts\" ",
"sync-pkgs:license": "sync-monorepo-packages --force --no-package-json --packages=\"!packages/logger\" LICENSE",
"test": "run-s test:quick",
"test:ci": "run-s test:smoke test:unit test:types test:e2e",
"test:e2e": "lerna run --concurrency=2 test:e2e",
"test:e2e": "lerna run test:e2e",
"test:quick": "run-s lint test:unit test:types",
"test:slow": "run-s test:quick test:smoke test:e2e",
"test:smoke": "smoker --all test:smoke",
@@ -81,60 +85,55 @@
},
"devDependencies": {
"@colors/colors": "1.6.0",
"@eslint/js": "9.17.0",
"@tsconfig/node14": "14.1.2",
"@types/chai": "4.3.16",
"@types/chai-as-promised": "7.1.8",
"@types/diff": "5.2.1",
"@types/mocha": "10.0.6",
"@types/node": "20.12.12",
"@types/chai": "5.0.1",
"@types/chai-as-promised": "8.0.1",
"@types/diff": "6.0.0",
"@types/mocha": "10.0.10",
"@types/node": "22.10.3",
"@types/semver": "7.5.8",
"@types/sinon": "17.0.3",
"@types/sinon-chai": "3.2.12",
"@types/sinon-chai": "4.0.0",
"@types/source-map-support": "0.5.10",
"@types/teen_process": "2.0.4",
"@types/ws": "8.5.10",
"@types/yargs": "17.0.32",
"@typescript-eslint/eslint-plugin": "7.10.0",
"@typescript-eslint/parser": "7.10.0",
"@types/ws": "8.5.13",
"@types/yargs": "17.0.33",
"@typescript-eslint/eslint-plugin": "8.19.0",
"@typescript-eslint/parser": "8.19.0",
"asyncbox": "3.0.0",
"chai": "4.4.1",
"chai-as-promised": "7.1.2",
"chai-webdriverio-async": "3.0.0",
"chai": "5.1.2",
"chai-as-promised": "8.0.1",
"conventional-changelog-conventionalcommits": "7.0.2",
"cpy-cli": "5.0.0",
"eslint": "8.57.0",
"eslint": "9.17.0",
"eslint-config-prettier": "9.1.0",
"eslint-find-rules": "4.1.0",
"eslint-import-resolver-typescript": "3.6.1",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-mocha": "10.4.3",
"eslint-plugin-promise": "6.2.0",
"fancy-log": "2.0.0",
"finalhandler": "1.2.0",
"eslint-import-resolver-typescript": "3.7.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-mocha": "10.5.0",
"eslint-plugin-promise": "7.2.1",
"finalhandler": "1.3.1",
"get-port": "5.1.1",
"json-schema-to-typescript": "14.0.4",
"lerna": "8.1.3",
"json-schema-to-typescript": "15.0.3",
"lerna": "8.1.9",
"log-symbols": "4.1.0",
"midnight-smoker": "8.0.0",
"mjpeg-consumer": "2.0.0",
"mjpeg-server": "0.3.1",
"mocha": "10.4.0",
"mocha-chai-jest-snapshot": "1.1.4",
"npm-run-all2": "6.2.0",
"prettier": "3.2.5",
"mocha": "11.0.1",
"npm-run-all2": "6.2.6",
"prettier": "3.4.2",
"rewiremock": "3.14.5",
"rimraf": "5.0.7",
"serve-static": "1.15.0",
"sinon": "18.0.0",
"sinon-chai": "3.7.0",
"rimraf": "5.0.10",
"serve-static": "1.16.2",
"sinon": "19.0.2",
"sync-monorepo-packages": "1.0.2",
"through2": "4.0.2",
"ts-node": "10.9.2",
"tsd": "0.31.0",
"typescript": "5.4.5",
"tsd": "0.31.2",
"typescript": "5.7.2",
"validate.js": "0.13.1",
"webdriverio": "8.38.0",
"ws": "8.17.0",
"webdriverio": "9.5.0",
"ws": "8.18.0",
"yaml-js": "0.3.1"
},
"engines": {
@@ -146,10 +145,10 @@
},
"overrides": {
"@sidvind/better-ajv-errors": {
"ajv": "8.14.0"
"ajv": "8.17.1"
},
"ajv-formats": {
"ajv": "8.14.0"
"ajv": "8.17.1"
},
"http-cache-semantics": "4.1.1"
}
+274
View File
@@ -3,6 +3,280 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.14.0](https://github.com/appium/appium/compare/appium@2.13.1...appium@2.14.0) (2025-01-02)
### Features
* **appium:** Add session.status BiDi command ([#20839](https://github.com/appium/appium/issues/20839)) ([64e768e](https://github.com/appium/appium/commit/64e768efb7bebd6b5a24d55206d1cad00812777c))
* **appium:** allow drivers to define their own bidi commands ([#20828](https://github.com/appium/appium/issues/20828)) ([a917ec6](https://github.com/appium/appium/commit/a917ec6ceda2166fb3dcbff6b2768f700db9e103))
* **appium:** Update entry point resolution logic for ESM extensions ([#20866](https://github.com/appium/appium/issues/20866)) ([bbfc040](https://github.com/appium/appium/commit/bbfc04026f0629d89d8b313616b852896481d08d))
### Bug Fixes
* **appium:** update CLI help messages ([#20825](https://github.com/appium/appium/issues/20825)) ([04e2d11](https://github.com/appium/appium/commit/04e2d1154b67c34607ab7a1e2a44b9b4bcfb998f))
* **docutils:** update dependency yaml to v2.7.0 ([#20870](https://github.com/appium/appium/issues/20870)) ([389a3e8](https://github.com/appium/appium/commit/389a3e83ac0069504338f7182a4e938cd391de7e))
* **execute-driver-plugin:** update dependency webdriverio to v9.4.5 ([#20847](https://github.com/appium/appium/issues/20847)) ([4474412](https://github.com/appium/appium/commit/4474412a60a82556f43fd3f3fb4f4ea2e4bc11ee))
* **execute-driver-plugin:** update dependency webdriverio to v9.5.0 ([#20871](https://github.com/appium/appium/issues/20871)) ([990a066](https://github.com/appium/appium/commit/990a0667e3442bf01aaf67327066517d6310c371))
* Reduce linter warnings ([#20860](https://github.com/appium/appium/issues/20860)) ([65658cc](https://github.com/appium/appium/commit/65658ccbdde9144c45cb5aad6a9089a5d6f3a0a3))
* **types:** update dependency type-fest to v4 ([#20838](https://github.com/appium/appium/issues/20838)) ([a5897dd](https://github.com/appium/appium/commit/a5897dd25a277a42b0c650a52274ba2c891ac3b0))
* **types:** update dependency type-fest to v4 ([#20843](https://github.com/appium/appium/issues/20843)) ([7abecad](https://github.com/appium/appium/commit/7abecaddd3ed64c7be321650b2a17990e74a7222))
* **types:** update dependency type-fest to v4.31.0 ([#20857](https://github.com/appium/appium/issues/20857)) ([24abb38](https://github.com/appium/appium/commit/24abb385e54f57457c4fb3f2b654cb63645e7ccd))
## [2.13.1](https://github.com/appium/appium/compare/appium@2.13.0...appium@2.13.1) (2024-12-05)
### Bug Fixes
* **docutils:** update dependency lilconfig to v3.1.3 ([#20803](https://github.com/appium/appium/issues/20803)) ([93fa5cc](https://github.com/appium/appium/commit/93fa5ccb06eb5089bb3e8a8d9e67dad7f4446a0a))
* **support:** update dependency axios to v1.7.9 ([#20811](https://github.com/appium/appium/issues/20811)) ([69f100a](https://github.com/appium/appium/commit/69f100ad3e12030708dee4b8a74005dd41976e37))
* **support:** update dependency teen_process to v2.2.2 ([#20808](https://github.com/appium/appium/issues/20808)) ([c91683f](https://github.com/appium/appium/commit/c91683f50feea937ff8568eab6366465a6cf9a3e))
* **types:** update dependency type-fest to v4.30.0 ([#20802](https://github.com/appium/appium/issues/20802)) ([8590432](https://github.com/appium/appium/commit/8590432955eb7663e35847db541b9ead3f845a36))
## [2.13.0](https://github.com/appium/appium/compare/appium@2.12.2...appium@2.13.0) (2024-12-02)
### Features
* **base-driver:** Allow to prefix feature names with automation names ([#20793](https://github.com/appium/appium/issues/20793)) ([942057d](https://github.com/appium/appium/commit/942057d26cbf51539f34b6b7ff8a3c1d07821687))
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [2.12.2](https://github.com/appium/appium/compare/appium@2.12.1...appium@2.12.2) (2024-11-29)
### Bug Fixes
* **appium:** correctly handle git/github install types (fix [#20781](https://github.com/appium/appium/issues/20781)) ([#20788](https://github.com/appium/appium/issues/20788)) ([522f05d](https://github.com/appium/appium/commit/522f05d25ecdf65e2ae22bd7830a250346fc5752))
* **appium:** update dependency winston to v3.16.0 ([275da08](https://github.com/appium/appium/commit/275da089e45daba030fbc53d3943e2a9929b27e4))
* **appium:** update dependency winston to v3.17.0 ([#20736](https://github.com/appium/appium/issues/20736)) ([f91d8c8](https://github.com/appium/appium/commit/f91d8c8812b77c8739b23d4d49c15a44e19cbcbe))
* **docutils:** update dependency yaml to v2.6.1 ([#20762](https://github.com/appium/appium/issues/20762)) ([a5389e6](https://github.com/appium/appium/commit/a5389e648af22570a55e70de71c159874362ffd9))
* **support:** update dependency axios to v1.7.8 ([#20778](https://github.com/appium/appium/issues/20778)) ([f9920e2](https://github.com/appium/appium/commit/f9920e2c1b02e3587e5d5fa00ac59055ab57fedd))
* **types:** update dependency type-fest to v4.27.0 ([#20754](https://github.com/appium/appium/issues/20754)) ([d6b4079](https://github.com/appium/appium/commit/d6b40797d387711df94c29984af91308da27f92b))
* **types:** update dependency type-fest to v4.28.0 ([#20775](https://github.com/appium/appium/issues/20775)) ([a25d8f1](https://github.com/appium/appium/commit/a25d8f129c8baf76ab40ce3b8d053f7da77f14b3))
* **types:** update dependency type-fest to v4.29.0 ([#20783](https://github.com/appium/appium/issues/20783)) ([b6aa5ac](https://github.com/appium/appium/commit/b6aa5ace6e54709dba54bc62a902d91851ab7ef1))
## [2.12.1](https://github.com/appium/appium/compare/appium@2.12.0...appium@2.12.1) (2024-10-24)
### Bug Fixes
* **docutils:** restore support for Python <3.12 ([#20675](https://github.com/appium/appium/issues/20675)) ([00cd1b4](https://github.com/appium/appium/commit/00cd1b4b0fcf24d0014dac780223e5866f39c9ce))
* **support:** update definitelytyped ([#20691](https://github.com/appium/appium/issues/20691)) ([846dd52](https://github.com/appium/appium/commit/846dd5288608d886f924d2791291475c956d53f7))
## [2.12.0](https://github.com/appium/appium/compare/appium@2.11.5...appium@2.12.0) (2024-10-15)
### Features
* **appium:** Make server graceful shutdown timeout configurable via command line args ([#20641](https://github.com/appium/appium/issues/20641)) ([5661888](https://github.com/appium/appium/commit/56618886ed007df3c28ce98beb4ff91bc47da2a2))
### Bug Fixes
* **appium:** update dependency winston to v3.15.0 ([ab12235](https://github.com/appium/appium/commit/ab12235483262a1c5a1dd8a32b1792a4b096bfc6))
* **docutils:** support Python 3.12+ ([#20666](https://github.com/appium/appium/issues/20666)) ([8d7cec9](https://github.com/appium/appium/commit/8d7cec96d8df60644493a7e2f735b4bb0d3783be))
* **docutils:** update dependency yaml to v2.6.0 ([ed6c6dd](https://github.com/appium/appium/commit/ed6c6dd5441e26fc1eb58de9b78def49d930a128))
* **execute-driver-plugin:** update dependency webdriverio to v8.40.6 ([796ca9f](https://github.com/appium/appium/commit/796ca9f98f69616b9c890325bbfb0c573a8bc765))
## [2.11.5](https://github.com/appium/appium/compare/appium@2.11.4...appium@2.11.5) (2024-09-26)
### Bug Fixes
* **appium:** Return hostname as web socket url for BiDi if a broadcast address is assigned to the server ([#20603](https://github.com/appium/appium/issues/20603)) ([f0de55d](https://github.com/appium/appium/commit/f0de55da0da2fc0305876a948704c1f0a2a5990f))
## [2.11.4](https://github.com/appium/appium/compare/appium@2.11.3...appium@2.11.4) (2024-09-16)
### Bug Fixes
* **appium:** Fix the condition for secure websocket ([#20497](https://github.com/appium/appium/issues/20497)) ([efdb1ce](https://github.com/appium/appium/commit/efdb1ce6ce1de5120f2f35ebe84abfa73ed5198a))
* **appium:** update dependency @sidvind/better-ajv-errors to v3 ([#20552](https://github.com/appium/appium/issues/20552)) ([0ee7716](https://github.com/appium/appium/commit/0ee7716cf0644cfc6795f0949d8253d4c0b36597))
* **appium:** update dependency winston to v3.14.2 ([#20465](https://github.com/appium/appium/issues/20465)) ([893fc04](https://github.com/appium/appium/commit/893fc040e16ec07c83d12c7c89180d962b0f6e68))
* **base-driver:** Add a server flag to check if it operates a secure protocol ([#20449](https://github.com/appium/appium/issues/20449)) ([622b245](https://github.com/appium/appium/commit/622b245ea38793280d9785a59a0416ce025862fe))
* **docutils:** update dependency yaml to v2.5.1 ([750872a](https://github.com/appium/appium/commit/750872af4756d2efcd19fe98762f82ecaa59d59a))
* **execute-driver-plugin:** update dependency webdriverio to v8.40.3 ([4608563](https://github.com/appium/appium/commit/46085635a92c3a2b2b1b3ecf3966a174248a2829))
* **execute-driver-plugin:** update dependency webdriverio to v8.40.5 ([dcb6de2](https://github.com/appium/appium/commit/dcb6de22eaabdcea2517cd9b7db120d681f0e38e))
* **support:** update dependency axios to v1.7.4 ([d17d022](https://github.com/appium/appium/commit/d17d0222245ab94a78e578c0398734e65a89ba68))
* **support:** update dependency axios to v1.7.5 ([fedabb1](https://github.com/appium/appium/commit/fedabb1fdc7af10f9e4b06ea23815c4bc7c6bf5e))
* **support:** update dependency axios to v1.7.7 ([7fe67a2](https://github.com/appium/appium/commit/7fe67a286a15a917ce3b1b47a08e982e65bbd9e4))
* **types:** update dependency type-fest to v4 ([#20467](https://github.com/appium/appium/issues/20467)) ([482a1f7](https://github.com/appium/appium/commit/482a1f7bbfbf6478ee09bb1668b830ddbf13b143))
* **types:** update dependency type-fest to v4 ([#20471](https://github.com/appium/appium/issues/20471)) ([9a66f48](https://github.com/appium/appium/commit/9a66f4800141cc86c90d58ca1103bab0066081bc))
* **types:** update dependency type-fest to v4 ([#20548](https://github.com/appium/appium/issues/20548)) ([5b8cb76](https://github.com/appium/appium/commit/5b8cb76ea3cda75095e79c91539be73feeadf869))
* **types:** update dependency type-fest to v4.26.0 ([#20511](https://github.com/appium/appium/issues/20511)) ([8f20c97](https://github.com/appium/appium/commit/8f20c973f4a6d3380163b6afd7f113808453a62d))
## [2.11.3](https://github.com/appium/appium/compare/appium@2.11.2...appium@2.11.3) (2024-08-07)
### Bug Fixes
* **appium:** update dependency ajv to v8.17.1 ([7528971](https://github.com/appium/appium/commit/75289711ee344ac9a11a572f13ddb0471e2cbf79))
* **appium:** update dependency winston to v3.13.1 ([dcfec17](https://github.com/appium/appium/commit/dcfec17d1ceab90939b5f199854ba630829e3d1f))
* **docutils:** update dependency yaml to v2.5.0 ([0c755f5](https://github.com/appium/appium/commit/0c755f503c49e459315616e51be0c0776089b2bb))
* **execute-driver-plugin:** update dependency webdriverio to v8.40.0 ([#20442](https://github.com/appium/appium/issues/20442)) ([b4612e0](https://github.com/appium/appium/commit/b4612e0c7a21902a3cab658fbdc05f3b48c55d0d))
* **logger:** update dependency lru-cache to v10.4.3 ([#20364](https://github.com/appium/appium/issues/20364)) ([8d79467](https://github.com/appium/appium/commit/8d79467da8a0733ac3e49b9152bd6905989a57ca))
* **support:** update dependency axios to v1.7.3 ([1ca77c6](https://github.com/appium/appium/commit/1ca77c6dedbff4552aba9c97cf5406c7552d1a01))
* **support:** update dependency semver to v7.6.3 ([5a9ab97](https://github.com/appium/appium/commit/5a9ab9792402e31d3903fb1a3b08329a67b6a2a2))
* **types:** update dependency type-fest to v4.22.0 ([#20387](https://github.com/appium/appium/issues/20387)) ([47405dd](https://github.com/appium/appium/commit/47405dda8a5de17c72fb721b0c043e0dd4f6b35a))
* **types:** update dependency type-fest to v4.23.0 ([#20396](https://github.com/appium/appium/issues/20396)) ([0e8e3c7](https://github.com/appium/appium/commit/0e8e3c71441d02d22f015f08df5223909f5fbb93))
## [2.11.2](https://github.com/appium/appium/compare/appium@2.11.1...appium@2.11.2) (2024-07-10)
### Bug Fixes
* **appium:** update dependency ws to v8.18.0 ([44e4231](https://github.com/appium/appium/commit/44e423110ad6c8bd7d846cc334fafe931fea43f9))
* **execute-driver-plugin:** update dependency webdriverio to v8.39.1 ([c2f3a61](https://github.com/appium/appium/commit/c2f3a618e413c7f21057ba6d9002dc1fe4507e6f))
* **support:** update dependency teen_process to v2.1.10 ([86f843b](https://github.com/appium/appium/commit/86f843b9e1fc56576d7a08bf95838a58971e98b3))
* **support:** update dependency teen_process to v2.1.7 ([5226fa8](https://github.com/appium/appium/commit/5226fa897b90e9fec9be3e79a7d48fc7b4e0016d))
* **support:** update dependency teen_process to v2.2.0 ([06607da](https://github.com/appium/appium/commit/06607da92e93d015747fd6d6d5bdabe1b3ac58d2))
* **types:** update dependency type-fest to v4.21.0 ([#20335](https://github.com/appium/appium/issues/20335)) ([8894b9a](https://github.com/appium/appium/commit/8894b9adf709646108cc8d6426bbb690550609f2))
## [2.11.1](https://github.com/appium/appium/compare/appium@2.11.0...appium@2.11.1) (2024-06-28)
### Bug Fixes
* **images-plugin:** update dependency lru-cache to v10.3.0 ([#20306](https://github.com/appium/appium/issues/20306)) ([e43c7a4](https://github.com/appium/appium/commit/e43c7a4dce1f50fbd4d028cbeac5677422210b20))
## [2.11.0](https://github.com/appium/appium/compare/appium@2.10.3...appium@2.11.0) (2024-06-27)
### Features
* **appium:** Improve context logging ([#20250](https://github.com/appium/appium/issues/20250)) ([f675abc](https://github.com/appium/appium/commit/f675abc27b3e6beac2431cc71afb5fc2c2f70534))
* **appium:** show extension update info message for newer major versions ([#20283](https://github.com/appium/appium/issues/20283)) ([f2c8b69](https://github.com/appium/appium/commit/f2c8b696085ba862553476f23509cac0674a447c))
* **appium:** show spinner during extension uninstall ([#20282](https://github.com/appium/appium/issues/20282)) ([f250793](https://github.com/appium/appium/commit/f25079354bfd646810813ae47244a1e2e962dbfb))
### Bug Fixes
* **appium:** update dependency ws to v8.17.1 ([d2b24da](https://github.com/appium/appium/commit/d2b24daba056373160d680ec5f017b28e9cbde1a))
* **execute-driver-plugin:** update dependency webdriverio to v8.39.0 ([faf9623](https://github.com/appium/appium/commit/faf9623a65868a6330d062076074da7c1c3acb2a))
* **support:** update dependency teen_process to v2.1.5 ([bc388db](https://github.com/appium/appium/commit/bc388db1116f411f4b241105f5feae30418c9a27))
* **support:** update dependency teen_process to v2.1.6 ([5412461](https://github.com/appium/appium/commit/541246184dc7521c825ec1902775e681ea6f0db3))
* **types:** update dependency type-fest to v4.20.1 ([#20255](https://github.com/appium/appium/issues/20255)) ([1984553](https://github.com/appium/appium/commit/19845531f558e2b16dfae807c768e1b9f2cab25d))
## [2.10.3](https://github.com/appium/appium/compare/appium@2.10.2...appium@2.10.3) (2024-06-11)
**Note:** Version bump only for package appium
## [2.10.2](https://github.com/appium/appium/compare/appium@2.10.1...appium@2.10.2) (2024-06-11)
**Note:** Version bump only for package appium
## [2.10.1](https://github.com/appium/appium/compare/appium@2.10.0...appium@2.10.1) (2024-06-11)
**Note:** Version bump only for package appium
## [2.10.0](https://github.com/appium/appium/compare/appium@2.9.0...appium@2.10.0) (2024-06-10)
### Features
* **appium:** Add a possibility to print logs in json format ([#20224](https://github.com/appium/appium/issues/20224)) ([1e86537](https://github.com/appium/appium/commit/1e86537e944f6beb7dbe72b35c267ae1dd9ebd36))
* **appium:** Add session signature to all logs ([#20202](https://github.com/appium/appium/issues/20202)) ([#20214](https://github.com/appium/appium/issues/20214)) ([0363aab](https://github.com/appium/appium/commit/0363aab8ba4fe0ec49845db2f493001aa873578b)), closes [#20222](https://github.com/appium/appium/issues/20222)
* **logger:** Add the debug level to the default logger ([#20219](https://github.com/appium/appium/issues/20219)) ([8ee7d07](https://github.com/appium/appium/commit/8ee7d07af4e2375d2eb7c23badaaac34685bc59c))
* **support:** Move SecureValuesPreprocessor to @appum/logger ([#20228](https://github.com/appium/appium/issues/20228)) ([dbc3b66](https://github.com/appium/appium/commit/dbc3b668a0a7a815d23f1cae4207d435fc09034d))
### Bug Fixes
* **docutils:** update dependency lilconfig to v3.1.2 ([1828501](https://github.com/appium/appium/commit/1828501c66d0c5f8f295c67cd12d6691f8020780))
* **docutils:** update dependency yaml to v2.4.5 ([6a08c95](https://github.com/appium/appium/commit/6a08c95fc9bda5cf39b8a6d98e5394658355a38e))
* **types:** update dependency type-fest to v4.20.0 ([#20227](https://github.com/appium/appium/issues/20227)) ([ea00626](https://github.com/appium/appium/commit/ea00626091e3ce87f6e3ed7a61003295272835e3))
## [2.9.0](https://github.com/appium/appium/compare/appium@2.8.0...appium@2.9.0) (2024-06-06)
### Features
* **appium:** Add session signature to all logs ([#20202](https://github.com/appium/appium/issues/20202)) ([b3f8a47](https://github.com/appium/appium/commit/b3f8a47c2d3fa029bdb5592d7130c6d1664e53b5))
### Bug Fixes
* **appium:** Revert changes in 20203 and 20202 ([#20209](https://github.com/appium/appium/issues/20209)) ([40def9d](https://github.com/appium/appium/commit/40def9dbdbde64706111900967d66735257b7404)), closes [#20202](https://github.com/appium/appium/issues/20202) [#20203](https://github.com/appium/appium/issues/20203)
## [2.8.0](https://github.com/appium/appium/compare/appium@2.7.0...appium@2.8.0) (2024-06-06)
### Features
* **logger:** Add the 'debug' level to the default logger ([#20203](https://github.com/appium/appium/issues/20203)) ([7fd9d5f](https://github.com/appium/appium/commit/7fd9d5f6261b385c234580c2bfee4d576905458b))
### Bug Fixes
* add logger dependencies in package.json ([#20205](https://github.com/appium/appium/issues/20205)) ([3fbc4f1](https://github.com/appium/appium/commit/3fbc4f1fe07eadf9c7a2ef8fc9f4ba78dc3486a3))
## [2.7.0](https://github.com/appium/appium/compare/appium@2.6.0...appium@2.7.0) (2024-06-06)
### Features
* **appium:** Replace npmlog with the local fork ([#20190](https://github.com/appium/appium/issues/20190)) ([8915934](https://github.com/appium/appium/commit/8915934270243bfb46c4d104a098ce1cc481b0ff))
* **base-driver:** Make addition of search query params to cache optional ([#20195](https://github.com/appium/appium/issues/20195)) ([21316e9](https://github.com/appium/appium/commit/21316e94d05b2f97aa0349a82da229713e92446c))
### Bug Fixes
* **appium:** ensure ws close code is valid ([#20178](https://github.com/appium/appium/issues/20178)) ([65c47ac](https://github.com/appium/appium/commit/65c47acf5954bbf1947e896ef79c81a9b3c712a5))
* **appium:** update dependency ajv to v8.16.0 ([ae7f74a](https://github.com/appium/appium/commit/ae7f74a0144d233653443622a84d49b1cb4e6222))
* **docutils:** update dependency yaml to v2.4.3 ([848eb00](https://github.com/appium/appium/commit/848eb00afbd1cab76a6a1c3d0f4a2a0b1acee0d0))
* **execute-driver-plugin:** update dependency webdriverio to v8.38.2 ([c8f9979](https://github.com/appium/appium/commit/c8f997973cc21673f95d02c92d43a2981b8713b8))
* **support:** update dependency teen_process to v2.1.4 ([96a7a3f](https://github.com/appium/appium/commit/96a7a3f23bead7c1d18700550138cd2d70ce5e3c))
* **types:** update dependency type-fest to v4.19.0 ([#20193](https://github.com/appium/appium/issues/20193)) ([db62358](https://github.com/appium/appium/commit/db62358dbac25de2a75fdc7493338d98b1422c84))
## [2.6.0](https://github.com/appium/appium/compare/appium@2.5.4...appium@2.6.0) (2024-05-27)
+39 -2
View File
@@ -2,18 +2,22 @@
<p align="center">
<a href="https://appium.io/">
<img alt="Appium" src="https://raw.githubusercontent.com/appium/appium/master/packages/appium/docs/assets/images/appium-logo-horiz.png" width="500">
<img alt="Appium" src="https://raw.githubusercontent.com/appium/appium/master/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png" width="500">
</a>
</p>
<p align="center">
Cross-platform test automation for native, hybrid, mobile web and desktop apps.
</p>
<div align="center">
[![NPM version](https://badge.fury.io/js/appium.svg)](https://npmjs.org/package/appium)
[![Monthly Downloads](https://img.shields.io/npm/dm/appium.svg)](https://npmjs.org/package/appium)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_shield)
[![StandWithUkraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://github.com/vshymanskyy/StandWithUkraine/)
</div>
***
<p align="center"><b>
@@ -21,7 +25,7 @@
<a href="https://appium.io/docs/en/latest/intro/">Get Started</a> |
<a href="https://appium.io/docs/en/latest/ecosystem/">Ecosystem</a> |
<a href="https://github.com/appium/appium/blob/master/packages/appium/CHANGELOG.md">Changelog</a> |
<a href="https://github.com/appium/appium/blob/master/ROADMAP.md">Roadmap</a> |
<a href="https://appium.io/docs/en/latest/contributing/">Contributing Guide</a> |
<a href="https://discuss.appium.io">Discussion Forum</a>
</b></p>
@@ -178,8 +182,41 @@ cross-platform native app automation, for mobile and beyond!
If you are looking for a more comprehensive description of what this is all about, please read our
documentation on [How Does Appium Work?](https://appium.io/docs/en/latest/intro/appium/).
## Sponsors
Appium has a [Sponsorship Program](GOVERNANCE.md#sponsorship)! If you or your company uses Appium
and wants to give back financially to the project, we use these funds to [encourage development and
contributions](GOVERNANCE.md#compensation-scheme), as well as support other open source projects we
rely on. [Become a sponsor](https://opencollective.com/appium) via our OpenCollective page.
### Development and Strategic Partners
Appium is incredibly grateful to our Development and Strategic Partners for their sustained
contribution of project development and leadership!
<p align="center">
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<picture>
<source srcset="packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png" media="(prefers-color-scheme: dark)"/>
<source srcset="packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png" media="(prefers-color-scheme: light)"/>
<img src="packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png" width="300" alt="Browserstack"/>
</picture>
</a>
</p>
<p align="center">
<a href="https://saucelabs.com/resources/blog/appium-strategic-partner"><img src="packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png"
width="300" alt="Sauce Labs" /></a>
</p>
### Other Sponsors
A full list of sponsors is available at our [Sponsors page](https://appium.io/docs/en/latest/sponsors/).
## License
[Apache-2.0](./LICENSE)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_large)
`@appium/logger` package is under [ISC](./packages/logger/LICENSE) License.
+1
View File
@@ -1,3 +1,4 @@
en/latest
en/assets
ja/assets
zh/assets
@@ -1,6 +0,0 @@
.md-source__fact--version {
display: none;
}
.md-source__fact:nth-child(1n + 2):before {
margin-left: 0 !important;
}
+3
View File
@@ -8,6 +8,7 @@ copyright: Copyright &copy; 2012 OpenJS Foundation - <a href="#__consent">Change
theme:
logo: assets/images/appium-logo-white.png
favicon: assets/images/appium-logo.png
custom_dir: overrides
plugins:
blog:
@@ -24,6 +25,8 @@ plugins:
'reference/commands/images-plugin.md': 'commands/images-plugin.md'
'reference/commands/relaxed-caps-plugin.md': 'commands/relaxed-caps-plugin.md'
'reference/commands/universal-xml-plugin.md': 'commands/universal-xml-plugin.md'
'contributing/config-system.md': 'developing/config-system.md'
'contributing/develop.md': 'contributing.md'
extra_css:
- assets/stylesheets/extra.css
+17 -6
View File
@@ -1,8 +1,19 @@
authors:
jlipps:
name: "Jonathan Lipps"
description: "Appium project lead. Learn more about Jonathan at https://jlipps.com"
avatar: "https://gravatar.com/avatar/fdaadd825d92709bcf7fe76dffa12c40681c6108c67bcddf19478b2d00e3794b.jpg"
slug: "jlipps"
url: "https://jlipps.com"
name: 'Jonathan Lipps'
description: 'Appium project lead. Learn more about Jonathan at https://jlipps.com'
avatar: 'https://gravatar.com/avatar/fdaadd825d92709bcf7fe76dffa12c40681c6108c67bcddf19478b2d00e3794b.jpg'
slug: 'jlipps'
url: 'https://jlipps.com'
srini:
name: 'Srinivasan Sekar'
description: 'Appium Maintainer'
avatar: 'https://avatars.githubusercontent.com/u/8896549?v=4'
slug: 'srini'
url: 'https://srini.codes'
sai:
name: 'Sai krishna'
description: 'Appium Maintainer'
avatar: 'https://avatars.githubusercontent.com/u/4045041?v=4'
slug: 'sai'
url: 'https://saikrishna.tech'
@@ -0,0 +1,45 @@
---
authors:
- srini
- sai
date: 2024-07-13
---
# Appium Conf 2024: Call for Proposals Now Open!
We're thrilled to announce that Appium Conf is back and going online for 2024! This is the official Appium conference where you can learn all about what's new in Appium 2.0 and explore the latest in automating tests for devices, mobile apps, and desktop applications.
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://confengine.com/conferences/appium-conf-2024/proposals?utm_medium=referal&utm_source=appium.io&utm_campaign=launch">
<img id="image-36-42" alt="Appium Conf logo" src="https://appiumconf.com/wp-content/uploads/2021/06/Appium-Conf-Logo.svg" data-src="https://appiumconf.com/wp-content/uploads/2021/06/Appium-Conf-Logo.svg" decoding="async">
</a>
</div>
## Mark Your Calendars: September 13, 2024
Join us on September 13, 2024, for a full day of inspiring and practical talks from the Appium team and the world's top mobile testing and automation experts. With Appium 2.0 now well-established, this is your opportunity to dive deep and learn how to maximize its potential.
## Why Attend Appium Conf 2024?
1. **Gain Insights**: Hear interesting insights and inspiring case studies from global experts and the core Appium team.
2. **Improve Your Strategy**: Gain valuable knowledge to enhance your own automation strategy.
3. **Network**: Make connections with Appium users from around the globe.
4. **Learn from Specialists**: Benefit from Appium specialists' expertise on a variety of topics.
## Call for Proposals: Share Your Knowledge!
We're looking for a diverse range of speakers from around the globe who are eager to share innovative ideas and use-cases of mobile test automation. If you have experience with Appium and insights that could benefit the community of test practitioners, we want to hear from you!
Don't miss this chance to contribute to the Appium community and showcase your expertise on a global stage.
## How to Submit Your Proposal
Visit our website at [https://appiumconf.com/](https://appiumconf.com/) and [Submit a Proposal](https://confengine.com/conferences/appium-conf-2024/proposals?utm_medium=referal&utm_source=appium.io&utm_campaign=launch). We're excited to see your innovative ideas and experiences with Appium!
## Stay Tuned
Keep an eye on our website and social media channels for updates on the conference schedule, keynote speakers, and more exciting details about Appium Conf 2024.
Join us in shaping the future of mobile and device test automation. Submit your proposal today and be part of this exciting event!
@@ -0,0 +1,46 @@
---
authors:
- jlipps
date: 2024-06-10
---
# Announcing BrowserStack as Appium's Strategic Partner
We have another exciting announcement for you! As part of our recently-announced [sponsorship and
contributor compensation
program](https://appium.io/docs/en/latest/blog/2024/05/14/announcing-appiums-sponsorship-program/),
we are obviously in need of significant funding to support giving back to our contributor
community. We are therefore extremely happy to announce one of our brand new exclusive Strategic Partners: <a
href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">BrowserStack</a>!
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<img src="/docs/en/latest/assets/images/sponsor-logo-browserstack-dark.png#only-dark" width="300" />
<img src="/docs/en/latest/assets/images/sponsor-logo-browserstack-light.png#only-light" width="300" />
</a>
</div>
BrowserStack has long been recognized in the industry as having extensive support for Appium,
allowing you to run functional and visual regression tests for your native and hybrid apps at scale
across a variety of devices and platforms.
As a token of this collaboration, BrowserStack is extending a special premium access of
BrowserStack App Automate product to Appium users. Discover more about this special offer at
[browserstack.com](https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium&utm_term=partannouncement)
With the decision to come on board as Strategic Partner, BrowserStack is making a huge investment
in Appium and the Appium community. BrowserStack is very interested in supporting the development
of the Appium contributor base, and is proud to be a key part of our contributor compensation
scheme. Without Strategic Partners like BrowserStack, we would not be able to maintain such
a program! We welcome them with gratitude!
**About BrowserStack**
<em>BrowserStack is the world’s leading software testing platform powering over two million tests every
day across 19 global data centers. BrowserStack helps Tesco, Shell, NVIDIA, Discovery, Wells Fargo,
and over 50,000 customers deliver quality software at speed by moving testing to their Cloud.
BrowserStack’s platform provides instant access to 20,000+ real mobile devices on a highly reliable
cloud infrastructure that effortlessly scales as testing needs grow. With BrowserStack, Dev and QA
teams can move fast while delivering an amazing experience for every customer.</em>
@@ -0,0 +1,47 @@
---
authors:
- jlipps
date: 2024-06-06
---
# Announcing HeadSpin as Appium's Development Partner
Recently, we announced a new [sponsorship and contributor compensation program](https://appium.io/docs/en/latest/blog/2024/05/14/announcing-appiums-sponsorship-program/) for the Appium
project. As part of this program, we felt it was important to have a place to recognize those
companies who make an extremely valuable kind of contribution to the project: dedicated maintainer
time. Appium only survives because of the tireless efforts of the core maintainers, and some of us
are only able to do this work because it is donated on behalf of our day jobs. We're therefore very
excited to announce our first Development Partner: <a
href="https://www.headspin.io/solutions/appium-mobile-test-automation">HeadSpin</a>!
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://www.headspin.io/solutions/appium-mobile-test-automation"><img
src="/docs/en/latest/assets/images/sponsor-logo-headspin.png" style="width: 300px"/></a>
</div>
HeadSpin is a real device performance and UX analysis cloud, with full support for Appium. When you
run your Appium tests on HeadSpin, you get access to comprehensive performance reports about your
app, including potential network, system resource, or user experience issues. HeadSpin supports
a variety of complex testing modes, including hooking up your own devices to the cloud, injecting
and receiving video and audio to/from devices, working with media (streaming) platforms, and more.
HeadSpin has been one of the Appium project's biggest supporters for a long time, and currently
employs two of Appium's core maintainers, donating a significant portion of their time towards the
development, maintenance, support, and leadership of open source Appium repos. HeadSpin has also
worked hard towards Appium's vision of a robust Appium ecosystem, contributing several
HeadSpin-maintained Appium drivers and plugins to the community:
- A [Roku TV driver](https://github.com/headspinio/appium-roku-driver)
- A [Tizen TV driver](https://github.com/headspinio/appium-tizen-tv-driver/)
- A [LG webOS TV driver](https://github.com/headspinio/appium-lg-webos-driver/)
- A [Unity game automation plugin](https://github.com/headspinio/appium-altunity-plugin)
These are all free and open source Appium components that HeadSpin has donated to the community
with the goal of fostering collaboration in these areas of media app automation.
Looking to the future, HeadSpin plans to continue supporting Appium in significant ways, both as
a Development Partner and a significant contributor to the Appium ecosystem. The Appium project is
deeply indebted to HeadSpin for all of its support, and is proud to take this moment to recognize
HeadSpin as our first official Development Partner!
@@ -0,0 +1,36 @@
---
authors:
- jlipps
date: 2024-06-10
---
# Announcing Sauce Labs as Appium's Strategic Partner
The good news surrounding our new [sponsorship and contributor compensation
program](https://appium.io/docs/en/latest/blog/2024/05/14/announcing-appiums-sponsorship-program/)
just keeps coming! Effective immediately we are fortunate and excited to be able to welcome a new Strategic Partner to
the Appium project: <a href="https://saucelabs.com/resources/blog/appium-strategic-partner">Sauce Labs</a>!
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://saucelabs.com/resources/blog/appium-strategic-partner"><img src="/docs/en/latest/assets/images/sponsor-logo-sauce.png" style="width: 300px"/></a>
</div>
Sauce Labs has a long history of support for the Appium project. In fact, Appium was initially
incubated at Sauce Labs under the direction of [@jlipps](https://github.com/jlipps), in the early
days of mobile automation. Sauce Labs always envisioned Appium as being a project for and by the
community, and cemented this perspective in 2016 with the donation of Appium to the JS Foundation
(now the [OpenJS Foundation](https://openjsf.org/)). To this day, developers associated with Sauce
Labs continue to help maintain various parts of the Appium project.
Now, Sauce Labs is making a further commitment to support Appium financially as a way to enable
our new contributor compensation program. We're very excited about this program as a vehicle for
getting more people involved in Appium's development and maintenance. With the help of Strategic
Partners like Sauce Labs, our project will be better able to meet the needs of our constantly
growing userbase, and attract new developers (like you?) to build the Appium ecosystem together.
Needless to say, we are extremely grateful for Sauce Labs's support!
**About Sauce Labs**
<em>Sauce Labs is the leader in continuous quality. Our Platform for Test helps organizations transform software testing from a chore to a competitive advantage. With decades of expertise and deep roots in the Selenium and Appium open source communities, high performing software teams use our platform to execute any testing workload across thousands of different devices, browsers, and operating systems—anywhere, any time, and at any scale. For more information, please visit [saucelabs.com](https://saucelabs.com).</em>
+1
View File
@@ -38,6 +38,7 @@ below.
|`--log`|Also send log output to this file|string||`-g`|
|`--log-filters`|One or more log filtering rules|array|||
|`--log-level`|Log level (console[:file]) (Value must be one of: `info`, `info:debug`, `info:info`, `info:warn`, `info:error`, `warn`, `warn:debug`, `warn:info`, `warn:warn`, `warn:error`, `error`, `error:debug`, `error:info`, `error:warn`, `error:error`, `debug`, `debug:debug`, `debug:info`, `debug:warn`, `debug:error`)|string|`debug`||
|`--log-format`|Log format (Value must be to one of: `text`, `json`, `pretty_json`). If logs are printed as JSON then the text coloring is always disabled.|string|`text`||
|`--log-no-colors`|Do not use color in console output|boolean|`false`||
|`--log-timestamp`|Show timestamps in console output|boolean|`false`||
|`--long-stacktrace`|Add long stack traces to log entries. Recommended for debugging only.|boolean|`false`||
+1
View File
@@ -21,3 +21,4 @@ environment variables that the Appium server understands:
|`APPIUM_OMIT_PEER_DEPS`|Adds `--omit=peer` to all the NPM commands run internally by Appium. Mostly an internal feature.|
|`APPIUM_APPS_CACHE_MAX_AGE`|Allows to set the maximum age (in minutes) for [cached applications](../guides/caching.md). The default value is `60 * 24` (24 hours). Do not set it to a lower number than the duration of a single session startup.|
|`APPIUM_APPS_CACHE_MAX_ITEMS`|Allows to set the maximum amount of [cached applications](../guides/caching.md). The default value is `1024`. Do not set it to a lower number than the amount of apps in all parallel sessions per process.|
|`APPIUM_APPS_CACHE_IGNORE_URL_QUERY`| If the above option is enabled then the 'search' part of the app URL will be cut off from cache keys. See the corresponding [feature request](https://discuss.appium.io/t/regarding-app-caching-when-using-aws-s3-presigned-urls/42713) for more details. Disabled by default.|
+5
View File
@@ -24,5 +24,10 @@ will only install the missing extensions.
Refer to the [Ecosystem documentation](../ecosystem/index.md) to learn more about the extensions
listed above.
This commands also supports the functionality that allows to fully reset your Appium server
deployment if you experience various configuration issues,
for example, due to a failed upgrade attempt from an older Appium version, on server startup.
By running `appium setup reset` the server would uninstall all installed drivers, plugins and their related manifest files from the currently used Appium home folder.
[^1]: Only installed if the host machine is running macOS.
[^2]: Only installed if the host machine is running Windows.
+150
View File
@@ -0,0 +1,150 @@
---
hide:
- navigation
title: Contributing to Appium
---
The Appium project would not exist without the many contributions of code, documentation,
maintenance, and support from companies and volunteers. As such, we welcome contributions!
There are a lot of different ways to help the project - see below for everything you can do and the
processes to follow for each contribution method. Note that no matter how you contribute, your
participation is governed by our [Code of Conduct](https://github.com/appium/appium/blob/master/CONDUCT.md).
## Join the Discussion Forum
You don't need to know the internals of Appium to be able to contribute! If you have experience with
using Appium and feel like sharing your knowledge with others, consider helping out users on the
Appium forums at [discuss.appium.io](https://discuss.appium.io/). Hop on over and see if there are
any questions that you can answer.
## Report Bugs or Feature Requests
If you've encountered a bug, or have a cool feature in mind that you think Appium should support,
make sure to let us know at our [GitHub issue tracker](https://github.com/appium/appium/issues).
Please use the appropriate issue form template when creating your issue.
## Triage Issues
In addition to creating issues, you can also help us investigate already reported issues. All you
need is enough familiarity with Appium to try and reproduce bugs.
You can get started by checking our [GitHub issue tracker](https://github.com/appium/appium/issues)
for issues with labels such as `Needs Triage` or `Needs Info`, and leaving relevant comments:
- If the issue is a duplicate, drop a link to the original issue
- If the user has not provided enough information (such as Appium logs), ask them for more details
- If you can reproduce the problem on your own environment, provide all the information that you think
would help us track down the cause of the issue
For further information on triaging Appium issues (for any Appium project repository), please contact
any member of the [Technical Committee](https://github.com/appium/appium/blob/master/GOVERNANCE.md#the-technical-committee).
## Contribute Code
We are always open to pull requests for improving the Appium code or documentation!
!!! info
Developer information may not be kept up to date as frequently as user-facing information, or
it may be most relevant in its current form on the online repository, not in this published
version. Make sure to check the repo or discuss with maintainers. We would be glad to help
new contributors get started!
Start by cloning the repository (we recommend [forking](https://github.com/appium/appium/fork)
it first):
```sh
git clone https://github.com/appium/appium.git
cd appium
```
!!! info
If you are VS Code user, you can easily check out the project using [Runme](https://runme.dev/api/runme?repository=https%3A%2F%2Fgithub.com%2Fappium%2Fappium.git&fileToOpen=packages%2Fappium%2Fdocs%2Fen%2Fcontributing%2Findex.md).
Install dependencies:
```sh
npm install
```
From here on there are several things you can do.
Build the project:
```sh
npm run build
```
Build the project and watch for changes:
```sh
npm run dev
```
Start the locally built Appium server:
```sh
npm start
```
Run various tests:
```sh
npm run lint
npm run test:unit
npm run test:types
npm run test:smoke
npm run test:e2e
npm run test:quick # unit and types
npm run test:slow # everything
```
You can also run tests for specific workspaces, e.g.:
```sh
export APPIUM_WORKSPACE=@appium/base-driver
npm run test:unit -w $APPIUM_WORKSPACE
```
### Documentation
The documentation for this project is [available in the project repository itself](https://github.com/appium/appium/tree/master/packages/appium/docs).
It is contained in Markdown files, which are built by our documentation system in the
`@appium/docutils` module. This module is based on [MkDocs](https://www.mkdocs.org/) and therefore
requires [Python](https://www.python.org/) to be installed on your system.
Install Python dependencies:
```sh
npm run install-docs-deps
```
After making your changes, you can run the documentation server in dev mode:
```sh
npm run dev:docs
```
You can then view the documentation at `http://127.0.0.1:8000/docs/en`.
## Translating Appium Documentation
The process of Appium documents localization into languages other than English is automated and is done via
the [Crowdin Translations Management System](https://crowdin.com). Do not edit any translated documents
directly in the GitHub Appium repository as they are going to be replaced with ones exported from Crowdin
during an upcoming sync.
### Where To Start
If you would like to contribute to the translation of Appium documents into your language then simply join
the translators group for the [Appium Documentation](https://crowdin.com/project/appium-documentation)
Crowdin project, and start translating documents there. If you see that your language is missing from
the list of available Crowdin languages then simply let us know by creating an
[issue](https://github.com/appium/appium/issues).
### Source Language Updates
Changes in documents are synchronized to Crowdin automatically via the `Update Crowdin English Docs` GitHub action.
This action is triggered automatically as soon as there are any changes under `packages/appium/docs/en/**.md`
or `packages/appium/docs/mkdocs-en.yml`.
### Fetching Translated Documents
In order to fetch translated files from Crowdin to the GitHub repository it is necessary to trigger
the `Sync Crowdin Docs Translations` action. This action should also automatically create a PR with
corresponding translated resources included.
@@ -1,90 +0,0 @@
---
title: Contributing Code
---
To contribute to the Appium code base make sure to check out the Git repository.
!!! info
If you are VS Code user you can easily check out the project using [Runme](https://runme.dev/api/runme?repository=https%3A%2F%2Fgithub.com%2Fappium%2Fappium.git&fileToOpen=packages%2Fappium%2Fdocs%2Fen%2Fcontributing%2Findex.md).
It is advised to [fork](https://github.com/appium/appium/fork) before cloning it to your system.
```sh
export GITHUB_USERNAME=<your-username>
git clone git@github.com:$GITHUB_USERNAME/appium.git
```
After cloning you can go ahead and install the project dependencies:
```sh
npm install
```
From here on there are several things you can do.
### Watch Files
When developing Appium code we have to watch all JavaScript and TypeScript files to re-compile them after every change. You can run this watch process via:
```sh
npm run dev
```
### Start Appium in Dev-Mode
To test your changes you can run Appium in dev mode via:
```sh
npm start
```
### Run Tests
The project maintains a set of different test variations you can run to verify the quality of the code.
#### Linting
Appium uses [`eslint`](https://eslint.org/) for static code analysis and linting. You can run these checks via:
```sh
npm run lint
```
#### Unit
```sh
npm run test:unit
```
You can also run tests for specific workspaces, e.g.:
```sh
export APPIUM_WORKSPACE=@appium/doctor
npm run test:unit -w $APPIUM_WORKSPACE
```
#### Smoke and E2E
```sh
npm run test:slow
```
### Deploy Docs Locally
Our documentation system uses [MKDocs](https://www.mkdocs.org/) and therefore requires [Python](https://www.python.org/) to be installed on your system. You can run the docs by:
```sh
# installing needed Python dependencies
pip install -r packages/docutils/requirements.txt
# build the project
npm run build
# run dev server
npm run dev:docs
```
You should be able to view the page at `http://127.0.0.1:8000/docs/en`:
```sh
open http://127.0.0.1:8000/docs/en
```
@@ -1,38 +0,0 @@
---
hide:
- toc
title: Contributing to Appium
---
Appium is open source, available under an Apache 2.0 license. Appium's copyright is held by the
[OpenJS Foundation](https://openjsf.org), and Appium receives contributions from many companies
across several software industries, regardless of their competitive status. (3rd-party drivers and
plugins are available under the licenses provided by their authors.)
As such, we welcome contributions! The project moves forward in relation to the investment of
contributions of code, documentation, maintenance, and support from companies and volunteers.
This section of Appium's documentation is for those who are interested in contributing to Appium's
development. It contains developer overviews, guides, and notes. Use the navigation menu to find
a specific topic. All the information in these guides assumes in-depth familiarity with Appium
already.
!!! warning
Developer information may not be kept up to date as frequently as user-facing information, or
it may be most relevant in its current form on the online repository, not in this published
version. Always be sure to check the repo or discuss with maintainers. We're always happy to
help new contributors get started!
## Ways to Contribute
The project offers a variety of ways to contribute, e.g.:
- [contributing code](./develop.md)
- improving documentation
- creating educational content (blog posts, tutorials, videos, etc.)
- spreading the good word about the project (e.g. via Twitter)
- filing bugs if you discover them while using Appium
- making feature requests if you are missing something in the project or help triaging bugs
- supporting users in the [Appium forum](https://discuss.appium.io/)
@@ -324,6 +324,10 @@ Currently, you also need to define a `doesSupportBidi` field on your driver inst
it is set to `true`. Appium will not turn on its Websocket servers for your driver and set up any
handlers unless your driver says that it supports BiDi in this way.
You are not limited to BiDi commands that are defined in the official BiDi specification. If you
wish to define new commands, you may do so; you just need to tell Appium about them! See
[below](#extend-the-existing-protocol-with-new-commands) for more information.
### Implement element finding
Element finding is a special command implementation case. You don't actually want to override
@@ -574,9 +578,10 @@ to the upstream connection.
You may find that the existing commands don't cut it for your driver. If you want to expose
behaviours that don't map to any of the existing commands, you can create new commands in one of
two ways:
three ways:
1. Extending the WebDriver protocol and creating client-side plugins to access the extensions
1. Extending the classic WebDriver protocol and creating client-side plugins to access the extensions via the classic HTTP interface
1. Extending the WebDriver BiDi protocol with new modules and methods, accessed from a client via the BiDi interface
1. Overloading the Execute Script command by defining [Execute
Methods](../guides/execute-methods.md)
@@ -606,7 +611,39 @@ won't have nice client-side functions designed to target these endpoints. So you
create and release client-side plugins for each language you want to support (directions or
examples can be found at the relevant client docs).
An alternative to this way of doing things is to overload a command which all WebDriver clients
The second way of adding new commands is adding them as BiDi commands (accessed via the BiDi
websocket interface, rather than the classic HTTP interface). BiDi commands come in two parts:
a "module", which is basically a container or namespace, and a "command", which is the name of your
new command.
As with the first method, you teach Appium to recognize your new BiDi commands by adding a static
field to your driver class, called `newBidiCommands`. It has a format similar to `newMethodMap`.
Basically it encapsulates information about the BiDi module, BiDi command name, reference to your
driver instance method that will handle the command, and required and optional parameters. Here's
an example of a `newBidiCommands` as implemented on an imaginary driver:
```js
static newBidiCommands = {
video: {
startFramerateCapture: {
command: 'startFrameCap',
params: {
required: ['videoSource'],
optional: ['showOnScreen'],
}
},
stopFramerateCapture: {
command: 'stopFrameCap',
},
}
};
```
In this imaginary example, we have defined two new BiDi commands: `video.startFramerateCapture` and
`video.stopFramerateCapture`. The first command takes a required and an optional parameter, and the
second does not. When combined with generic BiDi support in your driver (see [the section on BiDi](#implement-webdriver-bidi-commands) above), and given an implementation of the appropriate methods on your driver (e.g. `startFrameCap` and `stopFrameCap` in this example), clients would be able to send these BiDi commands using whatever mechanism normally exists for doing so in the client library.
An alternative to these other ways of doing things is to overload a command which all WebDriver clients
have access to already: Execute Script. Appium provides some a convenient tool for making this
easy. Let's say you are building a driver for stereo system called `soundz`, and you wanted to
create a command for playing a song by name. You could expose this to your users in such a way that
@@ -657,6 +694,10 @@ A couple notes about this system:
1. The `executeMethod` helper will reject with an error if a script name doesn't match one of the
script names defined as a command in `executeMethodMap`, or if there are missing parameters.
One of the nice things about the Execute Method strategy is that methods implemented in this way
will be available via the classic or BiDi interfaces (since they will result in the same Appium
handlers being called).
### Build Appium Doctor checks
@@ -222,30 +222,23 @@ async handle(next, driver, cmdName, ...args) {
}
```
### Work around driver proxies
### Working with driver proxies
There is a bit of a gotcha with handling Appium commands. Appium drivers have the ability to turn
on a special 'proxy' mode, wherein the Appium server process takes a look at incoming URLs, and
decides whether to forward them on to some upstream WebDriver server. It could happen that
a command which a plugin wants to handle is designated as a command which is being proxied to an
upstream server. In this case, we run into a problem, because the plugin never gets a chance to
handle that command! For this reason, plugins can implement a special member function called
`shouldAvoidProxy`, which takes the following parameters:
1. `method` - string denoting HTTP method (`GET`, `POST`, etc...)
2. `route` - string denoting the requested resource, for example `/session/8b3d9aa8-a0ca-47b9-9ab7-446e818ec4fc/source`
3. `body` - optional value of any type representing the WebDriver request body
These parameters define an incoming request. If you want to handle a command in your plugin which
would normally be proxied directly through a driver, you could disable or 'avoid' proxying the
request, and instead have the request fall into the typical Appium command execution flow (and
thereby your own command function). To avoid proxying a request, just return `true` from
`shouldAvoidProxy`. Some examples of how this method is used are in the [Universal XML
plugin](https://github.com/appium/appium/blob/master/packages/universal-xml/lib/plugin.js) (where
we want to avoid proxying the `getPageSource` command, or in the [Images
plugin](https://github.com/appium/appium/blob/master/packages/images-plugin/lib/plugin.js) (where
we want to conditionally avoid proxying any command if it looks like it contains an image element).
upstream server. In this case, we might run into a problem, because the plugin never gets a chance to
handle that command! The way Appium handles this is as follows:
1. When a command comes in, before deciding whether to proxy the command, the main protocol handler
checks to see whether a plugin would handle the command.
2. If a plugin would *not* handle the command--all proceeds as normal, and the request is either
proxied or not, based on the driver's proxy mode.
3. If a plugin *would* handle the command, then the proxy behavior is skipped for the time being,
and wrapped up as the `next` function sent to the plugin. So if you have a command handler in
your plugin, and you want to be sure that the default driver proxying *does* take place, then
simply `await next()` instead of (or in addition to) whatever your plugin handler is doing.
### Throw WebDriver-specific errors
@@ -37,12 +37,15 @@ These drivers are not maintained by the Appium team and can be used to target ad
|Driver|Installation Key|Platform(s)|Mode(s)|Supported By|
|--|--|--|--|--|
|[Flutter](https://github.com/appium/appium-flutter-driver)|`--source=npm appium-flutter-driver`|iOS, Android|Native|Community|
|[Flutter Integration](https://github.com/AppiumTestDistribution/appium-flutter-integration-driver)|`--source=npm appium-flutter-integration-driver`|iOS, Android|Native|Community / `@AppiumTestDistribution`|
|[LG WebOS](https://github.com/headspinio/appium-lg-webos-driver)|`--source=npm appium-lg-webos-driver`|LG TV|Web|HeadSpin|
|[Linux](https://github.com/fantonglang/appium-linux-driver)|`--source=npm @stdspa/appium-linux-driver`|Linux|Native|`@fantonglang`|
|[Roku](https://github.com/headspinio/appium-roku-driver)|`--source=npm @headspinio/appium-roku-driver`|Roku|Native|HeadSpin|
|[Tizen](https://github.com/Samsung/appium-tizen-driver)|`--source=npm appium-tizen-driver`|Android|Native|Community / Samsung|
|[TizenTV](https://github.com/headspinio/appium-tizen-tv-driver)|`--source=npm appium-tizen-tv-driver`|Samsung TV|Web|HeadSpin|
|[Youi](https://github.com/YOU-i-Labs/appium-youiengine-driver)|`--source=npm appium-youiengine-driver`|iOS, Android, macOS, Linux, tvOS|Native|Community / You.i|
|[axe UiAutomator2](https://docs.deque.com/devtools-mobile/appium-setup)|`--source=npm @axe-devtools/axe-appium-uiautomator2-driver`|Android|Native|[Deque](https://www.deque.com)|
|[axe XCUITest](https://docs.deque.com/devtools-mobile/appium-setup)|`--source=npm @axe-devtools/axe-appium-xcuitest-driver`|iOS|Native|[Deque](https://www.deque.com)|
!!! note
+5 -2
View File
@@ -32,9 +32,12 @@ These plugins are not maintained by the Appium team and can provide additional f
|<div style="width:6em">Plugin</div>|<div style="width:19em">Installation Key</div>|Description|<div style="width:13em">Supported By</div>|
|---|---|---|---|
|[AltUnity](https://github.com/headspinio/appium-altunity-plugin)|`--source=npm appium-altunity-plugin`|Target Unity games and apps for automation with a new context, via the AltUnityTester framework|HeadSpin|
|[Device Farm](https://github.com/AppiumTestDistribution/appium-device-farm)|`--source=npm appium-device-farm`|Manage and create driver session on connected android devices and iOS Simulators.|`@AppiumTestDistribution`|
|[Device Farm](https://github.com/AppiumTestDistribution/appium-device-farm)|`--source=npm appium-device-farm`|Manage and create driver sessions on connected Android devices and iOS simulators|`@AppiumTestDistribution`|
|[Gestures](https://github.com/AppiumTestDistribution/appium-gestures-plugin)|`--source=npm appium-gestures-plugin`|Perform basic gestures using W3C Actions|`@AppiumTestDistribution`|
|[Interceptor](https://github.com/AppiumTestDistribution/appium-interceptor-plugin)|`--source=npm appium-interceptor`|Intercept and mock API requests and responses|`@AppiumTestDistribution`|
|[OCR](https://github.com/jlipps/appium-ocr-plugin)|`--source=npm appium-ocr-plugin`|Find elements via OCR text|`@jlipps`|
|[Reporter](https://github.com/AppiumTestDistribution/appium-reporter-plugin)|`--source=npm appium-reporter-plugin`|Generates standalone consolidated html report with screenshots. Reports can be fetched from appium server, without worrying about heavy lifting such as screenshot capturing, report generation etc.|`@AppiumTestDistribution`|
|[Reporter](https://github.com/AppiumTestDistribution/appium-reporter-plugin)|`--source=npm appium-reporter-plugin`|Generate standalone consolidated HTML reports with screenshots|`@AppiumTestDistribution`|
|[Wait](https://github.com/AppiumTestDistribution/appium-wait-plugin)|`--source=npm appium-wait-plugin`|Manage global element wait timeouts|`@AppiumTestDistribution`|
!!! note
@@ -14,7 +14,7 @@ environment before it is merged or published. This tutorial describes how to ach
## Installation
- [Check out]((https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally)) the PR locally.
- [Check out](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally) the PR locally.
There is also an option (although it is less flexible, because you won't be able to easily fetch
any changes to this PR later) to simply [download](https://docs.github.com/en/repositories/working-with-files/using-files/downloading-source-code-archives) and unzip the sources
locally. If you choose the later option then no `git` tool would be necessary.
@@ -63,6 +63,11 @@ of it. It is a [LRU Cache](https://www.npmjs.com/package/lru-cache) with the fol
[APPIUM_APPS_CACHE_MAX_AGE](../cli/env-vars.md) environment variable.
Do not set it to a lower number than the duration of a single session startup.
- TTL is refreshed for each entry upon access
- By default the full application URL is used as cache key. You may change this behavior
by enabling the [APPIUM_APPS_CACHE_IGNORE_URL_QUERY](../cli/env-vars.md) environment variable.
If the above option is enabled then the 'search' part of the app URL will be cut off from cache keys.
See the corresponding [feature request](https://discuss.appium.io/t/regarding-app-caching-when-using-aws-s3-presigned-urls/42713)
for more details.
!!! warning
+11 -1
View File
@@ -32,7 +32,7 @@ Here is a list of all the globally-recognized Appium capabilities:
!!! info
Individual drivers and plugins can support other capabilities, so refer to their documentation
for lists ofspecific capability names. Some drivers may also not support all of these capabilities
for lists of specific capability names. Some drivers may also not support all of these capabilities
| <div style="width:12em">Capability</div> | Type | Required? | Description |
|--------------------------------------------|-----------|-----------|----------------------------|
@@ -67,6 +67,16 @@ Each Appium client has its own way of constructing capabilities and starting a s
examples of doing this in each client library, head to the [Ecosystem](../ecosystem/index.md) page
and click through to the appropriate client documentation.
## BiDi Protocol Support
Appium supports [WebDriver BiDi](https://w3c.github.io/webdriver-bidi/) protocol since base–driver 9.5.0.
The actual behavior depends on individual drivers while the Appium and the baseーdriver support the protocol.
Please make sure if a driver supports the protocol and what kind of commands/events it supports in the documentation.
| Capability Name | Type | Description |
|---|---|−--|
| `webSocketUrl` | `boolean` | To enable BiDi protocol in the session. |
## Using `appium:options` to Group Capabilities
If you use a lot of `appium:` capabilities in your tests, it can get a little repetitive. You can
+1 -1
View File
@@ -42,7 +42,7 @@ property in your `package.json` and it will be automatically discovered.
Appium will search _up_ the directory tree from the current working directory for one of these
files. If it reaches the current user's home directory or filesystem root, it will stop looking.
To specify a _custom_ location for your config file, use `appium --config-file /path/to/config/file`.
To specify a _custom_ location for your config file, use `appium --config /path/to/config/file`.
#### Configuration File Format
@@ -6,6 +6,11 @@ This document is a guide for those who are using Appium 1 and wish to migrate to
contains a list of breaking changes and how to migrate your environments or test suites to ensure
compatibility with Appium 2.
!!! note
Latest Appium drivers/plugins would have update since we created this documentation
because we keep developing the ecosystem.
## Overview of Appium 2
Appium 2 is the most major new release of Appium in over 5 years. The changes in Appium 2 are _not_
@@ -44,6 +44,14 @@ might use. Here is an incomplete list of examples from some of Appium's official
|`record_audio`|Allow recording of host machine audio inputs|XCUITest|
|`execute_driver_script`| Allows to send a request which has multiple Appium commands.|Execute Driver Plugin|
## Driver-scope security
Since Appium server version 2.12.3 there is a possibility to prefix each feature name with the corresponding automationName where it is going to be applied. For example, if you provide the following features to allow:
`uiautomator2:adb_shell,xcuitest:get_server_logs,*:record_audio`, then the `adb_shell` would only be allowed
for the UiAutomator2 driver, `get_server` - for the XCUITest driver and the `record_audio` one - for
all installed drivers. Feature names provided without explicit automation name prefix are equivalent to
these having the `*:` prefix. The same feature naming rule applies to the list of denied features.
## Examples
To turn on the `get_server_logs` feature for my Appium server, I could start it like this:
+31 -2
View File
@@ -6,10 +6,19 @@ hide:
title: Welcome
---
<style>
.md-typeset h1 {
.md-typeset h1,
.appium-sponsor-thanks {
display: none;
}
</style>
<div style="text-align:center;width:100%;background-color:#ec366d;margin-top:-3em;margin-bottom:2em;">
<h3 style="color:#ffffff;padding: 8px;">
AppiumConf 2025 is partnering with SeleniumConf<br/> <span style="font-size:0.8em;">March 26-28 in Valencia, Spain. Join us to learn and connect with the community!</span><br/>
<a style="color:#fcba12" href="https://seleniumconf.com/" target="_blank">Register Now</a>
</h3>
</div>
<div style="text-align: center">
<img src="assets/images/appium-logo-horiz.png" style="max-width: 400px;" />
</div>
@@ -19,6 +28,26 @@ software, designed to facilitate UI automation of many app platforms, including
Android, Tizen), browser (Chrome, Firefox, Safari), desktop (macOS, Windows), TV (Roku, tvOS,
Android TV, Samsung), and more!
<div style="text-align: center; margin-top: 2rem; font-style: italic;">
Appium is extremely grateful for the support of its key partners! (Learn more about our
sponsorship program and contributor compensation scheme <a
href="https://github.com/appium/appium/blob/master/GOVERNANCE.md#sponsorship">here</a>)
<div class="homepageSponsors">
<div class="homepageSponsor">
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<img src="assets/images/sponsor-logo-browserstack-dark.png#only-dark" style="width: 220px;" />
<img src="assets/images/sponsor-logo-browserstack-light.png#only-light" style="width: 220px;" />
</a>
</div>
<div class="homepageSponsor">
<a href="https://saucelabs.com/resources/blog/appium-strategic-partner">
<img src="assets/images/sponsor-logo-sauce.png" style="width: 200px;" />
</a>
</div>
</div>
</div>
## Explore the Documentation
<div class="grid cards" markdown>
@@ -31,6 +60,6 @@ Android TV, Samsung), and more!
- Read the different [__Guides__](./guides/migrating-1-to-2.md) for a variety of instructions, tips and tricks
- Check out various third-party [__Resources__](./resources.md) to explore Appium around the web
- For creating your own Appium extensions, see the [__Developer__](./developing/index.md) documentation
- For contributions to Appium itself, refer to the [__Contributing__](./contributing/index.md) page
- For contributions to Appium itself, refer to the [__Contributing__](./contributing.md) page
</div>
+3 -3
View File
@@ -40,14 +40,14 @@ but it is certainly a good one! So let's dive in.
## Appium's choice of API
Appium is very fortunate to have been preceded by a technology which has been a long-standing
pioneer in the field of UI automation, namely [Selenium](https://seleniumhq.org). The goal of the
pioneer in the field of UI automation, namely [Selenium](https://selenium.dev). The goal of the
Selenium project has been to support UI automation of web browsers, and in this way we can think of
it as occupying a subset of Appium's goals. Along the way, Selenium (and, after they merged,
another project called WebDriver) developed a relatively stable API for browser automation.
Over the years, Selenium worked with various web browser vendors and the [W3C](https://w3c.org)
Over the years, Selenium worked with various web browser vendors and the [W3C](https://w3.org)
standards group to turn its API into an official web browser standard, called the [WebDriver
specification](https://w3c.github.io/webdriver/webdriver-spec.html). All the main browsers now
specification](https://w3c.github.io/webdriver/). All the main browsers now
implement automation capabilities inline with the WebDriver spec, without the Selenium team having
to maintain any software that performs actual automation; standards for the win!
+1 -1
View File
@@ -6,7 +6,7 @@ title: Intro to Appium Clients
---
For all the reasons discussed in the [main Overview](./appium.md), Appium is based on the [W3C
WebDriver specification](https://w3c.github.io/webdriver/webdriver-spec.html). This means that
WebDriver specification](https://w3c.github.io/webdriver/). This means that
Appium implements a client-server architecture. The server (consisting of Appium itself along with
any drivers or plugins you are using for automation) is connected to the devices under test, and
is actually responsible for making automation happen on those devices. The client (driven by *you*,
+2 -2
View File
@@ -37,7 +37,7 @@ their WebDriver protocol equivalents.
So let's say I wanted to do something with this empty driver; first I have to decide which
WebDriver command I want to implement. For our example, let's take the [Navigate
To](https://www.w3.org/TR/webdriver1/#navigate-to) WebDriver command. Leave aside for the moment
To](https://w3c.github.io/webdriver/#navigate-to) WebDriver command. Leave aside for the moment
what I want to have the driver *do* when this command is executed. To tell Appium the driver can
handle the command, all we have to do is define a method like this in our driver class:[^1]
@@ -96,7 +96,7 @@ a driver becomes the task of mapping the WebDriver protocol to this underlying A
a set of different underlying APIs--for example, the UiAutomator2 driver relies not only on the
[UiAutomator2](https://developer.android.com/training/testing/other-components/ui-automator)
technology from Google, but also functions only available through
[ADB](https://developer.android.com/studio/command-line/adb), as well as functions only available
[ADB](https://developer.android.com/tools/adb), as well as functions only available
via the Android SDK inside a helper app). Tying it all together into a single, usable, WebDriver
interface is the incredibly useful (but incredibly challenging) art of driver development!
+2 -2
View File
@@ -137,8 +137,8 @@ already had well over 1,000 commits.
Appium began to grow and mature significantly. In May 2014,
we released Appium 1.0, which stood as a milestone in Appium's development.
Appium was given
[various](http://sauceio.com/index.php/2014/01/appium-selected-as-a-black-duck-open-source-rookie-of-the-year/)
[awards](http://sauceio.com/index.php/2014/10/appium-wins-a-bossy-award-from-infoworld/)
[various](https://www.prnewswire.com/news-releases/black-duck-announces-black-duck-open-source-rookies-of-the-year-winners-242383341.html)
[awards](https://www.infoworld.com/article/2241247/164642-bossie-awards-2014-the-best-open-source-application-development-tools.html)
and became the most popular open-source cross-platform mobile automation
framework. Stability improved, bugs were prioritized and fixed, and features
added. Sauce Labs increased the number of developers it donated to working
@@ -22,7 +22,7 @@ According to the driver, in addition to a working Appium server, we also need to
### Android SDK
- The easiest way to set up the Android SDK requirements is by downloading [Android Studio](https://developer.android.com/studio).
We need to use its SDK manager (_Settings -> Appearance & Behavior -> System Settings -> Android SDK_)
We need to use its SDK manager (_Settings -> Languages & Frameworks -> Android SDK_)
to download the following items:
- Android SDK Platform (select whichever Android platform we want to automate, for example, API level 30)
- Android SDK Platform-Tools
+60
View File
@@ -0,0 +1,60 @@
---
hide:
- navigation
- toc
title: Sponsors & Backers
---
<style>
.appium-sponsor-thanks { display: none; }
.sponsor-section img { height: 64px; padding-right: 1em; }
</style>
Appium is an Apache-2 licensed open source project whose development is made possible entirely by
donations of time and money by individuals and companies who benefit from our software and our
mission. If you'd like to join this amazing group and help ensure Appium's continued development
and maintenance, you can contribute via [Appium's OpenCollective
Hub](https://opencollective.com/appium).
## Development Partners
We are very grateful for the support of our Development Partners, who donate Appium development and
maintenance as part of their employees' core job duties!
## Strategic Partners
We are very grateful for the financial and marketing support of our exclusive Strategic Partners,
who contribute a significant ongoing investment of funds to help the project attract and reward
contributors!
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<picture>
<source srcset="../assets/images/sponsor-logo-browserstack-dark.png" media="(prefers-color-scheme: dark)"/>
<source srcset="../assets/images/sponsor-logo-browserstack-light.png" media="(prefers-color-scheme: light)"/>
<img src="../assets/images/sponsor-logo-browserstack-dark.png" width="250" alt="Browserstack"/>
</picture>
</a>
<a style="padding-left: 1em" href="https://saucelabs.com/resources/blog/appium-strategic-partner" target="_blank"><img src="../assets/images/sponsor-logo-sauce.png" width="250"/></a>
## Gold Sponsors
<a href="https://opencollective.com/appium" target="_blank"><img src="https://opencollective.com/appium/tiers/gold-sponsor.svg?avatarHeight=100&button=false&random=1"/></a>
[Become a Gold Sponsor](https://opencollective.com/appium/contribute/gold-sponsor-72877/checkout?interval=month&amount=500&contributeAs=me)
## Silver Sponsors
<a href="https://opencollective.com/appium" target="_blank"><img src="https://opencollective.com/appium/tiers/silver-sponsor.svg?avatarHeight=80&button=false&random=1"/></a>
[Become a Silver Sponsor](https://opencollective.com/appium/contribute/silver-sponsor-72876/checkout?interval=month&amount=250&contributeAs=me)
## Bronze Sponsors
<div class="sponsor-section">
<a href="https://magicpod.com/" target="_blank"><img src="https://images.opencollective.com/magicpod/722b7e4/avatar/64.png" alt="MagicPod" /></a>
<a href="https://route4me.com/" target="_blank"><img src="../assets/images/sponsor-logo-route4me.png" alt="Route Planning and Route Mapping" /></a>
<a href="https://webdriver.io/" target="_blank"><img src="https://images.opencollective.com/webdriverio/bbdd6c3/logo/64.png" alt="WebdriverIO" /></a>
</div>
[Become a Bronze Sponsor](https://opencollective.com/appium/contribute/sponsors-70690/checkout?interval=month&amount=100&contributeAs=me)
@@ -1,6 +1,3 @@
<!---Current latest commit hash in the original English documentation is e4dfa52 --->
---
title: Appium 1.xからAppium 2.xへ移行する
---
@@ -9,19 +6,30 @@ title: Appium 1.xからAppium 2.xへ移行する
This document is a guide for those who are using Appium 1.x and wish to migrate to Appium 2.x. It contains a list of breaking changes and how to migrate your environments or test suites to ensure compatibility with Appium 2.0.
--->
このドキュメントは既にAppium 1.xを利用している人がAppium 2.xに移行するための手引きです。
破壊的変更(breaking changes)の一覧や、実行環境・テストコードをAppium 2.0互換にするための方法が含まれます。
破壊的変更(breaking changes)の一覧や、実行環境・テストコードをAppium 2.0互換にするための方法が含まれます。
<!---
## Overview of Appium 2.0
--->
<!--
!!! note
Latest Appium drivers/plugins would have update since we created this documentation
because we keep developing the ecosystem.
--->
!!! note
Appiumは継続的に開発されているため、このドキュメントはAppiumドライバーやプラグインに関して情報古い可能性があります。
## Appium 2.0の概要
<!---
Appium 2.0 is the most major new release of Appium in over 5 years. The changes in Appium 2.0 are _not_ primarily related to changes in automation behaviors for specific platforms. Instead, Appium 2.0 reenvisions Appium as a _platform_ where "drivers" (code projects that introduce support for automation of a given platform) and "plugins" (code projects that allow for overriding, altering, extending, or adding behaviors to Appium) can be easily created and shared.
--->
Appium 2.0は過去5年間におけるAppiumのリリース野中で最も大きなリリースです。Appium 2.0の主要な変更は特定のプラットフォームに対する自動化された動作に関するものでは**ありません**。Appium 2.0はAppiumをドライバー(drivers)(あるプラットフォームに対する自動化を支援するためのプロジェクト)とプラグイン(plugins)(Appiumの動作を上書き、代替、拡張、もしくは追加するためのプロジェクト)という容易に実装、共有できる**仕組みを提供するプラットフォーム**として再考しています。
Appium 2.0は過去5年間におけるAppiumのリリース野中で最も大きなリリースです。Appium 2.0の主要な変更は特定のプラットフォームに対する自動化された動作に関するものでは**ありません**。Appium 2.0はAppiumをドライバー(drivers)(あるプラットフォームに対する自動化を支援するためのプロジェクト)とプラグイン(plugins)(Appiumの動作を上書き、代替、拡張、もしくは追加するためのプロジェクト)という容易に実装、共有できる**仕組みを提供するプラットフォーム**として再考しています。
<!---
At the same time, the Appium project is taking the opportunity to remove many old and deprecated bits of functionality.
@@ -72,7 +80,7 @@ appium --base-path=/wd/hub
You can also set server arguments as [Config file](./config.md) properties.
--->
この設定は[Config file](./config.md)からでも可能です。
この設定は[Config file](https://appium.io/docs/en/latest/guides/config/)からでも可能です。
### :bangbang: ドライバーのインストール
@@ -81,7 +89,7 @@ You can also set server arguments as [Config file](./config.md) properties.
When you installed Appium 1.x, all available drivers would be installed at the same time as the main Appium server. This is no longer the case. Simply installing Appium 2.0 (e.g., by `npm i -g appium`), will install the Appium server only, but no drivers. To install drivers, you must instead use the new [Appium extension CLI](../cli/extensions.md). For example, to install the latest versions of the XCUITest and UiAutomator2 drivers, after installing Appium you would run the following commands:
--->
Appium 1.xをインストールしたとき、全ての入手可能なドライバーは主となるAppiumサーバーと合わせてインストールされていました。Appium 2.0ではそうではありません。Appium 2.0のインストール(例えば `npm i -g appium`)は単にAppiumサーバーのみをインストールし、ドライバーはインストールしません。ドライバーをインストールするためには新しい[Appium拡張コマンドラインインタフェース(Appium extension CLI)](../cli/extensions.md)を使わなければいけません。例えば、最新のXCUITestとUiAutomator2ドライバーをインストールする場合、Appiumをインストールしたのちに次のコマンドを実行する必要があります。
Appium 1.xをインストールしたとき、全ての入手可能なドライバーはAppiumサーバーと合わせてインストールされていました。しかしAppium 2.0では異なります。Appium 2.0のインストール(例えば `npm i -g appium` を実行した時)は単にAppiumサーバーのみをインストールし、ドライバーはインストールされません。ドライバーをインストールするためには新しい[Appium拡張コマンドラインインタフェース(Appium extension CLI)](https://appium.io/docs/en/latest/cli/extensions/)を使わなければいけません。例えば、最新のXCUITestとUiAutomator2ドライバーをインストールする場合、Appiumをインストールしたのちに次のコマンドを実行する必要があります。
```bash
appium driver install uiautomator2 # installs the latest driver version
@@ -92,110 +100,195 @@ appium driver install xcuitest@4.12.2 # installs a specific driver version
At this point, your drivers are installed and ready. There's a lot more you can do with this CLI so be sure to check out the docs on it. If you're running in a CI environment or want to install Appium along with some drivers all in one step, you can do so using some special flags during install, for example:
--->
これにより、ドライバーはインストールされ、利用可能になります。このCLIはいろいろな機能を提供しているので、CLIのドキュメントを確認してみてください。もしCI上であったり、いくつかのドライバーをAppiumと一緒にインストールしたい場合、以下のようなフラグを利用することで実現可能です。
これにより、ドライバーがインストールされ、利用可能になります。このCLIはいろいろな機能を提供しているので、CLIのドキュメントを確認してみてください。もしCI上で実行したり、いくつかのドライバーをAppiumと一緒にインストールしたい場合、以下のようなフラグを利用することが可能です。
```bash
npm i -g appium --drivers=xcuitest,uiautomator2
```
<!---
This will install Appium and the two drivers for you in one go. Please uninstall any existing Appium 1.x npm packages (with `npm uninstall -g appium`) if you get an installation or startup error.
This will install Appium and the two drivers for you in one go. Please uninstall any existing Appium 1.x npm packages (with `npm uninstall -g appium`) if you get an installation or startup error.
--->
これはAppiumと2つのドライバーを一つのコマンドでインストールします。もしセットアップで何らかの問題が発生した場合、既存のAppium 1.xを`npm uninstall -g appium`で削除してみてください。
これはAppiumと2つのドライバーを、1つのコマンドでインストールします。もしセットアップで何らかの問題が発生した場合、既存のAppium 1.xを`npm uninstall -g appium`で削除してみてください。
### :bangbang: Drivers installation path
### :bangbang: ドライバーがインストールされるパス
<!---
When you installed Appium 1.x, all available drivers would be installed at the same time as the main Appium server.
The path was `/path/to/appium/node_modules`.
For example, `appium-webdriveragent` to build WebDriverAgent manually was `/path/to/appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent`.
Appium 2.0 installs such dependencies in `APPIUM_HOME` environment variable. The default path is `~/.appium`.
So, the path to `appium-webdriveragent` could be `$APPIUM_HOME/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent` after installing the XCUITest driver package.
--->
### :bangbang: Chromedriver installation flags
Appium 1.xをインストールしたとき、全ての入手可能なドライバーは主要なAppiumサーバーと合わせてインストールされていました。
そのパスは`/path/to/appium/node_modules`です。
例えば、手動でWebDriverAgentをビルドするための`appium-webdriveragent`パッケージは、`/path/to/appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent`でした。
Appium 2.0では、このような依存関係を環境変数 `APPIUM_HOME` にインストールします。デフォルトのパスは `~/.appium` です。
そのため、XCUITestドライバーパッケージをインストールすると、`appium-webdriveragent` へのパスは `$APPIUM_HOME/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent` となります。
### :bangbang: Chromeドライバーのインストールフラグ
<!---
In Appium 1.x it was possible to customize the way Chromedriver was installed (as part of the UiAutomator2 driver for example), using the following command line flags:
--->
Appium 1.xでは、以下のコマンドラインフラグを使って、(例えばUiAutomator2ドライバーの一部として)Chromedriverをインストールする方法の変更が可能でした。
* `--chromedriver-skip-install`
* `--chromedriver-version`
* `--chromedriver-cdnurl`
<!---
Because Appium 2.0 now installs drivers for you, and because these flags were implemented as NPM config flags, they will no longer work. Instead, use the following environment variables during driver installation:
--->
Appium 2.0では必要なドライバーだけインストールするようになり、またこれらのフラグはnpmの設定フラグとして実装されたため、これらのコマンドラインフラグは機能しません。代わりに、ドライバーのインストール時に以下の環境変数を使用してください:
* `APPIUM_SKIP_CHROMEDRIVER_INSTALL`
* `CHROMEDRIVER_VERSION`
* `CHROMEDRIVER_CDNURL`
For example:
例:
```bash
APPIUM_SKIP_CHROMEDRIVER_INSTALL=1 appium driver install uiautomator2
```
### :bangbang: Driver-specific command line options
### :bangbang: ドライバー特有のコマンドラインオプション
<!---
With Appium 1.x, command-line options specific to particular drivers were all hosted on the main Appium server. So, for example, `--chromedriver-executable` was a CLI parameter you could use with Appium to set the location of a specific Chromedriver version for use with, say, the UiAutomator2 driver.
--->
Appium 1.xでは、特定のドライバに特化したコマンドラインオプションは、すべてAppiumサーバーに中継されていました。
そのため、例えば`--chromedriver-executable`は、UiAutomator2ドライバーで使用する特定のChromedriverバージョンの場所を設定するためにAppiumで使用できるCLIパラメータでした。
<!--
With Appium 2.x, all driver- and platform-specific CLI params have been moved to the drivers themselves. To access them, you'll now need to prepend the argument with the extension type (either `driver` or `plugin`) and the name of the extension. For example, `--chromedriver-executable` becomes `--driver-uiautomator2-chromedriver-executable`.
-->
Appium 2.xでは、すべてのドライバーとプラットフォーム固有の CLI パラメータは、それらのドライバー自体が管理するかたちに移行しました。これらにアクセスするには、引数の前に拡張機能の種類 (`driver` または `plugin`) と拡張機能の名前を付ける必要があります。例えば、`--chromedriver-executable` は `--driver-uiautomator2-chromedriver-executable` となります。
### :bangbang: Driver-specific automation commands
### :bangbang: ドライバー特有の自動化コマンド
The definition of certain commands that pertain only to specific drivers has been moved to those
<!---
The definition of certain commands that pertain only to specific drivers has been moved to those
drivers' implementations. For example, `pressKeyCode` is specific to the UiAutomator2 driver and is
now understood only by that driver. In practice, the only breaking change here is the kind of error
you would encounter if the appropriate driver is not installed. Previously, you would get a `501
Not Yet Implemented` error if using a driver that didn't implement the command. Now, you will get
a `404 Not Found` error because if a driver that doesn't know about the command is not active, the
main Appium server will not define the route corresponding to the command.
--->
特定のドライバーにのみ関係するコマンドの定義は、そのドライバーの実装に移行しました。
例えば、`pressKeyCode`はUiAutomator2ドライバー特有のものなので、現在ではそのドライバーのみが解釈できます。
実際には、適切なドライバーがインストールされていない場合に発生するエラーの種類が変わります。
以前は、ドライバーが未実装のコマンドを実行すると `501 Not Yet Implemented` というエラーが返却されていました。
現在では、コマンドを実装していないドライバーがアクティブでない場合、主Appiumサーバーはそのコマンドは定義されていないと処理し、`404 Not Found` エラーを返却します。
### :bangbang: Driver updates
<!--
In the past, to get updates to your iOS or Android drivers, you'd simply wait for those updates to be rolled into a new release of Appium, and then update your Appium version. With Appium 2.x, the Appium server and the Appium drivers are versioned and released separately. This means that drivers can be on their own release cadence and that you can get driver updates as they happen, rather than waiting for a new Appium server release. The way to check for driver updates is with the CLI:
-->
以前は、iOSやAndroidに関わるドライバーの更新を入手するために、Appiumの新しいリリースにそれらの更新が組み込まれるのを待ち、Appiumのバージョンを更新していました。
Appium 2.xでは、AppiumサーバーとAppiumドライバーは各々にバージョンが管理され、別々にリリースされます。
つまりドライバーは独自のリリース周期で、新しいAppiumサーバーのリリースを待つのではなく、その都度更新を適用することができます。
ドライバーの更新をCLIでチェックする方法:
```bash
appium driver list --updates
```
<!--
If any updates are available, you can then run the `update` command for any given driver:
-->
更新が入手可能であれば、任意のドライバーに対して `update` コマンドを実行することができます。
```bash
appium driver update xcuitest
```
<!--
(For a complete description of the update command, check out the [Extension
CLI](../cli/extensions.md) doc)
-->
(更新コマンドの詳しい説明は [Extension CLI](https://appium.io/docs/en/latest/cli/extensions/#update) を確認してください。)
<!--
To update the Appium server itself, you do the same thing as in the past: `npm i -g appium`. Now, installing new versions of the Appium server will leave your drivers intact, so the whole process will be much more quick.
-->
Appium サーバー自体を更新するには、これまでと同じように `npm i -g appium` を実行します。現在、Appiumサーバーの新しいバージョンをインストールしても、ドライバーはそのままなので、プロセス全体がより迅速になります。
<!--
If you would like to update to a specific version, not the latest, please uninstall the driver and install the desired version using the `install` subcommand instead of `update`.
-->
最新のバージョンではなく、特定のバージョンに更新したい場合は、`update`の代わりに`install`サブコマンドを使ってドライバをアンインストールし、希望のバージョンをインストールしてください。
```bash
appium driver uninstall xcuitest
appium driver install xcuitest@4.11.1
```
### :bangbang: Protocol changes
### :bangbang: プロトコルの変更
<!--
Appium's API is based on the [W3C WebDriver Protocol](https://www.w3.org/TR/webdriver/), and it has supported this protocol for years. Before the W3C WebDriver Protocol was designed as a web standard, several other protocols were used for both Selenium and Appium. These protocols were the "JSONWP" (JSON Wire Protocol) and "MJSONWP" (Mobile JSON Wire Protocol). The W3C Protocol differs from the (M)JSONWP protocols in a few small ways.
-->
AppiumのAPIは[W3C WebDriver Protocol](https://www.w3.org/TR/webdriver/)に基づいており、何年もこのプロトコルをサポートしています。
W3C WebDriver Protocolがウェブ標準として設計される以前は、SeleniumとAppiumの両方で他のプロトコルが使用されていました。それは、「JSONWP」(JSON Wire Protocol)と「MJSONWP」(Mobile JSON Wire Protocol)です。
W3Cプロトコルと(M)JSONWPプロトコルはいくつか異なる点があります。
<!--
Up until Appium 2.0, Appium supported both protocols, so that older Selenium/Appium clients could still communicate with newer Appium servers. Moving forward, support for older protocols will be removed.
-->
### :bangbang: _Capabilities_
Appium 2.0までは、古いSelenium/Appiumクライアントが新しいAppiumサーバーと通信できるように、Appiumは両方のプロトコルをサポートしていました。今後、古いプロトコルのサポートは削除されます。
### :bangbang: Capabilitiesはベンダープレフィックスを使用しなければならない
<!--
One significant difference between old and new protocols is in the format of capabilities. Previously called "desired capabilities", and now called simply "capabilities", there is now a requirement for a so-called "vendor prefix" on any non-standard capabilities. The list of standard capabilities is given in the [WebDriver Protocol spec](https://www.w3.org/TR/webdriver/#capabilities), and includes a few commonly used capabilities such as `browserName` and `platformName`.
-->
古いプロトコルと新しいプロトコルの大きな違いのひとつは、Capabilitiesのフォーマットにあります。以前は "desired capabilities" と呼ばれていましたが、現在は単に "capabilities" と呼ばれ、非標準の機能にはいわゆる "vendor prefix" が要求されるようになりました。標準として組み込まれているcapabilitiesは [WebDriver Protocol spec](https://www.w3.org/TR/webdriver/#capabilities) に記載されており、`browserName` や `platformName` などのよく使われるcapabilitiesが含まれています。
<!--
These standard capabilities continue to be used as-is. All other capabilities must include a "vendor prefix" in their name. A vendor prefix is a string followed by a colon, such as `appium:`. Most of Appium's capabilities go beyond the standard W3C capabilities and must therefore include vendor prefixes (we recommend that you use `appium:` unless directed otherwise by documentation). For example:
-->
これらの標準として組み込まれているcapabilitiesはそのまま使用され続けます。それ以外のすべてのcapabilitiesは、その名前に"vendor prefix"を 含まなければなりません。"vendor prefix"は、`appium:` のように、コロンが続く文字列です。Appiumのほとんどのcapabilitiesは、標準として組み込まれているcapabilitiesではないため、"vendor prefix"を含める必要があります(ドキュメントで指示がない限り、`appium:` を使用することを推奨します)。
例えば、
- `appium:app`
- `appium:noReset`
- `appium:deviceName`
<!--
This requirement may or may not be a breaking change for your test suites when targeting Appium 2.0. If you're using an updated Appium client (at least one maintained by the Appium team), the client will add the `appium:` prefix for you on all necessary capabilities automatically. New versions of [Appium Inspector](https://github.com/appium/appium-inspector) will also do this. Cloud-based Appium providers may also do this. So simply be aware that if you get any messages to the effect that your capabilities lack a vendor prefix, this is how you solve that problem.
-->
この要件は、Appium 2.0をターゲットにしているテストスイートにとって破壊的な変更になるかもしれませんし、ならないかもしれません。
アップデートされたAppiumクライアント(少なくとも Appium チームによってメンテナンスされているもの)を使用している場合、クライアントは自動的にすべての必要なcapabilitiesに `appium:` 接頭辞を追加します。新しいバージョンの[Appium Inspector](https://github.com/appium/appium-inspector)も同様です。クラウドベースのAppiumプロバイダもこれを行うかもしれません。
そのため、もしあなたが使っていcapabilitiesに vendor prefix がない旨のメッセージが表示された場合は、この方法で問題を解決することができます。
<!--
On a related note, it will no longer be possible to start Appium sessions using WebDriver clients that don't support the W3C protocol (see below for a comment to this effect for the WD library).
-->
To make everyone's lives a bit easier, we've also introduced the option of wrapping up all Appium-related capabilities into one object capability, `appium:options`. You can bundle together anything that you would normally put an `appium:` prefix on into this one capability. Here's an example (in raw JSON) of how you might start an iOS session on the Safari browser using `appium:options`:
これに関連して、W3CプロトコルをサポートしていないWebDriverクライアントを使用してAppiumセッションを開始することはできなくなります(WDライブラリに関するこの趣旨のコメントは以下を参照してください)。
<!-- To make everyone's lives a bit easier, we've also introduced the option of wrapping up all Appium-related capabilities into one object capability, `appium:options`. You can bundle together anything that you would normally put an `appium:` prefix on into this one capability. Here's an example (in raw JSON) of how you might start an iOS session on the Safari browser using `appium:options`: -->
みなさんの活動を少し楽にするために、Appiumに関連する全てのcapabilitiesを一つのオブジェクトにまとめるオプション(`appium:options`)も導入しました。通常、`appium:`接頭辞を付けるものを、この1つのcapabilityにまとめることができます。以下は `appium:options` を使ってSafariブラウザ上でiOSセッションを開始する例(JSON)です:
```json
{
@@ -209,106 +302,187 @@ To make everyone's lives a bit easier, we've also introduced the option of wrapp
}
```
(Of course, each client will have a different way of creating structured capabilities like `appium:options` or other ones that you might have seen such as `goog:chromeOptions`). NB: capabilities that show up in `appium:options` will overwrite capabilities of the same name that show up at the top level of the object. (The new `appium:options` syntax support by cloud providers may vary.)
<!-- (Of course, each client will have a different way of creating structured capabilities like `appium:options` or other ones that you might have seen such as `goog:chromeOptions`).
For more information on capabilities, have a look at the [Capabilities Guide](caps.md).
!!! note
### :bangbang: _Removed Commands_
Capabilities included in the `appium:options` object will overwrite capabilities of the same
name that are used outside of this object. (The `appium:options` syntax support by cloud
providers may vary.)-->
In addition to commands which have been moved to driver implementations, commands which were a part of the old JSON Wire Protocol and not a part of the W3C Protocol are no longer available:
(もちろん、`appium:options`のような構造化されたcapabilityや、`goog:chromeOptions`のような構造化されたcapabilityは、クライアントによって作成方法が異なります。)
- TODO (these commands are being identified and removed and will be updated here when complete)
!!! note
If you use a modern Appium or Selenium client, you should no longer have access to these anyway, so any breaking changes should appear on the client side first and foremost.
`appium:options`で表示されるcapabilityは、オブジェクトのトップレベルで表示される同名のcapabilityを上書きします。
(新しい `appium:options` 構文のサポートは、クラウドプロバイダによって異なる場合があります。)
### :bangbang: Image analysis features moved to plugin
<!-- For more information on capabilities, have a look at the [Capabilities Guide](caps.md). -->
One of the design goals for Appium 2.0 is to migrate non-core features into special extensions called [plugins](../ecosystem/plugins.md). This allows people to opt into features which require extra time to download or extra system setup. The various image-related features of Appium (image comparison, finding elements by image, etc...) have been moved into an officially supported plugin called [images](https://github.com/appium/appium/tree/master/packages/images-plugin).
ケイパビリティの詳細については、[Capabilities Guide](https://appium.io/docs/en/latest/guides/caps/)をご覧ください。
If you use these image-related methods, to continue accessing them you will need to do two things.
### :bangbang: 削除されたコマンド
1. Install the plugin: `appium plugin install images`
2. Ensure you start the Appium server with access to run the plugin by including it in the list of plugins designated on the command line, e.g., `appium --use-plugins=images`
<!-- In addition to commands which have been moved to driver implementations, commands which were a part of the old JSON Wire Protocol and not a part of the W3C Protocol are no longer available: -->
Image-related commands will also be removed on the client side of things, which means you will need to follow the instructions on the plugin README for installing client-side plugins to access these features.
ドライバの実装に移行したコマンドに加え、旧JSON Wireプロトコルの一部であり、W3Cプロトコルの一部ではないコマンドは使用できなくなりました:
### :bangbang: Execute Driver Script command moved to plugin
<!-- - TODO (these commands are being identified and removed and will be updated here when complete) -->
If you use the advanced Execute Driver Script feature (which allows you to send in a WebdriverIO script to have it executed completely on the server instead of command-by-command from the client), this functionality has been moved to a plugin. Here's what to do to keep using it:
- TODO(これらのコマンドは特定・削除中であり、完了次第ここに更新されます)
1. Install the plugin: `appium plugin install execute-driver`
2. Ensure you start the Appium server with access to run the plugin by including it in the list of plugins designated on the command line, e.g., `appium --use-plugins=execute-driver`
<!-- If you use a modern Appium or Selenium client, you should no longer have access to these anyway, so any breaking changes should appear on the client side first and foremost. -->
### :bangbang: External Files No Longer Supported for `--nodeconfig`, `--default-capabilities`, `--allow-insecure` and `--deny-insecure`
最新のAppiumやSeleniumクライアントを使用している場合、これらにアクセスすることはできないため、どのような破壊的変更もまずはクライアント側に現れるはずです。
These options can be provided as strings on the command line (a JSON string for `--nodeconfig` and a comma-separated list of strings for `--allow-insecure` and `--deny-insecure`). Arguments provided on the command line will likely need to be quoted or escaped.
### :bangbang: 画像解析機能をプラグインに移行
The recommended method to provide these options is now via a [configuration file](#tada-configuration-files).
<!-- One of the design goals for Appium 2.0 is to migrate non-core features into special extensions called [plugins](../ecosystem/plugins.md). This allows people to opt into features which require extra time to download or extra system setup. The various image-related features of Appium (image comparison, finding elements by image, etc...) have been moved into an officially supported plugin called [images](https://github.com/appium/appium/tree/master/packages/images-plugin). -->
In summary, if you are using a JSON Appium config file, you can simply cut-and-paste the contents of your "nodeconfig" JSON file into the value of the `server.nodeconfig` property. Any CSV-like files you had previously provided for `--allow-insecure` and `--deny-insecure` become the values of the `server.allow-insecure` and `server.deny-insecure` properties in the Appium config files (respectively); both are arrays of strings.
Appium 2.0の設計目標の1つは、非コア機能を[plugins](https://appium.io/docs/en/latest/ecosystem/plugins/)と呼ばれる特別な拡張機能に移行することです。これにより、ダウンロード時間やシステム設定が追加で必要となる機能を選択して利用できるようになります。Appiumの様々な画像関連機能(画像比較、画像による要素の検索など)は、[images](https://github.com/appium/appium/tree/master/packages/images-plugin)という公式にサポートされているプラグインに移動されました。
### :bangbang: Old drivers removed
<!-- If you use these image-related methods, to continue accessing them you will need to do two things. -->
The old iOS and Android (UiAutomator 1) drivers and related tools (e.g., `authorize-ios`) have been removed. They haven't been relevant for many years anyway.
これらの画像関連メソッドを使用する場合、以下の2つのことを行う必要があります。
<!-- 1. Install the plugin: `appium plugin install images` -->
<!-- 2. Ensure you start the Appium server with access to run the plugin by including it in the list of plugins designated on the command line, e.g., `appium --use-plugins=images` -->
### :bangbang: Server can no longer be started with `--port 0`
1. プラグインをインストールする: `appium plugin install images`.
2. コマンドラインで指定したプラグインリストにプラグインを含めることで、プラグインを実行できる状態でAppiumサーバーを起動する。例:`appium --use-plugins=images`
In Appium 1.x, it was possible to specify `--port 0` during server startup. This had the effect of
<!-- Image-related commands will also be removed on the client side of things, which means you will need to follow the instructions on the plugin README for installing client-side plugins to access these features. -->
画像関連のコマンドはクライアント側でも削除されるため、これらの機能にアクセスするには、プラグインのREADMEにあるクライアント側プラグインのインストールの指示に従う必要があります。
### :bangbang: Execute Driver Scriptコマンドがプラグインに移動
<!-- If you use the advanced Execute Driver Script feature (which allows you to send in a WebdriverIO script to have it executed completely on the server instead of command-by-command from the client), this functionality has been moved to a plugin. Here's what to do to keep using it: -->
高度なExecute Driver Script機能(WebdriverIOスクリプトを送信して、クライアントからコマンドごとに実行するのではなく、サーバー上で完全に実行させる機能)はプラグインに移動しました。この機能を使い続けるには以下の方法を使用してください:
<!-- 1. Install the plugin: `appium plugin install execute-driver`
2. Ensure you start the Appium server with access to run the plugin by including it in the list of plugins designated on the command line, e.g., `appium --use-plugins=execute-driver` -->
1. プラグインをインストールする: `appium plugin install execute-driver`.
2. コマンドラインで指定したプラグインリストにプラグインを含めることで、プラグインを実行できる状態でAppiumサーバーを起動する。例:`appium --use-plugins=execute-driver`
### :bangbang: `--nodeconfig` `--default-capabilities ` `--allow-insecure` `--deny-insecure`での外部ファイルのサポート終了
<!-- These options can be provided as strings on the command line (a JSON string for `--nodeconfig` and a comma-separated list of strings for `--allow-insecure` and `--deny-insecure`). Arguments provided on the command line will likely need to be quoted or escaped. -->
これらのオプションはコマンドラインで文字列として指定できます(`--nodeconfig`の場合はJSON文字列、`--allow-insecure`と`--deny-insecure`の場合はカンマ区切りの文字列リスト)。コマンドラインで指定する引数は、引用符で囲むかエスケープする必要があります。
<!-- The recommended method to provide these options is now via a [configuration file](#tada-configuration-files). -->
これらのオプションを提供するために推奨される方法は、[Configuration File](#configuration-files)を使うことです。
<!-- In summary, if you are using a JSON Appium config file, you can simply cut-and-paste the contents of your "nodeconfig" JSON file into the value of the `server.nodeconfig` property. Any CSV-like files you had previously provided for `--allow-insecure` and `--deny-insecure` become the values of the `server.allow-insecure` and `server.deny-insecure` properties in the Appium config files (respectively); both are arrays of strings. -->
つまり、JSON Appium configファイルを使用している場合、単純に "nodeconfig" JSON ファイルの内容を `server.nodeconfig` プロパティの値にカット&ペーストすることができます。 以前 `--allow-insecure` と `--deny-insecure` のために提供した CSV のようなファイルは、Appium config ファイルの `server.allow-insecure` プロパティと `server.deny-insecure` プロパティの値になります(それぞれ文字列の配列)。
### :bangbang: 古いドライバーを削除
<!-- The old iOS and Android (UiAutomator 1) drivers and related tools (e.g., `authorize-ios`) have been removed. They haven't been relevant for many years anyway. -->
古いiOSとAndroid(UiAutomator 1)のドライバーと関連ツール(例えば`authorize-ios`)は削除されました。いずれにせよ、これらは何年も関連していません。
### :bangbang: サーバは `--port 0` で起動することはできない
<!-- In Appium 1.x, it was possible to specify `--port 0` during server startup. This had the effect of
starting Appium on a random free port. In Appium 2.0, port values must be `1` or higher. The random
port assignment was never an intentional feature of Appium 1.x, but a consequence of how Node's
HTTP servers work and the fact that there was no port input validation in Appium 1.x. If you want
to find a random free port to start Appium on, you must now take care of this on your own prior to
starting Appium. Starting Appium on an explicit and known port is the correct practice moving
forward.
forward. -->
### :warning: Internal packages renamed
Appium 1.xでは、サーバー起動時に`--port 0`を指定することができました。
これはランダムな空きポートで Appium を起動するという効果があります。Appium 2.0 では、ポートの値は `1` 以上でなければなりません。
ランダムなポートのランダムな割り当ては、Appium 1.x の意図的な機能ではありませんでした。HTTP サーバーがどのように動作するか、そして Appium 1.xにはポート入力の検証がなかった結果です。
Appium を起動するためにランダムな空きポートを見つけたい場合は、Appium を起動する前に自分でこの処理を行う必要があります。
明示的な既知のポートでAppiumを起動するのが、今後の正しいやり方です。
Some Appium-internal NPM packages have been renamed (for example, `appium-base-driver` is now `@appium/base-driver`). This is not a breaking change for Appium users, only for people who have built software that directly incorporates Appium's code.
### :warning: 内部パッケージの名称変更
### :warning: "WD" JavaScript client library no longer supported
<!-- Some Appium-internal NPM packages have been renamed (for example, `appium-base-driver` is now `@appium/base-driver`). This is not a breaking change for Appium users, only for people who have built software that directly incorporates Appium's code. -->
For many years, some of Appium's authors maintained the [WD](https://github.com/admc/wd) client library. This library has been deprecated and has not been updated for use with the W3C WebDriver protocol. As such, if you're using this library you'll need to move to a more modern one. We recommend [WebdriverIO](https://webdriver.io).
一部の Appium 内部のnpmパッケージの名前が変更されました(例えば、`appium-base-driver` は `@appium/base-driver` になりました)。これはAppiumのユーザーにとって大きな変更ではなく、Appiumのコードを直接組み込んだソフトウェアをビルドしている人にとっての変更です。
### :warning: Appium Inspector split out from Appium Desktop
### :warning: "WD "JavaScriptクライアント・ライブラリがサポート終了
The inspecting portion of Appium Desktop has been moved to its own app, Appium Inspector: [github.com/appium/appium-inspector](https://github.com/appium/appium-inspector). It's fully compatible with Appium 2.0 servers. Simply download it and run it on its own. You no longer need the GUI Appium Desktop server to inspect apps. The Appium Desktop server will continue to be supported at its original site: [github.com/appium/appium-desktop](https://github.com/appium/appium-desktop). It will simply no longer bundle the Inspector with it. Note that Appium Desktop 1.21 and lower versions depend on the deprecated [WD](https://github.com/admc/wd) client, and are not compatible with Appium 2.0. There is currently no Appium 2.0 support for Appium Desktop planned, now that the Inspector is a standalone app.
<!-- For many years, some of Appium's authors maintained the [WD](https://github.com/admc/wd) client library. This library has been deprecated and has not been updated for use with the W3C WebDriver protocol. As such, if you're using this library you'll need to move to a more modern one. We recommend [WebdriverIO](https://webdriver.io). -->
You can also now use the Appium Inspector without downloading anything, by visiting the [web version of Appium Inspector](https://inspector.appiumpro.com). Note that to test against local servers, you'll need to start the server with `--allow-cors` so that the browser-based version of Appium Inspector can access your Appium server to start sessions.
何年もの間、Appiumの作者の一部は[WD](https://github.com/admc/wd)クライアントライブラリを保守していました。このライブラリは非推奨であり、W3C WebDriverプロトコルで使用するためには更新されていません。そのため、このライブラリを使用している場合は、より最新のものに移行する必要があります。[WebdriverIO](https://webdriver.io)をお勧めします。
## Major New Features
### :warning: Appium InspectorがAppium Desktopから分離
Apart from the breaking changes mentioned above, in this section is a list of some of the major new features you may wish to take advantage of with Appium 2.0.
<!-- The inspecting portion of Appium Desktop has been moved to its own app, Appium Inspector: [github.com/appium/appium-inspector](https://github.com/appium/appium-inspector). It's fully compatible with Appium 2.0 servers. Simply download it and run it on its own. You no longer need the GUI Appium Desktop server to inspect apps. The Appium Desktop server will continue to be supported at its original site: [github.com/appium/appium-desktop](https://github.com/appium/appium-desktop). It will simply no longer bundle the Inspector with it. Note that Appium Desktop 1.21 and lower versions depend on the deprecated [WD](https://github.com/admc/wd) client, and are not compatible with Appium 2.0. There is currently no Appium 2.0 support for Appium Desktop planned, now that the Inspector is a standalone app. -->
### Plugins
Appium Desktopのインスペクション部分は、専用のアプリAppium Inspector [github.com/appium/appium-inspector](https://github.com/appium/appium-inspector) に移動しました。Appium 2.0サーバーと完全に互換性があります。ダウンロードして実行するだけです。アプリを検査するためにGUIのAppium Desktopサーバーはもう必要ありません。Appium Desktopサーバーは、[github.com/appium/appium-desktop](https://github.com/appium/appium-desktop)で引き続きサポートされます。単にInspectorがバンドルされなくなるだけです。Appium Desktop 1.21以下のバージョンは、非推奨の[WD](https://github.com/admc/wd)クライアントに依存しており、Appium 2.0と互換性がないことに注意してください。現在、Appium DesktopのAppium 2.0サポートは予定されていません。
<!-- You can also now use the Appium Inspector without downloading anything, by visiting the [web version of Appium Inspector](https://inspector.appiumpro.com). Note that to test against local servers, you'll need to start the server with `--allow-cors` so that the browser-based version of Appium Inspector can access your Appium server to start sessions. -->
また、[Web 版 Appium Inspector](https://inspector.appiumpro.com) にアクセスすることで、何もダウンロードせずに Appium Inspector を使用できるようになりました。なお、ローカルサーバーに対してテストを行う場合は、ブラウザベースのAppium InspectorがAppiumサーバーにアクセスしてセッションを開始できるように、サーバーを `--allow-cors` で起動する必要があります。
## 主な新機能
<!-- Apart from the breaking changes mentioned above, in this section is a list of some of the major new features you may wish to take advantage of with Appium 2.0. -->
上記の変更点とは別に、このセクションではAppium 2.0の主な新機能を紹介します。
### プラグイン
#### :tada: _Server Plugins_
Appium extension authors can now develop their own server plugins, which can intercept and modify
<!-- Appium extension authors can now develop their own server plugins, which can intercept and modify
any Appium command, or even adjust the way the underlying Appium HTTP server itself works. To learn
more about plugins, read the new [Appium Introduction](../intro/index.md). Interested in building
a plugin? Check out the [Building Plugins](../ecosystem/build-plugins.md) guide.
a plugin? Check out the [Building Plugins](../ecosystem/build-plugins.md) guide. -->
#### :tada: _Client Plugins_
Appium extensionの作者は、独自のサーバー・プラグインを開発できるようになりました。
Appium HTTPサーバー自体の動作方法を調整することもできます。
プラグインの詳細については、新しい[Appium Introduction](../intro/index.md)をお読みください。
プラグインを作ることに興味がありますか? [プラグインの構築](https://appium.io/docs/en/latest/developing/build-plugins/) ガイドをチェックしてください。
TODO
### :tada: どこからでもドライバーとプラグインをインストール
### :tada: Install drivers and plugins from anywhere
You're no longer limited to the drivers that come with Appium, or that the Appium team even knows
<!-- You're no longer limited to the drivers that come with Appium, or that the Appium team even knows
about! Appium extension authors can now develop custom drivers, which can be downloaded or
installed via Appium's [Extension CLI](../cli/extensions.md) from NPM, Git, GitHub, or even the
installed via Appium's [Extension CLI](../cli/extensions.md) from `npm`, `git`, GitHub, or even the
local filesystem. Interested in building a driver? Check out the [Building
Drivers](../ecosystem/build-drivers.md) guide.
Drivers](../developing/build-drivers.md) guide. -->
もはやAppium付属のドライバーや、Appiumチームが知っているドライバーに限定されることはありません!Appiumエクステンションの作者は、カスタムドライバを開発できるようになりました。
Appiumの[Extension CLI](https://appium.io/docs/en/latest/cli/extensions/)経由で、`npm`、`git`、GitHub、またはローカルのファイルシステムからダウンロードまたはインストールできます。
ドライバのビルドに興味がありますか? [ドライバのビルド](https://appium.io/docs/en/latest/developing/build-drivers/) ガイドを参照してください。
### :tada: Configuration Files
Appium now supports _configuration files_ in addition to command-line arguments. In a nutshell, nearly all arguments which Appium 1.x required to be provided on the CLI are now able to be expressed via a configuration file. Configuration files may be in JSON, JS, or YAML format. See the [Config Guide](config.md) for a full explanation.
<!-- Appium now supports _configuration files_ in addition to command-line arguments. In a nutshell,
nearly all arguments which Appium 1 required to be provided on the CLI are now able to be expressed
via a configuration file. Configuration files may be in JSON, JS, or YAML format. See the
[Config Guide](./config.md) for a full explanation. -->
## Special Notes for Cloud Providers
Appiumは、コマンドライン引数に加え、_設定ファイル_ もサポートするようになりました。つまりAppium 1がCLIで提供することを要求していたほぼすべての引数が、設定ファイルを介して表現できるようになりました。設定ファイルは JSON, JS, YAML 形式があります。設定ファイルは [Config Guide](https://appium.io/docs/en/latest/guides/config/) を参照してください。
The rest of this document has applied to Appium generally, but some of the architectural changes in Appium 2.0 will constitute breaking changes for Appium-related service providers, whether a cloud-based Appium host or an internal service. At the end of the day, the maintainer of the Appium server is responsible for installing and making available the various Appium drivers and plugins that end users may wish to use.
## クラウド・プロバイダーに関する特記事項
We encourage cloud providers to thoroughly read and understand our [recommendation for cloud
provider capabilities](caps.md#special-notes-for-cloud-providers) in order to support user needs in
an industry-compatible way!
<!-- The rest of this document has applied to Appium generally, but some of the architectural changes in
Appium 2 will constitute breaking changes for Appium-related service providers, whether a
cloud-based Appium host or an internal service. At the end of the day, the maintainer of the Appium
server is responsible for installing and making available the various Appium drivers and plugins
that end users may wish to use. -->
このドキュメントの残りの部分はAppium全般に適用されていますが、Appium 2のアーキテクチャ上の変更の一部はクラウドベースのAppiumホストであれ、内部サービスであれ、Appium関連のサービスプロバイダーにとって破壊的な変更となります。結局のところ、Appiumサーバーを保守する人は、エンドユーザーが使用したいと思うであろう様々なAppiumドライバーやプラグインをインストールし、利用できるようにする責任を持ちます。
<!-- We encourage cloud providers to thoroughly read and understand our [recommendation for cloud
provider capabilities](./caps.md#special-notes-for-cloud-providers) in order to support user needs in
an industry-compatible way! -->
クラウドプロバイダーには、業界と互換性のある方法でユーザーのニーズをサポートするために、私たちの[クラウドプロバイダーの能力に関する推奨事項](https://appium.io/docs/en/latest/guides/caps/#special-notes-for-cloud-providers) を十分に読み、理解することをお勧めします!
<!--
for japanese translator
Links to documents not translated into Japanese refer to the English version.
-->
+4 -4
View File
@@ -72,7 +72,7 @@ nav:
- developing/build-plugins.md
- developing/build-docs.md
- developing/build-doctor-checks.md
- Contributing:
- contributing/index.md
- contributing/develop.md
- contributing/config-system.md
- Developer Reference:
- developing/config-system.md
- Contributing: contributing.md
- Sponsors: sponsors.md
+46 -24
View File
@@ -8,6 +8,7 @@ theme:
language: zh
nav:
- 首页: index.md
- 博客: blog/index.md
- 简介:
- intro/index.md
- 背景:
@@ -17,40 +18,61 @@ nav:
- intro/history.md
- 快速开始:
- quickstart/index.md
- quickstart/requirements.md
- quickstart/install.md
- quickstart/uiauto2-driver.md
- 编写测试:
- Write a Test:
- quickstart/test-js.md
- quickstart/test-py.md
- quickstart/test-java.md
- quickstart/test-rb.md
- quickstart/test-dotnet.md
- quickstart/next-steps.md
- 生态系统:
- ecosystem/index.md
- 开发 Appium 扩展:
- ecosystem/build-drivers.md
- ecosystem/build-plugins.md
- ecosystem/build-docs.md
- ecosystem/drivers.md
- ecosystem/clients.md
- ecosystem/plugins.md
- ecosystem/tools.md
- 命令行参考:
- cli/index.md
- cli/args.md
- cli/env-vars.md
- cli/extensions.md
- Command Reference:
- ../en/commands/base-driver.md
- ../en/commands/execute-driver-plugin.md
- ../en/commands/images-plugin.md
- ../en/commands/relaxed-caps-plugin.md
- ../en/commands/universal-xml-plugin.md
- cli/setup.md
- 命令参考:
- commands/index.md
- commands/base-driver.md
- commands/execute-driver-plugin.md
- commands/images-plugin.md
- commands/relaxed-caps-plugin.md
- commands/universal-xml-plugin.md
- 指南:
- guides/migrating-1-to-2.md
- guides/managing-exts.md
- guides/config.md
- guides/security.md
- guides/caps.md
- guides/context.md
- guides/settings.md
- guides/execute-script-overload.md
- guides/event-timing.md
- guides/log-filters.md
- guides/grid.md
- 更多 Appium 资源: resources.md
- 贡献: contributing/index.md
- Migration:
- guides/migrating-1-to-2.md
- Server/Driver Configuration:
- guides/managing-exts.md
- guides/branch-testing.md
- guides/config.md
- guides/security.md
- guides/log-filters.md
- guides/grid.md
- guides/caching.md
- guides/tls.md
- Session Configuration:
- guides/caps.md
- guides/settings.md
- guides/execute-methods.md
- guides/context.md
- guides/event-timing.md
- 更多资源: resources.md
- 开发:
- developing/index.md
- developing/build-drivers.md
- developing/build-plugins.md
- developing/build-docs.md
- developing/build-doctor-checks.md
- 贡献:
- contributing/index.md
- contributing/develop.md
- contributing/config-system.md

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

@@ -0,0 +1,31 @@
.md-source__fact--version {
display: none;
}
.md-source__fact:nth-child(1n + 2):before {
margin-left: 0 !important;
}
.appium-sponsor-thanks {
width: 100%;
margin: 0.5rem 0.6rem auto 0.6rem;
display: flex;
align-items: center;
}
.appium-sponsor-thanks img {
margin: auto 6px;
height: 40px;
}
.homepageSponsors {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin: 10px auto;
max-width: 800px;
}
.homepageSponsor {
flex: 1;
}
@@ -0,0 +1,79 @@
<!-- Footer -->
<footer class="md-footer">
<!-- Link to previous and/or next page -->
{% if "navigation.footer" in features %}
{% if page.previous_page or page.next_page %}
{% if page.meta and page.meta.hide %}
{% set hidden = "hidden" if "footer" in page.meta.hide %}
{% endif %}
<nav
class="md-footer__inner md-grid"
aria-label="{{ lang.t('footer') }}"
{{ hidden }}
>
<!-- Link to previous page -->
{% if page.previous_page %}
{% set direction = lang.t("footer.previous") %}
<a
href="{{ page.previous_page.url | url }}"
class="md-footer__link md-footer__link--prev"
aria-label="{{ direction }}: {{ page.previous_page.title | e }}"
>
<div class="md-footer__button md-icon">
{% set icon = config.theme.icon.previous or "material/arrow-left" %}
{% include ".icons/" ~ icon ~ ".svg" %}
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
{{ direction }}
</span>
<div class="md-ellipsis">
{{ page.previous_page.title }}
</div>
</div>
</a>
{% endif %}
<!-- Link to next page -->
{% if page.next_page %}
{% set direction = lang.t("footer.next") %}
<a
href="{{ page.next_page.url | url }}"
class="md-footer__link md-footer__link--next"
aria-label="{{ direction }}: {{ page.next_page.title | e }}"
>
<div class="md-footer__title">
<span class="md-footer__direction">
{{ direction }}
</span>
<div class="md-ellipsis">
{{ page.next_page.title }}
</div>
</div>
<div class="md-footer__button md-icon">
{% set icon = config.theme.icon.next or "material/arrow-right" %}
{% include ".icons/" ~ icon ~ ".svg" %}
</div>
</a>
{% endif %}
</nav>
{% endif %}
{% endif %}
<!-- Further information -->
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<!-- Sponsor thanks -->
{% include "partials/sponsors.html" %}
{% include "partials/copyright.html" %}
<!-- Social links -->
{% if config.extra.social %}
{% include "partials/social.html" %}
{% endif %}
</div>
</div>
</footer>
@@ -0,0 +1,11 @@
<div class="appium-sponsor-thanks">
Supported by
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<img src="/docs/en/latest/assets/images/sponsor-logo-browserstack-dark.png" />
</a>
<a href="https://saucelabs.com/resources/blog/appium-strategic-partner">
<img src="/docs/en/latest/assets/images/sponsor-logo-sauce.png" />
</a>
</div>
@@ -20,7 +20,6 @@ const {
DOCS_REMOTE,
LATEST_ALIAS,
} = require('./utils');
const copyAssets = require('./copy-assets');
const path = require('path');
const semver = require('semver');
const {version} = require('../../package.json');
@@ -35,8 +34,6 @@ const push = Boolean(process.env.APPIUM_DOCS_PUBLISH);
async function main() {
log.info(`Building Appium docs and committing to ${DOCS_BRANCH}`);
await copyAssets();
const semVersion = semver.parse(version);
if (!semVersion) {
throw new Error(`Could not parse Appium version "${version}" as semver`);
@@ -1,34 +0,0 @@
/**
* This script copies generic assets from `ASSETS_DIR` to each docs language dir.
*/
// @ts-check
// for simplicity this file is not transpiled and is run directly via an npm script
/* eslint-disable promise/prefer-await-to-callbacks */
/* eslint-disable promise/prefer-await-to-then */
const {fs} = require('@appium/support');
const {log, LANGS, DOCS_DIR, ASSETS_DIR} = require('./utils');
const path = require('path');
async function main() {
log.info('Copying generic assets to docs language dirs');
for (const lang of LANGS) {
const langPath = path.join(DOCS_DIR, lang);
const langAssetPath = path.join(langPath, 'assets');
log.info(`Deleting ${langAssetPath}`);
await fs.rimraf(langAssetPath);
log.info(`Copying assets into ${langAssetPath}`);
await fs.copyFile(ASSETS_DIR, langAssetPath);
}
}
if (require.main === module) {
main().catch((err) => {
throw err;
});
}
module.exports = main;
+19
View File
@@ -0,0 +1,19 @@
authors:
jlipps:
name: 'Jonathan Lipps'
description: 'Appium project lead. Learn more about Jonathan at https://jlipps.com'
avatar: 'https://gravatar.com/avatar/fdaadd825d92709bcf7fe76dffa12c40681c6108c67bcddf19478b2d00e3794b.jpg'
slug: 'jlipps'
url: 'https://jlipps.com'
srini:
name: 'Srinivasan Sekar'
description: 'Appium Maintainer'
avatar: 'https://avatars.githubusercontent.com/u/8896549?v=4'
slug: 'srini'
url: 'https://srini.codes'
sai:
name: 'Sai krishna'
description: 'Appium Maintainer'
avatar: 'https://avatars.githubusercontent.com/u/4045041?v=4'
slug: 'sai'
url: 'https://saikrishna.tech'
+1 -1
View File
@@ -1,2 +1,2 @@
# Blog
# 博客
@@ -0,0 +1,45 @@
---
authors:
- srini
- sai
date: 2024-07-13
---
# Appium Conf 2024: Call for Proposals Now Open!
We're thrilled to announce that Appium Conf is back and going online for 2024! This is the official Appium conference where you can learn all about what's new in Appium 2.0 and explore the latest in automating tests for devices, mobile apps, and desktop applications.
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://confengine.com/conferences/appium-conf-2024/proposals?utm_medium=referal&utm_source=appium.io&utm_campaign=launch">
<img id="image-36-42" alt="Appium Conf logo" src="https://appiumconf.com/wp-content/uploads/2021/06/Appium-Conf-Logo.svg" data-src="https://appiumconf.com/wp-content/uploads/2021/06/Appium-Conf-Logo.svg" decoding="async">
</a>
</div>
## Mark Your Calendars: September 13, 2024
Join us on September 13, 2024, for a full day of inspiring and practical talks from the Appium team and the world's top mobile testing and automation experts. With Appium 2.0 now well-established, this is your opportunity to dive deep and learn how to maximize its potential.
## Why Attend Appium Conf 2024?
1. **Gain Insights**: Hear interesting insights and inspiring case studies from global experts and the core Appium team.
2. **Improve Your Strategy**: Gain valuable knowledge to enhance your own automation strategy.
3. **Network**: Make connections with Appium users from around the globe.
4. **Learn from Specialists**: Benefit from Appium specialists' expertise on a variety of topics.
## Call for Proposals: Share Your Knowledge!
We're looking for a diverse range of speakers from around the globe who are eager to share innovative ideas and use-cases of mobile test automation. If you have experience with Appium and insights that could benefit the community of test practitioners, we want to hear from you!
Don't miss this chance to contribute to the Appium community and showcase your expertise on a global stage.
## How to Submit Your Proposal
Visit our website at [https://appiumconf.com/](https://appiumconf.com/) and [Submit a Proposal](https://confengine.com/conferences/appium-conf-2024/proposals?utm_medium=referal&utm_source=appium.io&utm_campaign=launch). We're excited to see your innovative ideas and experiences with Appium!
## Stay Tuned
Keep an eye on our website and social media channels for updates on the conference schedule, keynote speakers, and more exciting details about Appium Conf 2024.
Join us in shaping the future of mobile and device test automation. Submit your proposal today and be part of this exciting event!
@@ -0,0 +1,46 @@
---
authors:
- jlipps
date: 2024-06-10
---
# Announcing BrowserStack as Appium's Strategic Partner
We have another exciting announcement for you! As part of our recently-announced [sponsorship and
contributor compensation
program](https://appium.io/docs/en/latest/blog/2024/05/14/announcing-appiums-sponsorship-program/),
we are obviously in need of significant funding to support giving back to our contributor
community. We are therefore extremely happy to announce one of our brand new exclusive Strategic Partners: <a
href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">BrowserStack</a>!
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium">
<img src="/docs/en/latest/assets/images/sponsor-logo-browserstack-dark.png#only-dark" width="300" />
<img src="/docs/en/latest/assets/images/sponsor-logo-browserstack-light.png#only-light" width="300" />
</a>
</div>
BrowserStack has long been recognized in the industry as having extensive support for Appium,
allowing you to run functional and visual regression tests for your native and hybrid apps at scale
across a variety of devices and platforms.
As a token of this collaboration, BrowserStack is extending a special premium access of
BrowserStack App Automate product to Appium users. Discover more about this special offer at
[browserstack.com](https://www.browserstack.com/browserstack-appium?utm_campaigncode=701OW00000AoUTQYA3&utm_medium=partnered&utm_source=appium&utm_term=partannouncement)
With the decision to come on board as Strategic Partner, BrowserStack is making a huge investment
in Appium and the Appium community. BrowserStack is very interested in supporting the development
of the Appium contributor base, and is proud to be a key part of our contributor compensation
scheme. Without Strategic Partners like BrowserStack, we would not be able to maintain such
a program! We welcome them with gratitude!
**About BrowserStack**
<em>BrowserStack is the world’s leading software testing platform powering over two million tests every
day across 19 global data centers. BrowserStack helps Tesco, Shell, NVIDIA, Discovery, Wells Fargo,
and over 50,000 customers deliver quality software at speed by moving testing to their Cloud.
BrowserStack’s platform provides instant access to 20,000+ real mobile devices on a highly reliable
cloud infrastructure that effortlessly scales as testing needs grow. With BrowserStack, Dev and QA
teams can move fast while delivering an amazing experience for every customer.</em>
@@ -0,0 +1,47 @@
---
authors:
- jlipps
date: 2024-06-06
---
# Announcing HeadSpin as Appium's Development Partner
Recently, we announced a new [sponsorship and contributor compensation program](https://appium.io/docs/en/latest/blog/2024/05/14/announcing-appiums-sponsorship-program/) for the Appium
project. As part of this program, we felt it was important to have a place to recognize those
companies who make an extremely valuable kind of contribution to the project: dedicated maintainer
time. Appium only survives because of the tireless efforts of the core maintainers, and some of us
are only able to do this work because it is donated on behalf of our day jobs. We're therefore very
excited to announce our first Development Partner: <a
href="https://www.headspin.io/solutions/appium-mobile-test-automation">HeadSpin</a>!
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://www.headspin.io/solutions/appium-mobile-test-automation"><img
src="/docs/en/latest/assets/images/sponsor-logo-headspin.png" style="width: 300px"/></a>
</div>
HeadSpin is a real device performance and UX analysis cloud, with full support for Appium. When you
run your Appium tests on HeadSpin, you get access to comprehensive performance reports about your
app, including potential network, system resource, or user experience issues. HeadSpin supports
a variety of complex testing modes, including hooking up your own devices to the cloud, injecting
and receiving video and audio to/from devices, working with media (streaming) platforms, and more.
HeadSpin has been one of the Appium project's biggest supporters for a long time, and currently
employs two of Appium's core maintainers, donating a significant portion of their time towards the
development, maintenance, support, and leadership of open source Appium repos. HeadSpin has also
worked hard towards Appium's vision of a robust Appium ecosystem, contributing several
HeadSpin-maintained Appium drivers and plugins to the community:
- A [Roku TV driver](https://github.com/headspinio/appium-roku-driver)
- A [Tizen TV driver](https://github.com/headspinio/appium-tizen-tv-driver/)
- A [LG webOS TV driver](https://github.com/headspinio/appium-lg-webos-driver/)
- A [Unity game automation plugin](https://github.com/headspinio/appium-altunity-plugin)
These are all free and open source Appium components that HeadSpin has donated to the community
with the goal of fostering collaboration in these areas of media app automation.
Looking to the future, HeadSpin plans to continue supporting Appium in significant ways, both as
a Development Partner and a significant contributor to the Appium ecosystem. The Appium project is
deeply indebted to HeadSpin for all of its support, and is proud to take this moment to recognize
HeadSpin as our first official Development Partner!
@@ -0,0 +1,36 @@
---
authors:
- jlipps
date: 2024-06-10
---
# Announcing Sauce Labs as Appium's Strategic Partner
The good news surrounding our new [sponsorship and contributor compensation
program](https://appium.io/docs/en/latest/blog/2024/05/14/announcing-appiums-sponsorship-program/)
just keeps coming! Effective immediately we are fortunate and excited to be able to welcome a new Strategic Partner to
the Appium project: <a href="https://saucelabs.com/resources/blog/appium-strategic-partner">Sauce Labs</a>!
<!-- more -->
<div style="text-align:center;width:100%">
<a href="https://saucelabs.com/resources/blog/appium-strategic-partner"><img src="/docs/en/latest/assets/images/sponsor-logo-sauce.png" style="width: 300px"/></a>
</div>
Sauce Labs has a long history of support for the Appium project. In fact, Appium was initially
incubated at Sauce Labs under the direction of [@jlipps](https://github.com/jlipps), in the early
days of mobile automation. Sauce Labs always envisioned Appium as being a project for and by the
community, and cemented this perspective in 2016 with the donation of Appium to the JS Foundation
(now the [OpenJS Foundation](https://openjsf.org/)). To this day, developers associated with Sauce
Labs continue to help maintain various parts of the Appium project.
Now, Sauce Labs is making a further commitment to support Appium financially as a way to enable
our new contributor compensation program. We're very excited about this program as a vehicle for
getting more people involved in Appium's development and maintenance. With the help of Strategic
Partners like Sauce Labs, our project will be better able to meet the needs of our constantly
growing userbase, and attract new developers (like you?) to build the Appium ecosystem together.
Needless to say, we are extremely grateful for Sauce Labs's support!
**About Sauce Labs**
<em>Sauce Labs is the leader in continuous quality. Our Platform for Test helps organizations transform software testing from a chore to a competitive advantage. With decades of expertise and deep roots in the Selenium and Appium open source communities, high performing software teams use our platform to execute any testing workload across thousands of different devices, browsers, and operating systems—anywhere, any time, and at any scale. For more information, please visit [saucelabs.com](https://saucelabs.com).</em>
@@ -0,0 +1,48 @@
---
authors:
- jlipps
date: 2024-05-14
---
# Announcing Appium's Sponsorship Program
Over the last several months, the Appium team has been working on a sponsorship program that is
designed to help give back to Appium's contributors as well as to recognize important partner
individuals or companies in the industry. This program is now officially launching! Let's dive into
some of the details.
<!-- more -->
First of all, the details and fine print will always be available at Appium's [Governance
document](https://github.com/appium/appium/blob/master/GOVERNANCE.md), which outlines how the
project is run, who makes project decisions, etc... This document will be kept up to date with the
latest details of the program, so that's the place to bookmark for reference!
As of now, Appium has opened up sponsorship opportunities via our [OpenCollective
page](https://opencollective.com/appium). OpenCollective is a service which allows people to donate
to open source groups. We've defined a number of giving tiers for donations, within a very wide
range, and welcome any financial amount with gratitude! Based on the donation tier, sponsorship
comes with a variety of benefits, including recognition at different places in the Appium repo,
docs, and website. In addition to financial sponsorship, the project has decided to recognize
significant donations of project leadership and maintenance efforts from companies who have
invested heavily into Appium with their employees' time (we call these "Development Partners").
What will the project do with the funds raised through this sponsorship program? We aim to give it
all back to the Appium community! With the details again available at our [Governance document](https://github.com/appium/appium/blob/master/GOVERNANCE.md),
we have implemented a scheme very much inspired by our friends at [WebdriverIO](https://webdriver.io/blog/2024/02/15/new-contributor-stipend-program) (thanks WDIO
friends!) There are three groups of contributors to Appium that this scheme supports: (1) project
maintainers (those who devote consistent time to leading the project), (2) project contributors
(anyone in the wider community that contributes code or documentation), and (3) upstream projects
(other open source projects Appium relies heavily on to work well). Each month, the funds raised
via sponsorship will be distributed in different amounts to each of these groups. So if you
make a valuable contribution to Appium moving forward, you'll be eligible to get some cash as
a thank-you! (You'll need to have your own OpenCollective account in good standing to receive
funds).
We're very excited about this new program, and hope that it helps existing and new contributors to
feel even better about donating their time to making Appium better. And of course, none of this
would be possible without the amazing Partners and Sponsors we hope to attract! On that note, stay
tuned over the next few weeks as we unveil some of our initial program launch Partners! And if you
or your company would like to participate by supporting Appium financially, you are most welcome.
Just head over to our OpenCollective page and choose the tier that reflects your desired
contribution level.
@@ -0,0 +1,15 @@
---
authors:
- jlipps
date: 2024-03-07
---
# Hello World!
This is the first post in the Appium blog. There's not much to see here yet. We're creating this
space so we can make announcements or post other news, or information about events, that don't
really fit inside the documentation itself.
<!-- more -->
Stay tuned for more!
+60 -2
View File
@@ -1,5 +1,63 @@
---
title: Server CLI Args
hide:
- toc
title: 服务器命令行参数
---
TODO
要启动Appium服务器,您可以运行`appium`或`appium server`。`server`子命令是他的默认命令,因此如果省略它,Appium会将认为您想要运行Appium服务器。
`appium`(或`appium server`)的调用可以接受多个参数,详细信息如下。
!!! 注意
如果您愿意,所有这些参数都可以通过[配置文件](../guides/config.md)设置。命令行上设置的任何参数都将覆盖配置文件中的参数。
|<div style="width:12em">参数</div>|描述|类型|<div style="width:8em">默认值</div>|别名|
|--|--|--|--|--|
|`--address`|要监听的IP地址|string|`0.0.0.0`|`-a`|
|`--allow-cors`|Appium服务器是否允许来自任何主机的web浏览器连接|boolean|`false`||
|`--allow-insecure`|设置允许在此服务器的会话中运行哪些不安全功能。功能是在驱动程序层定义的;有关更多详细信息,请参阅文档。请注意,通过`--deny-insecure`指定的功能即使在这里列出也将被禁用。如果值是字符串,则表示是包含策略或逗号分隔列表的文本文件的路径。|array<string>|`[]`||
|`--base-path`|用作服务器上运行的所有WebDriver路由的前置路径|string|`""`|`-pa`|
|`--callback-address`|回调IP地址(默认值:与`--address`相同)|string||`-ca`|
|`--callback-port`|回调端口(默认值:与`--port`相同)(值必须介于`1`和`65535`)|integer|`4723`|`-cp`|
|`--config`|[Appium JSON格式配置文件](../guides/config.md)的路径|string|||
|`--debug-log-spacing`|在日志中添加夸张的间距以便于进行查看。|boolean|`false`||
|`--default-capabilities`|设置默认的所需功能,将在每个会话上设置这些功能,除非被新的配置覆盖。如果值是字符串,则表示包含功能的JSON文件的路径,或原始JSON字符串。|object||`-dc`|
|`--deny-insecure`|设置禁止在此服务器的会话中运行的哪些不安全功能。功能是在驱动程序层定义的;有关更多详细信息,请参阅文档。即使在`--allow-insecure`中列出,并且启用了`--relaxed-securities`,此处列出的功能也会被禁用。如果值是字符串,则表示是包含策略或逗号分隔列表的文本文件的路径。|array<string>|`[]`||
|`--driver`|驱动程序特定配置。键名应与驱动程序包名称相对应|object|||
|`--drivers-import-chunk-size`|服务器启动时可以并行导入的最大驱动程序数量|number|`3`||
|`--keep-alive-timeout`|Appium服务器应该将所有请求的保持活跃超时(keep-alive timeout)和连接超时(connection timeout)都设置为多少秒。如果将其设置为0,则会禁用超时设置。|integer|`600`|`-ka`|
|`--local-timezone`|使用本地时区来记录时间戳|boolean|`false`||
|`--log`|同时将日志输出发送到文件|string||`-g`|
|`--log-filters`|一个或多个日志过滤规则|array|||
|`--log-level`|日志级别(console[:file]),值必须是以下之一:`info`, `info:debug`, `info:info`, `info:warn`, `info:error`, `warn`, `warn:debug`, `warn:info`, `warn:warn`, `warn:error`, `error`, `error:debug`, `error:info`, `error:warn`, `error:error`, `debug`, `debug:debug`, `debug:info`, `debug:warn`, `debug:error`)|string|`debug`||
|`--log-format`|日志格式(值必须是以下之一:`text`, `json`, `pretty_json`)。如果日志以JSON格式打印,则会始终禁用文本着色。|string|`text`||
|`--log-no-colors`|不要在控制台输出中使用颜色|boolean|`false`||
|`--log-timestamp`|在控制台输出中显示时间戳|boolean|`false`||
|`--long-stacktrace`|在日志条目中添加长堆栈跟踪,建议仅用于调试|boolean|`false`||
|`--no-perms-check`|跳过服务器启动时的各种权限检查|boolean|`false`||
|`--nodeconfig`|将Appium注册为Selenium Grid 3节点的JSON配置文件的路径;否则配置本身|string|||
|`--plugin`|插件特定配置,键名应与插件包名称相对应|object|||
|`--plugins-import-chunk-size`|服务器启动时可以并行导入的插件的最大数量|number|`7`||
|`--port`|要监听的端口(值必须介于`1`和`65535`之间)|integer|`4723`|`-p`|
|`--relaxed-security`|禁用附加的安全检查,以便使用支持此选项的驱动程序提供的一些高级功能。只有当所有客户端都在受信任的网络中时才启用它,如果客户端有可能脱离会话沙盒,则不会启用它。可以使用`--deny-insecure`覆盖特定功能|boolean|`false`||
|`--session-override`|启用会话覆盖(覆盖现有会话)|boolean|`false`||
|`--ssl-cert-path`|如果使用TLS,则指向`.cert`文件的绝对路径。必须与`--ssl-key-path`一起使用。有关详细信息,请参阅[SSL/TLS/SPDY支持指南](../guides/tls.md)|string|||
|`--ssl-key-path`|如果使用TLS,则指向`.key`文件的绝对路径。必须与`--ssl-cert-path`一起使用。有关详细信息,请参阅[SSL/TLS/SPDY支持指南](../guides/tls.md)|string|||
|`--strict-caps`|如果发送了Appium认为对于选定设备无效的能力则使会话失败。|boolean|`false`||
|`--tmp`|Appium可用于管理临时文件的目录的绝对路径|string|Windows: `C:\Windows\Temp`<br>其他: `/tmp`||
|`--trace-dir`|Appium用于保存iOS Instruments跟踪数据的目录的绝对路径|string|`<tmp>/appium-instruments`||
|`--use-drivers`|要激活的驱动程序列表,默认情况下,所有已安装的驱动程序都将被激活|array<string>|`[]`||
|`--use-plugins`|要激活的插件列表,要激活所有插件,该值应该是一个包含单个项`"all"`的数组|array<string>|`[]`||
|`--webhook`|同时将日志输出发送到此http侦听器|string||`-G`|
以下参数用于信息检索,运行之后服务器将自动退出。因此,它们仅供参考或调试使用。
|<div style="width:10em">Argument</div>|Description|Alias|
|--|--|--|
|`--help`|打印使用Appium命令行的说明,此参数也可用于Appium子命令|`-h`|
|`--show-build-info`|打印Appium服务器版本的详细信息||
|`--show-config`|打印当前Appium服务器配置详细信息||
|`--show-debug-info`|打印当前环境的信息:操作系统、Node.js和Appium本身的详细信息||
|`--version`|打印Appium服务器版本|`-v`|
+22
View File
@@ -0,0 +1,22 @@
---
hide:
- toc
title: 服务器环境变量
---
配置Appium服务器的主要方式是通过[命令行参数](./args.md)。然而,一些更高级的功能是通过环境变量切换或配置的。
要设置环境变量,请参阅操作系统和终端的文档。这些是Appium服务器能够理解的环境变量:
|变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|描述|
|--------|-----------|
|`APPIUM_HOME`|默认情况下,Appium会在系统用户的主目录中创建一个名为`.appium`的目录。您可以使用此变量调整目录,详见[管理扩展](../guides/managing-exts.md)指南。|
|`APPIUM_TMP_DIR`|默认情况下,Appium的许多操作都使用随机临时目录。如果您希望使用特定目录,可以通过将绝对路径作为此变量的值来实现。该行为相当于使用`--tmp`CLI参数。|
|`APPIUM_PREFER_SYSTEM_UNZIP`|设置为0或false,以要求Appium不要使用系统中包含的unzip二进制文件来解压下载的应用程序或其他文件,而去使用基于JS的unzip库;这有助于解决一些系统中不存在或存在非标准的unzip命令的问题。请注意,如果使用系统库解压失败,无论如何都会尝试回退库,所以设置这个环境变量只是在你知道系统unzip会失败的情况下节省时间。|
|`APPIUM_HOST`|与`--address`CLI参数相同|
|`APPIUM_PORT`|与`--port`CLI参数相同|
|`APPIUM_RELOAD_EXTENSIONS`|设置为1可使Appium在创建新会话时重新加载扩展,这主要适用于[构建扩展](../developing/build-drivers.md)|
|`APPIUM_OMIT_PEER_DEPS`|将`--omit=peer`添加到Appium内部运行的所有NPM命令中,主要是内部特征。|
|`APPIUM_APPS_CACHE_MAX_AGE`|允许设置[缓存应用程序](../guides/caching.md)的最长使用时间(以分钟为单位),默认值为60*24(24小时);不要将其设置为低于单个会话启动持续时间的数字。|
|`APPIUM_APPS_CACHE_MAX_ITEMS`|允许设置[缓存应用程序](../guides/caching.md)的最大数量,默认值为`1024`;不要将其设置为低于每个进程所有并行会话中的应用程序数量。|
|`APPIUM_APPS_CACHE_IGNORE_URL_QUERY`|如果启用此选项,则应用程序URL中的“搜索”部分将被忽略;有关更多详细信息,请参阅相应的[内容](https://discuss.appium.io/t/regarding-app-caching-when-using-aws-s3-presigned-urls/42713);默认情况下禁用。|
+198 -2
View File
@@ -1,5 +1,201 @@
---
title: The Extension CLI
title: 扩展命令行用法
---
TODO
Appium允许灵活安装和管理各种扩展,例如驱动程序(为Appium提供自动化给定平台的能力)和插件(可以增强或改变单个Appium命令的工作方式)。
要从概念上理解这些实体,请查看[引言](../intro/index.md)。
驱动程序和插件的管理由Appium的扩展命令行处理。
!!! 注意
这篇文档使用了占位符来指代各种选项。在参考文档中,任何时候你看到这些占位符,确保你用正确的实际内容替换它们。
|占位符|含义|
|--|--|
|`<ext-type>`|"Extension type",它应该是`driver`或`plugin`;所有的扩展命令行都可以与驱动程序或插件一起使用,因此您必须指定将使用哪种类型的扩展。|
|`<ext-name>`|"Extension name",这是对`appium <ext-type> list`的调用中找到的扩展名的简称;这与扩展的NPM包名不同,或者通常来说,与扩展的“安装规范”是有所区别的。|
|`<install-spec>`|"Install specification",这是指用于指示Appium应安装什么扩展的字符串。|
|`<install-source>`|这是指Appium安装扩展程序应该使用的方法。|
## 命令
所有扩展命令行都以`appium <ext-type>`开头,即 `appium driver`或`appium plugin`。
所有扩展命令行都可以接受一个可选的`--json`参数,这个参数会让命令的输出结果以机器可读的JSON字符串形式返回,而不是标准的、为人类阅读优化的、带颜色的输出。
### `doctor`
运行给定扩展的医生检查,以验证扩展的先决条件是否配置正确。请注意,并非所有的扩展都包含医生检查工具。
有关如何创建它们的更多详细信息,请参阅[构建检查工具](../developing/build-doctor-checks.md)教程。
使用方法:
```
appium <ext-type> doctor <ext-name>
```
必须的参数:
- `<ext-type>`:必须为`driver`或`plugin`
- `<ext-name>`:您要运行医生检查的扩展名
可选的参数:
- `--json`:以JSON格式返回结果
示例(运行UiAutomator2驱动程序的医生检查):
```
appium driver doctor uiautomator2
```
### `install`
安装一个扩展。如果安装成功,返回扩展的短名称,这个短名称可以在其他扩展命令行的调用中使用。如果扩展是一个驱动程序,还应该注明可以使用该驱动程序的平台。
使用方法:
```
appium <ext-type> install <install-spec> [--source=<install-source>] [--package=<package-name>] [--json]
```
必须的参数:
- `<ext-type>`:必须为`driver`或`plugin`
- `<install-spec>`:这是您要安装的扩展的名称、位置或版本。其可能的值取决于`<install-source>`(见下文)。
可选的参数:
- `--source`:告诉Appium如何定位您的扩展;查看下面的表格,了解可能的来源类型和相应的安装规范。
- `--package`:当`<install-source>`的值为`git`或`github`,`--package`参数是必须的. 它必须是扩展的Node.js包名称。缺少这些信息的话,Appium将无法定位到已安装的包。
- `--json`:以JSON格式返回结果
|安装源类型|行为|
|--|--|
|None|如果不使用`--source`选项,Appium将执行默认操作。此时,Appium会检查`<install-spec>`并将其与执行`appium <ext-type> list`命令时列出的扩展名称进行匹配,也就是与官方认可的扩展名称进行匹配。如果匹配成功,Appium将通过NPM安装该扩展的最新版本。|
|`npm`|根据扩展的NPM包名来安装扩展。在这里,`<install-spec>`必须包含NPM包名以及任何附加的NPM安装修饰符,例如版本号(参见下文)。|
|`github`|通过`<org>/<repo>`格式的GitHub规范安装扩展|
|`git`|通过Git URL安装扩展(例如:`git+ssh://git-host.com/repo.git`)|
|`local`|通过本地路径安装扩展。这必须是驱动程序的Node.js包信息所在目录的路径。|
#### 基于NPM安装 `<install-spec>`
当Appium通过NPM安装扩展(即当`--source`参数被省略或设置为`npm`时),`<install-spec>`可以非常复杂,并且可以包括`npm install`所允许的任何形式的信息:
- `[@scope]/<name>`
- `[@scope]/<name>@<version>`
- `[@scope]/<name>@<tag>`
- `[@scope]/<name>@<version range>`
#### 示例
- 安装最新的XCUITest驱动程序:
```
appium driver install xcuitest
```
- 安装4.11.1版本的XCUITest驱动程序:
```
appium driver install xcuitest@4.11.1
```
- 从NPM安装`beta`版本的`@appium/fake-driver`:
```
appium driver install --source=npm @appium/fake-driver@beta
```
- 安装本地开发的插件:
```
appium plugin install --source=local /path/to/my/plugin
```
### `list`
列出已安装和可用的扩展。可用扩展包括Appium团队正式认可的扩展,但您不仅限于安装此列表中显示的扩展。
使用方法:
```
appium <ext-type> list [--installed] [--updates] [--json]
```
必须的参数:
- `<ext-type>`:必须为`driver`或`plugin`
可选的参数:
- `--installed`:仅显示已安装的扩展程序,而不是已安装和可用的扩展程序
- `--updates`:对于通过NPM安装的扩展,如果有任何更新,则显示一条消息
- `--json`:以JSON格式返回结果
### `run`
运行扩展包中包含的脚本。扩展作者可以包含可运行的脚本,以协助设置或执行其他任务。这些脚本由扩展作者命名(本指南中称为`<script-name>`),通常会在扩展文档中加以说明。
使用方法:
```
appium <ext-type> run <ext-name> [--json] <script-name> [script-args]
```
必须的参数:
- `<ext-type>`:必须为`driver`或`plugin`
- `<ext-name>`:要运行脚本的扩展名
- `<script-name>`:扩展发布的脚本的名称
可选的参数:
- `script-args`:任何Appium无法识别为其自身参数集的参数,都将传递给扩展脚本
- `--json`:以JSON格式返回结果
示例(运行UiAutomator2驱动程序附带的`reset`脚本):
```
appium driver run uiautomator2 reset
```
### `update`
更新通过NPM安装的一个或多个扩展。默认情况下,Appium不会自动更新超过主要版本边界的任何扩展,以防止意外的破坏性更改。
使用方法:
```
appium <ext-type> update <ext-name> [--unsafe] [--json]
```
必须的参数:
- `<ext-type>`:必须为`driver`或`plugin`
- `<ext-name>`:要更新的扩展名或已安装的字符串(将更新所有已安装的扩展)
可选的参数:
- `--unsafe`:允许Appium更新到超越主要版本界限的版本
- `--json`:以JSON格式返回结果
### `uninstall`
删除已安装的扩展。
使用方法:
```
appium <ext-type> uninstall <ext-name> [--json]
```
必须的参数:
- `<ext-type>`:必须为`driver`或`plugin`
- `<ext-name>`:要卸载的扩展程序的名称
可选的参数:
- `--json`:以JSON格式返回结果
+21 -2
View File
@@ -1,5 +1,24 @@
---
title: 命令行介绍
hide:
- toc
title: 命令行概述
---
TODO
Appium提供了一个命令行可执行文件(`appium`),这可能是您与Appium服务器交互的主要方式。这一部分的文档描述了如何使用此可执行文件。
首先,您可以运行`appium -v`或`appium --version`返回已安装的版本信息,或运行`appium -h`或`appium --help`返回帮助信息。
主命令`appium`可提供以下子命令:
1. `appium server` (或 `appium`) - 启动appium服务器
- [请查看此处了解可接受的参数](./args.md)
- 有关高级功能,[请查看此处了解支持的环境变量](./env-vars.md)
2. `appium driver` - 管理Appium驱动
- [详情请查看此处](./extensions.md)
3. `appium plugin` - 管理Appium插件
- [详情请查看此处](./extensions.md)
4. `appium setup` - 批量安装预设的驱动程序和插件
- [详情请查看此处](./setup.md)
与主命令一样,您也可以使用`-h`或`--help`标志运行每个子命令以了解更多信息。
+23
View File
@@ -0,0 +1,23 @@
---
hide:
- toc
title: 设置命令行用法
---
`setup`命令旨在简化Appium的初始设置过程。它允许一次性安装多个扩展(驱动程序/插件),而无需多次运行`appium <ext-name> install <ext-name>`。
该命令具有多个预设,可用于安装不同组合的扩展。这些预设如下:
|预设|安装命令|包含的驱动|包含的插件|
|--|--|--|--|
|手机端应用程序|`appium setup mobile` or `appium setup`|`uiautomator2`, `xcuitest`[^1], `espresso`|`images`|
|桌面端应用程序|`appium setup desktop`|`mac2`[^1], `windows`[^2]|`images`|
|桌面端浏览器|`appium setup browser`|`safari`[^1], `gecko`, `chromium`|`images`|
在已安装一个或多个预设包含的扩展的情况下尝试安装预设,将只安装缺少的扩展。
请参阅[生态系统](../ecosystem/index.md)文档,了解有关扩展的更多信息。
[^1]: 仅在主机运行macOS时才安装。
[^2]: 仅在主机运行Windows时才安装。
@@ -0,0 +1,535 @@
# 驱动: base-driver
### `createSession`
`POST` **`/session`**
从历史上看,前两个参数是专门用于JSONWP功能的,但是Appium2已经放弃了对这些参数的支持。
现在我们只接受W3C格式的功能对象,这种对象可以通过三个参数中的任意一个来传递。
**`请参阅`**
[https://w3c.github.io/webdriver/#new-session](https://w3c.github.io/webdriver/#new-session)
<!-- comment source: multiple -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `desiredCapabilities?` | `W3CDriverCaps`<`C`\> | 新的会话功能 |
| `requiredCapabilities?` | `W3CDriverCaps`<`C`\> | 另一个可以发送新会话功能的地方(通常未定义) |
| `capabilities?` | `W3CDriverCaps`<`C`\> | 另一个可以发送新会话功能的地方(通常未定义) |
#### 响应
`CreateResult`
表示所创建会话的能力对象
### `deleteSession`
`DELETE` **`/session/:sessionId`**
返回会话和事件历史记录的功能(如果可用)
<!-- comment source: method-signature -->
#### 响应
`SingularSessionData`<`C`, `SessionData`\>
会话数据对象
### `getSession`
`GET` **`/session/:sessionId`**
返回会话和事件历史记录的功能(如果可用)
<!-- comment source: multiple -->
#### 响应
`SingularSessionData`<`C`, `SessionData`\>
会话数据对象
### `findElement`
`POST` **`/session/:sessionId/element`**
在给定定位策略和选择器的情况下查找UI元素,如果找不到则报错
**`请参阅`**
[https://w3c.github.io/webdriver/#find-element](https://w3c.github.io/webdriver/#find-element)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `string` | 定位策略 |
| `value` | `string` | 选择器与策略相结合,找到特定元素 |
#### 响应
`Element`<`string`\>
对元素id进行编码的元素对象,可用于元素相关命令
### `findElementFromElement`
`POST` **`/session/:sessionId/element/:elementId/element`**
在给定定位策略和选择器的情况下查找UI元素,如果找不到则会报错,仅在给定元素的子元素中查找。
**`请参阅`**
[https://w3c.github.io/webdriver/#find-element-from-element](https://w3c.github.io/webdriver/#find-element-from-element)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `string` | 定位策略 |
| `value` | `string` | 选择器与策略相结合,找到特定元素 |
#### 响应
`Element`<`string`\>
对元素id进行编码的元素对象,可用于元素相关命令
### `findElementFromShadowRoot`
`POST` **`/session/:sessionId/shadow/:shadowId/element`**
从阴影根中查找元素。
**`请参阅`**
[https://w3c.github.io/webdriver/#find-element-from-shadow-root](https://w3c.github.io/webdriver/#find-element-from-shadow-root)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `string` | 定位策略 |
| `value` | `string` | 选择器与策略相结合,找到特定元素 |
#### 响应
`Element`<`string`\>
阴影根内与选择器匹配的元素
### `findElements`
`POST` **`/session/:sessionId/elements`**
查找与给定定位策略和选择器匹配的所有UI元素的列表
**`请参阅`**
[https://w3c.github.io/webdriver/#find-elements](https://w3c.github.io/webdriver/#find-elements)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `string` | 定位策略 |
| `value` | `string` | 选择器与策略相结合,找到特定元素 |
#### 响应
`Element`<`string`\>[]
仅在给定元素的子元素中查找。
### `findElementsFromElement`
`POST` **`/session/:sessionId/element/:elementId/elements`**
查找与给定定位策略和选择器匹配的所有UI元素的列表,仅在给定元素的子元素中查找。
**`请参阅`**
[https://w3c.github.io/webdriver/#find-elements-from-element](https://w3c.github.io/webdriver/#find-elements-from-element)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `string` | 定位策略 |
| `value` | `string` | 选择器与策略相结合,找到特定元素 |
#### 响应
`Element`<`string`\>[]
仅在给定元素的子元素中查找。
### `findElementsFromShadowRoot`
`POST` **`/session/:sessionId/shadow/:shadowId/elements`**
从阴影根中查找元素。
**`请参阅`**
[https://w3c.github.io/webdriver/#find-element-from-shadow-root](https://w3c.github.io/webdriver/#find-element-from-shadow-root)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `string` | 定位策略 |
| `value` | `string` | 选择器与策略相结合,找到特定元素 |
#### 响应
`Element`<`string`\>[]
在阴影根内与选择器匹配的可能为空的元素列表。
### `getLog`
`POST` **`/session/:sessionId/log`**
获取给定日志类型的日志。
!!! warning "已弃用"
请使用`/session/:sessionId/se/log`代替
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `type` | `string` | ILogCommands.supportedLogTypes中定义的日志类型的名称/密钥。 |
#### 响应
`any`
### `getLog`
`POST` **`/session/:sessionId/se/log`**
获取给定日志类型的日志。
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `type` | `string` | ILogCommands.supportedLogTypes中定义的日志类型的名称/密钥。 |
#### 响应
`any`
### `getLogEvents`
`POST` **`/session/:sessionId/appium/events`**
获取当前会话中发生的事件列表。
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `type?` | `string` \| `string`[] | 通过包含一个或多个类型筛选返回的事件 |
#### 响应
`EventHistory` \| `Record`<`string`, `number`\>
会话的事件历史记录。
### `getLogTypes`
`GET` **`/session/:sessionId/log/types`**
以字符串列表的形式获取可用日志类型。
!!! warning "已弃用"
请使用`/session/:sessionId/se/log/types`代替
<!-- comment source: method-signature -->
#### 响应
`string`[]
### `getLogTypes`
`GET` **`/session/:sessionId/se/log/types`**
以字符串列表的形式获取可用日志类型。
<!-- comment source: method-signature -->
#### 响应
`string`[]
### `getPageSource`
`GET` **`/session/:sessionId/source`**
以HTML/XML格式获取当前页面/应用程序源代码。
**`请参阅`**
[https://w3c.github.io/webdriver/#get-page-source](https://w3c.github.io/webdriver/#get-page-source)
<!-- comment source: method-signature -->
#### 响应
`string`
以适合平台的格式呈现的用户界面层次结构(例如,对于网页使用HTML)。
### `getSessions`
`GET` **`/sessions`**
获取Appium服务器上运行的所有会话的数据。
<!-- comment source: method-signature -->
#### 响应
会话数据对象列表。每个会话数据对象都将返回`id`和会话的功能作为`capabilities`键,如下所示:
```json
[
{
"id":"ba30c6da-c266-4734-8ddb-c16f5bb53e16",
"capabilities":{ "platformName":"ios","browserName":"safari","automationName":"xcuitest","platformVersion":"17.2","deviceName":"iPhone 15" }
},
{
"id":"1441110c-1ece-4e45-abbf-ebf404f45f0a",
"capabilities":{ "platformName":"ios","browserName":"safari","automationName":"xcuitest","platformVersion":"17.0","deviceName":"iPhone 14" }
},
...
]
```
### `getSettings`
`GET` **`/session/:sessionId/appium/settings`**
使用新的设置对象更新会话的设置字典。
<!-- comment source: method-signature -->
#### 响应
``null``
### `updateSettings`
`POST` **`/session/:sessionId/appium/settings`**
使用新的设置对象更新会话的设置字典。
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `settings` | `Settings` | 一个包含设置名称和值的键值映射,映射中未列出的名称将不会修改其值。 |
#### 响应
``null``
### `getStatus`
`GET` **`/status`**
**`概述`**
检索服务器的当前状态。
**`描述`**
返回关于远程端是否处于可以创建新会话的状态的信息,并且还可以包含特定于实现的任意元信息。
就绪状态由主体的ready属性表示,如果当前尝试创建会话会失败,则该属性为false。然而值为true并不能保证新建会话命令一定会成功。
实现可以选择将额外的元信息作为主体的一部分包含进来,但顶级属性ready和message是保留的,并且不能被覆盖。
<!-- comment source: builtin-interface -->
#### 示例
<!-- BEGIN:EXAMPLES -->
##### JavaScript
<!-- BEGIN:EXAMPLE lang=JavaScript -->
```js
// webdriver.io example
await driver.status();
```
<!-- END:EXAMPLE -->
##### Python
<!-- BEGIN:EXAMPLE lang=Python -->
```python
driver.get_status()
```
<!-- END:EXAMPLE -->
##### Java
<!-- BEGIN:EXAMPLE lang=Java -->
```java
driver.getStatus();
```
<!-- END:EXAMPLE -->
##### Ruby
<!-- BEGIN:EXAMPLE lang=Ruby -->
```ruby
# ruby_lib example
remote_status
# ruby_lib_core example
@driver.remote_status
```
<!-- END:EXAMPLE -->
<!-- END:EXAMPLES -->
#### 响应
`Object`
### `getTimeouts`
`GET` **`/session/:sessionId/timeouts`**
设置与会话相关的各种超时。
**`请参阅`**
[https://w3c.github.io/webdriver/#set-timeouts](https://w3c.github.io/webdriver/#set-timeouts)
<!-- comment source: method-signature -->
#### 响应
``null``
### `timeouts`
`POST` **`/session/:sessionId/timeouts`**
设置与会话相关的各种超时。
**`请参阅`**
[https://w3c.github.io/webdriver/#set-timeouts](https://w3c.github.io/webdriver/#set-timeouts)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `type?` | `string` | 仅用于旧的(JSONWP)命令,超时的类型 |
| `ms?` | `string` \| `number` | 仅用于旧的(JSONWP)命令,表示超时的毫秒数 |
| `script?` | `number` | 用于W3C命令的脚本超时时间(以毫秒为单位) |
| `pageLoad?` | `number` | 用于W3C命令的页面加载超时时间(以毫秒为单位) |
| `implicit?` | `string` \| `number` | 用于W3C命令的隐式等待超时时间(以毫秒为单位) |
#### 响应
``null``
### `implicitWait`
`POST` **`/session/:sessionId/timeouts/implicit_wait`**
设置隐式等待超时时间
!!! warning "已弃用"
请使用`/session/:sessionId/timeouts`代替
使用`timeouts`代替
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `ms` | `string` \| `number` | the timeout in ms |
#### 响应
``null``
### `logCustomEvent`
`POST` **`/session/:sessionId/appium/log_event`**
将自定义命名事件添加到Appium事件日志中
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `vendor` | `string` | 事件所属的供应商或工具的名称,用于为事件命名 |
| `event` | `string` | 事件本身的名称 |
#### 响应
``null``
### `reset`
`POST` **`/session/:sessionId/appium/app/reset`**
重置当前会话(运行删除会话并创建会话子程序)
!!! warning "已弃用"
请使用每个驱动程序的启动、激活、终止或清理方法。
改用显式会话管理命令代替
<!-- comment source: method-signature -->
#### 响应
``null``
@@ -0,0 +1,22 @@
# 插件: execute-driver
### `executeDriverScript`
`POST` **`/session/:sessionId/appium/execute_driver`**
在插件中执行命令
至少,`D`必须是`ExternalDriver`,但插件可以更严格地限制它支持哪些驱动程序。
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 |
| :------ | :------ |
| `script` | [script: string, scriptType: string, timeoutMs: number] |
| `type?` | [script: string, scriptType: string, timeoutMs: number] |
#### 响应
`unknown`
@@ -0,0 +1,66 @@
# 插件: images
### `compareImages`
`POST` **`/session/:sessionId/appium/compare_images`**
#### 参数
| 名字 | 类型 |
| :------ | :------ |
| `mode` | `any`[] |
| `options?` | `any`[] |
#### 响应
`ComparisonResult`
### `findElement`
`POST` **`/session/:sessionId/element`**
在给定定位策略和选择器的情况下查找UI元素,如果找不到则报错
**`请参阅`**
[https://w3c.github.io/webdriver/#find-element](https://w3c.github.io/webdriver/#find-element)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `any` | 定位策略 |
| `value` | `any` | 选择器与策略相结合,找到特定元素 |
#### 响应
`any`
对元素id进行编码的元素对象,可用于元素相关命令
### `findElements`
`POST` **`/session/:sessionId/elements`**
查找与给定定位策略和选择器匹配的所有UI元素的列表
**`请参阅`**
[https://w3c.github.io/webdriver/#find-elements](https://w3c.github.io/webdriver/#find-elements)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `any` | 定位策略 |
| `value` | `any` | 选择器与策略相结合,找到特定元素s |
#### 响应
`any`
可能为空的元素对象列表
+22
View File
@@ -0,0 +1,22 @@
---
hide:
- toc
title: 命令简介
---
在这里,您可以找到Appium主模块通过其基本驱动程序公开的各种命令,以及几个插件中可用的命令。
!!! 注意
Appium基本驱动程序只公开少数几个命令,因为它本身不是为单独使用而设计的。
请参阅您的[Appium驱动程序](../ecosystem/drivers.md)的文档,了解它公开的命令
然后查阅您的[Appium客户端](../ecosystem/clients.md)文档,了解该命令的确切语法。
命令列表可以在此处找到:
* [基础驱动程序](./base-driver.md)
* [执行驱动程序插件](./execute-driver-plugin.md)
* [图片插件](./images-plugin.md)
* [宽松能力插件](./relaxed-caps-plugin.md)
* [通用XML插件](./universal-xml-plugin.md)
@@ -0,0 +1,27 @@
# 插件: relaxed-caps
### `createSession`
`POST` **`/session`**
开始新的自动化会话
**`请参阅`**
[https://w3c.github.io/webdriver/#new-session](https://w3c.github.io/webdriver/#new-session)
<!-- comment source: multiple -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `desiredCapabilities?` | `any` | 新的会话功能 |
| `requiredCapabilities?` | `any` | 另一个可以发送新会话功能的地方(通常未定义) |
| `capabilities?` | `any` | 另一个可以发送新会话功能的地方(通常未定义) |
#### 响应
`any`
所创建会话的能力对象
@@ -0,0 +1,67 @@
# 插件: universal-xml
### `findElement`
`POST` **`/session/:sessionId/element`**
在给定定位策略和选择器的情况下查找UI元素,如果找不到则报错
**`请参阅`**
[https://w3c.github.io/webdriver/#find-element](https://w3c.github.io/webdriver/#find-element)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `any`[] | 定位策略 |
#### 响应
`any`
对元素id进行编码的元素对象,可用于元素相关命令
### `findElements`
`POST` **`/session/:sessionId/elements`**
查找与给定定位策略和选择器匹配的所有UI元素的列表
**`请参阅`**
[https://w3c.github.io/webdriver/#find-elements](https://w3c.github.io/webdriver/#find-elements)
<!-- comment source: method-signature -->
#### 参数
| 名字 | 类型 | 描述 |
| :------ | :------ | :------ |
| `using` | `any`[] | 定位策略 |
#### 响应
`any`
可能为空的元素对象列表
### `getPageSource`
`GET` **`/session/:sessionId/source`**
以HTML/XML格式获取当前页面/应用程序源代码
**`请参阅`**
[https://w3c.github.io/webdriver/#get-page-source](https://w3c.github.io/webdriver/#get-page-source)
<!-- comment source: method-signature -->
#### 响应
`string`
以适合平台的格式呈现的用户界面层次结构(例如,对于网页使用HTML)
@@ -0,0 +1,411 @@
---
title: Appium的配置系统
---
Appium2支持[配置文件](../guides/config.md)。配置文件是与命令行参数保持(几乎)一一对应的关系。
用户可以为Appium2提供配置文件、命令行参数,或者两者都提供(此时命令行参数的优先级高于配置文件)。
本文档将对配置系统的工作原理进行技术概述。它旨在为Appium的贡献者提供指导,但同时也会解释该系统的基础功能。
## 读取配置文件
配置文件是一个JSON、JavaScript或YAML文件,可以根据架构进行验证。
默认情况下,此文件将被命名为`.appiumrc.{json,js,yaml,yml}`,并位于依赖`appium`的项目的根目录中。
通过`--config <file>`标志,还支持其他文件名和位置。出于显而易见的原因,不允许在配置文件中使用`config`参数。
除了单独的文件外,配置还可以嵌入到项目的`package.json`文件中,使用`appiumConfig`属性。例如:
```json
{
"appiumConfig": {
"server": {
"port": 12345
}
}
}
```
当通过`appium`可执行文件启动Appium服务器时,`lib/main.js`中的`init`函数将调用`lib/config-file.js`加载或搜索配置文件和`package.json`。
!!! 注意
如果未找到配置文件,这并不会导致错误!
[`lilconfig`](https://npm.im/lilconfig)包提供了搜索和加载配置文件的功能;有关搜索路径的更多信息,请参考其文档。
此外,Appium通过[`yaml`](https://npm.im/yaml)包支持编写YAML格式的配置文件。
当找到并成功[验证](#_2)配置文件后,其结果将与默认设置以及额外的命令行参数进行合并。
在这个合并过程中,命令行参数的优先级高于配置文件,而配置文件的优先级则高于默认设置。
## 验证
该系统同时用于配置文件和命令行参数的验证。
[ajv](https://npm.im/ajv)包提供了验证功能。当然,为了让`ajv`进行验证,必须为其提供一个模式。
基础模式是一个符合[JSON Schema Draft-7](https://json-schema.org/draft/2020-12/json-schema-core.html)标准的对象,
由`lib/schema/appium-config-schema.js`文件导出。这个模式定义了Appium原生的配置,并且仅关注其作为服务器的行为;它并没有定义任何其他功能(例如插件或驱动程序子命令)的配置。
!!! 警告
请注意,这个文件是基础模式文件;这一点在后续操作中会变得至关重要。
此文件不是JSON文件,因为(1)JSON对人类来说很难使用,(2)@jlipps特别讨厌它,(3)`ajv`接受对象,而不是JSON文件。
解释配置文件是如何被验证的会更加直接明了,所以我们从这里开始。
### 验证配置文件
当发现一个配置文件(`lib/config-file.js`),它会调用从`lib/schema/schema.js`导出的`validate`函数,并将配置文件的内容作为参数传递给该函数。
接着,validate函数会请求`ajv`根据Appium提供的模式来验证这些数据。
如果配置文件无效,ajv会生成错误,这些错误随后会被显示给用户。最后,`init`函数会检测到这些错误,将它们显示出来,并且整个进程会退出。
我希望已经解释清楚了,因为这部分相对来说是比较容易理解的。
### 验证CLI参数
正如之前提到的,相同的系统被用于验证配置文件和命令行参数。
这里并没有任何评判的意思,但Appium使用[`argparse`](https://npm.im/argparse)来解析命令行参数。
这个包以及其他类似的包提供了一个API,用于定义命令行Node.js脚本接受的参数,并最终返回一个表示用户提供的参数的对象。
就像模式定义了配置文件中允许的内容一样,它也定义了命令行上允许的内容。
#### 通过模式定义CLI参数
在验证命令行参数的值之前,必须先定义这些参数。
JSON模式并不是定义CLI参数的天然选择,它需要一些额外的处理才能使其适用,
但它已经足够接近,以至于我们可以通过一个适配器和一些自定义元数据来实现这一点。
在`lib/cli/parser.js`中,有一个围绕`argparse`库的`ArgumentParser`的包装器;它被称为`ArgParser`。
这个包装器存在是因为我们对`argparse`做了一些自定义处理,但它与模式本身没有直接关系。
创建一个`ArgParser`实例,并用原始的CLI参数调用了它的`parseArgs()`方法,在`lib/cli/args.js`里定义了可以接受的参数。
在这里,所有不打算与`server`子命令一起使用的参数都是硬编码的(例如,`driver`子命令及其子命令)。
`args.js`还包含一个`getServerArgs()`函数,该函数转而调用`lib/schema/cli-args.js`中的`toParserArgs`。
`lib/schema/cli-args.js`可以视为`argparse`和模式之间的“适配器”层。
`toParserArgs`使用了由`lib/schema/schema.js`导出的`flattenSchema`函数,该函数将模式“压平”为键值对表示。
然后,`toParserArgs`遍历每个键值对,并将其“转换”为适合最终传递给`ArgParser`的`ArgumentOption`对象。
这个适配器(`cli-args.js`)是隐藏大部分混乱的地方;让我们进一步探索这个错综复杂的环境。
##### CLI和模式不一致
转换算法(见`lib/schema/cli-args.js`中的`subSchemaToArgDef`函数)
主要就是将各种技巧和特殊情况巧妙地打包到一个函数中。
有些事情不能从`argparse`清晰地映射到JSON模式,包括但不限于:
- 模式不能原生的表达“将`--foo=<value>`的值存储在一个名为`bar`的属性中”(这对应于`ArgumentOption['dest']`属性)。
- 模式不能原生的表达别名,例如`--verbose`也可以是`-v`。
- 模式的枚举不限制于多种类型,但`argparse`中对应的`ArgumentOption['choices']`属性是限制的。
- 模式不知道`argparse`中的"动作"概念(注意Appium目前没有使用自定义动作——尽管它曾经使用过,并且可能再次使用)。
- `argparse`没有原生的`email`、`hostname`、`ipv4`、`uri`等类型,而模式有。
- 模式验证只进行验证,不执行翻译、转换或强制转换(大部分情况下),`argparse`允许这样做。
- 出于某种原因模式允许`null`类型,你曾在命令行上传递过`null`吗?
- `argparse`除了基本类型之外,不理解其他任何内容,不理解对象、数组等,当然也不理解特定类型的数组。
-
上述所有情况以及其他情况均由适配器处理。
!!! 警告
适配器中的一些决策是通过抛硬币决定的。如果你好奇为什么某些事情会是这样,那很可能是因为它不得不这样做。
让我们更仔细地看看类型的处理。
#### 通过`ajv`处理参数类型
虽然`argparse`允许使用者通过API定义各种参数的类型(例如,字符串、数字、布尔标志等),
但Appium大多避免使用这些内置类型。为什么会这样呢?原因如下:
1. 我们已经知道参数的类型,因为我们在模式中已经定义了它。
2. `ajv`提供了针对模式的验证。
3. 模式允许对类型、允许的值等进行更丰富的表达,这些是`argparse`原生无法提供的。
4. 模式的表达能力允许提供更好的错误消息。
因此,适配器避开了`argparse`的内置类型(参见`ArgumentOption['type']`允许的字符串值),
而是滥用将函数作为类型提供的能力。例外情况是布尔标志,它们没有`type`,而是有`action: 'store_true'`。
至于为什么会这样,可能永远没人知道。
##### 类型作为函数
当`type`是一个函数时,这个函数同时执行验证和强制转换(如果需要)。那么这些函数是什么呢?
> 注意:如果属性类型是布尔值,那么`ArgumentOption`中的`type`会被省略(因此不是一个函数),
> 但会提供了一个`action`属性,值为`store_true`。是的,这很奇怪。我不知道为什么。
这取决于模式。但一般来说,我们会创建一个函数管道,每个函数都对应于模式中的一个关键字。
让我们以`port`参数为例,与其询问操作系统Appium运行的用户可以绑定到哪些端口,
不如预期这个参数是一个介于1和65535之间的整数。
这实际上是由两个函数组成的管道,我们将它们组合在一起:
1. 如果可能,将值转换为整数。因为`process.argv`中的每个值都是字符串,所以如果我们想要一个数字,就必须进行转换。
2. 使用`ajv`根据端口的模式验证整数。模式允许我们通过`minimum`和`maximum`关键字定义范围。有关其工作原理的更多信息,请查阅相关文档。
就像配置文件验证一样,如果检测到错误,Appium会友好地告诉用户,并附带一些帮助文本然后退出进程。
对于其他本身就是非基本类型的参数,事情就没那么简单了。
##### 转换器
还记得`argparse`无法理解数组吗?但如果表达一个值最直观的方式实际上是一个数组怎么办?
虽然Appium可以在配置文件中接受数组,但在命令行界面上却不能。
Appium可以接受一个逗号分隔的字符串(CSV行),或者是一个字符串文件路径,
指向包含分隔列表的文件。无论哪种方式,当值从参数解析器中输出时,它都应该是一个数组。
如上所述,JSON模式的原生功能无法表达这一点。然而可以定义一个自定义关键字,
Appium可以检测并相应地处理它,这就是Appium所做的。
在这种情况下,使用`ajv`注册了一个自定义关键字`appiumCliTransformer`。
在编写本文时,`appiumCliTransformer`的值可以是`csv`或`json`。
在基础模式文件`appium-config-schema.js`中,如果希望这种行为发生,
Appium会使用`appiumCliTransformer: 'csv'`。
!!! 注意
在模式中定义的任何类型为数组的属性都会自动使用csv转换器。同样,类型为对象的属性将使用json转换器。
可以想象,某些情况下数组可能想要使用JSON转换器,但除此之外,
在类型为数组或对象的属性上使用`appiumCliTransformer`关键字并不是严格必要的。
适配器(还记得适配器吗?)创建了一个管道函数,其中包括一个特殊的“CSV转换器”,转换器在`lib/schema/cli-transwers.js`中定义,
并将此函数作为值传递给`argparse`的`ArgumentOption`的`type`属性,在这种情况下,模式中的`type: 'array'`将被忽略。
!!! 注意
配置文件不需要执行任何复杂的值转换,因为它自然允许Appium准确定义它所期望的内容。
因此Appium不会对配置文件值进行后期处理。
不需要这种特殊处理的属性直接使用`ajv`进行验证。这是如何工作的一些解释,所以接下来就是这样。
#### Validation of Individual Arguments via `ajv`
When we think of a JSON schema, we tend to think, "I have this JSON file and I want to validate it
against the schema". That's valid, and in fact Appium does just that with config files! However,
Appium does not do this when validating arguments.
!!! 注意
During implementation, I was tempted to mash all of the arguments together into
a config-file-like data structure and then validate it all at once. I think that would have
been _possible_, but since an object full of CLI arguments is a flat key/value structure and
the schema is not, this seemed like trouble.
Instead, Appium validates a value against a specific property _within_ the schema. To do this, it
maintains a mapping between a CLI argument definition and its corresponding property. The mapping
itself is a `Map` with a unique identifier for the argument as the key, and an `ArgSpec`
(`lib/schema/arg-spec.js`) object as the value.
An `ArgSpec` object stores the following metadata:
| Property Name | Description |
| --------------- | ------------------------------------------------------------------------------------- |
| `name` | Canonical name of the argument, corresponding to the property name in the schema. |
| `extType?` | `driver` or `plugin`, if appropriate |
| `extName?` | Extension name, if appropriate |
| `ref` | Computed `$id` of the property in the schema |
| `arg` | Argument as accepted on CLI, without leading dashes |
| `dest` | Property name in parsed arguments object (as returned by `argparse`'s `parse_args()`) |
| `defaultValue?` | Value of the `default` keyword in schema, if appropriate |
When a schema is [finalized](#schema-finalization), the `Map` is populated with `ArgSpec` objects
for all known arguments.
So when the adapter is creating the pipeline of functions for the argument's `type`, it already has
an `ArgSpec` for the argument. It creates a function which calls `validate(value, ref)` (in
`lib/schema/schema.js`) where `value` is whatever the user provided, and `ref` is the `ref`
property of the `ArgSpec`. The concept is that `ajv` can validate using _any_ `ref` it knows about;
each property in a schema can be referenced by this `ref` whether it's defined or not. To help
visualize, if a schema is:
```json
{
"$id": "my-schema.json",
"type": "object",
"properties": {
"foo": {
"type": "number"
}
}
}
```
The `ref` of `foo` would be `my-schema.json#/properties/foo`. Assuming our `Ajv` instance knows
about this `my-schema.json`, then we can call its `getSchema(ref)` method (which has a `schema`
property, but is a misnomer nonetheless) to get a validation function; `validate(value, ref)` in
`schema.js` calls this validation function.
!!! 注意
The schema spec says a schema author can supply an explicit `$id` keyword to override this;
it's unsupported by Appium at this time. If needed, extension authors must carefully use `$ref`
without custom `$id`s. It's highly unlikely an extension would have a schema so complicated as
to need this, however; Appium itself doesn't even use `$ref` to define its own properties!
Next, let's take a look at how Appium loads schemas. This actually happens _before_ any argument
validation.
## Schema Loading
Let's ignore extensions for a moment, and start with the base schema.
When something first imports the `lib/schema/schema.js` module, an instance of an `AppiumSchema` is
created. This is a singleton, and its methods are exported from the module (all of which are bound
to the instance).
The constructor does very little; it instantiates an `Ajv` instance and configures it with Appium's
[custom keywords](#custom-keyword-reference) and adds support for the `format` keyword via the
[ajv-formats](https://npm.im/ajv-formats) module.
Otherwise, the `AppiumSchema` instance does not interact with the `Ajv` instance until its
`finalize()` method (exported as `finalizeSchema()`) is called. When this method is called, we're
saying "we are not going to add any more schemas; go ahead and create `ArgSpec` objects and
register schemas with `ajv`".
When does finalization happen? Well:
1. When the `appium` executable begins, it _checks for and configures extensions_ (hand-wave) in `APPIUM_HOME`.
2. Only then does it start to think about arguments--it instantiates an `ArgParser`, which (as you'll recall) runs the adapter to convert the schema to arguments.
3. _Finalization happens here_--when creating the parser. Appium need the schema(s) to be registered with `ajv` in order to create validation functions for arguments.
4. Thereafter, Appium parses the arguments with the `ArgParser`.
5. Finally, decides what to do with the returned object.
Without extensions, `finalize()` still knows about the Appium base schema
(`appium-config-schema.js`), and just registers that. However, step 1. above is doing a _lot of
work_, so let's look at how extensions come into play.
## Extension Support
One of the design goals of this system is the following:
_An extension should be able to register custom CLI arguments with the Appium, and a user should be
able to use them like any other argument_.
Previously, Appium 2 accepted arguments in this manner (via `--driverArgs`), but validation was
hand-rolled and required extension implementors to use a custom API. It also required the user to
awkwardly pass a JSON string as the configuration on the command-line. Further, no contextual help
(via `--help`) existed for these arguments.
Now, by providing a schema for its options, a driver or plugin can register CLI arguments and
config file schemas with Appium.
To register a schema, an extension must provide the `appium.schema` property in its `package.json`.
The value may be a schema or a path to a schema. If the latter, the schema should be JSON or
a CommonJS module (ESM not supported at this time, nor is YAML).
For any property in this schema, the property will appear as a CLI argument of the form
`--<extension-type>-<extension-name>-<property-name>`. For example, if the `fake` driver provides
a property `foo`, the argument will be `--driver-fake-foo`, and will show in `appium server --help`
like any other CLI argument.
The corresponding property in a config file would be
`server.<extension-type>.<extension-name>.<property-name>`, e.g.:
```json
{
"server": {
"driver": {
"fake": {
"foo": "bar"
}
}
}
}
```
The naming convention described above avoids problems of one extension type having a name conflict
with a different extension type.
!!! 注意
While an extension can provide aliases via `appiumCliAliases`, "short" flags are disallowed,
since all arguments from extensions are prefixed with `--<extension-type>-<extension-name>-`.
The extension name and argument name will be kebab-cased for the CLI, according to [Lodash's
rules](https://lodash.com/docs/4.17.15#kebabCase) around kebab-casing.
The schema object will look much like Appium's base schema, but it will only have top-level
properties (nested properties are currently unsupported). Example:
```json
{
"title": "my rad schema for the cowabunga driver",
"type": "object",
"properties": {
"fizz": {
"type": "string",
"default": "buzz",
"$comment": "corresponds to CLI --driver-cowabunga-fizz"
}
}
}
```
As written in a user's config file, this would be the `server.driver.cowabunga.fizz` property.
When extensions are loaded, the `schema` property is verified and the schema is registered with the
`AppiumSchema` (it is _not_ registered with `Ajv` until `finalize()` is called).
During finalization, each registered schema is added to the `Ajv` instance. The schema is assigned
an `$id` based on the extension type and name (which overrides whatever the extension provides, if
anything). Schemas are also forced to disallowed unknown arguments via the `additionalProperties:
false` keyword.
Behind the scenes, the base schema has `driver` and `plugin` properties which are objects. When
finalized, a property is added to each--corresponding to an extension name--and the value of this
property is a reference to the `$id` of a property in the extension schema. For example, the
`server.driver` property will look like this:
```json
{
"driver": {
"cowabunga": {
"$ref": "driver-cowabunga.json"
}
}
}
```
This is why we call it the "base" schema--it is _mutated_ when extensions provide schemas. The
extension schemas are kept separately, but the _references_ are added to the schema before it's
ultimately added to `ajv`. This works because an `Ajv` instance understands references _from_ any
schema it knows about _to_ any schema it knows about.
!!! 注意
This makes it impossible to provide a complete static schema for Appium _and_ the installed
extensions (as of Nov 5 2021). A static `.json` schema _is_ generated from the base (via a Gulp
task), but it does not contain any extension schemas. The static schema also has uses beyond
Appium; e.g., IDEs can provide contextual error-checking of config files this way. Let's solve
this?
Just like how we look up the reference ID of a particular argument in the base schema, validation
of arguments from extensions happens the exact same way. If the `cowabunga` driver has the schema
ID `driver-cowabunga.json`, then the `fizz` property can be referenced from any schema registered
with `ajv` via `driver-cowabunga.json#/properties/fizz`. "Base" schema arguments begin with
`appium.json#properties/` instead.
## Development Environment Support
During the flow of development, a couple extra tasks have been automated to maintain the base
schema:
- As a post-transpilation step, a `lib/appium-config.schema.json` gets generated from
- `lib/schema/appium-config-schema.js` (in addition to its CJS counterpart generated by Babel).
- This file is under version control. It ends up being _copied_ to
- `build/lib/appium-config.schema.json` in this step. A pre-commit hook (see
- `scripts/generate-schema-declarations.js` in the root monorepo) generates
- a `types/appium-config-schema.d.ts` from the above JSON file. The types in `types/types.d.ts`
- depend upon this file. This file is under version control.
## Custom Keyword Reference
Keywords are defined in `lib/schema/keywords.js`.
- `appiumCliAliases`: allows a schema to express aliases (e.g., a CLI argument can be `--verbose` or `-v`). This is an array of strings. Strings shorter than three (3) characters will begin with a single dash (`-`) instead of a double-dash (`--`). Note that any argument provided by an extension will begin with a double-dash, because these are required to have the `--<extension-type>-<extension-name>-` prefix.
- `appiumCliDest`: allows a schema to specify a custom property name in the post-`argprase` arguments objects. If not set, this becomes a camelCased string.
- `appiumCliDescription`: allows a schema to override the description of the argument when displayed on the command-line. This is useful paired with `appiumCliTransformer` (or `array`/`object`-typed properties), since there's a substantial difference between what a CLI-using user can provide vs. what a config-file-using user can provide.
- `appiumCliTransformer`: currently a choice between `csv` and `json`. These are custom functions which post-process a value. They are not used when loading & validating config files, but the idea should be that they result in the same object you'd get if you used whatever the config file wanted (e.g., an array of strings). `csv` is for comma-delimited strings and CSV files; `json` is for raw JSON strings and `.json` files.
- `appiumCliIgnore`: If `true`, do not support this property on the CLI.
- `appiumDeprecated`: If `true`, the property is considered "deprecated", and will be displayed as such to the user (e.g., in the `--help` output). Note the JSON Schema draft-2019-09 introduces a new keyword `deprecated` which we should use instead if upgrading to this metaschema. When doing so, `appiumDeprecated` should itself be marked as `deprecated`.
@@ -0,0 +1,90 @@
---
title: 贡献代码
---
要为Appium代码库做出贡献,请务必查看Git存储库。
!!! 信息
如果您是VS Code用户,您可以使用[Runme](https://runme.dev/api/runme?repository=https%3A%2F%2Fgithub.com%2Fappium%2Fappium.git&fileToOpen=packages%2Fappium%2Fdocs%2Fen%2Fcontributing%2Findex.md)轻松查看项目。
建议在将其克隆到您的系统之前进行[fork](https://github.com/appium/appium/fork)。
```sh
export GITHUB_USERNAME=<your-username>
git clone git@github.com:$GITHUB_USERNAME/appium.git
```
克隆后,您可以继续安装项目依赖项:
```sh
npm install
```
从现在开始,你可以做几件事。
### 监视文件
在开发Appium代码时,我们必须查看所有JavaScript和TypeScript文件,以便在每次更改后重新编译它们。您可以通过以下方式运行此监视过程:
```sh
npm run dev
```
### 在开发模式下启动Appium
要测试您的更改,您可以通过以下方式在开发模式下运行Appium:
```sh
npm start
```
### 运行测试
该项目维护了一组不同的测试变体,您可以运行这些变体来验证代码的质量。
#### 代码风格检查
Appium使用[`eslint`](https://eslint.org/)进行静态代码分析和代码风格检查。你可以通过以下方式运行这些检查:
```sh
npm run lint
```
#### 单元测试
```sh
npm run test:unit
```
您还可以对特定工作区运行测试,例如:
```sh
export APPIUM_WORKSPACE=@appium/doctor
npm run test:unit -w $APPIUM_WORKSPACE
```
#### 冒烟和端到端测试
```sh
npm run test:slow
```
### 在本地部署文档
我们的文档系统使用[MKDocs](https://www.mkdocs.org/),因此需要在您的系统上安装[Python](https://www.python.org/)。您可以通过以下方式运行文档:
```sh
# 安装所需的Python依赖项
PIP_BREAK_SYSTEM_PACKAGES=1 pip install -r packages/docutils/requirements.txt
# 构建项目
npm run build
# 运行开发服务器
npm run dev:docs
```
您应该可以在`http://127.0.0.1:8000/docs/en`查看页面:
```sh
open http://127.0.0.1:8000/docs/en
```
+29 -2
View File
@@ -1,5 +1,32 @@
---
title: 为Appium做贡献
hide:
- toc
title: 为Appium做出贡献
---
TODO
Appium是一个开源项目,遵循Apache 2.0许可证。其版权由[OpenJS基金会](https://openjsf.org)持有,
并且Appium接收来自多个软件行业中的公司的贡献,无论这些公司是否具有竞争关系。
(第三方驱动程序和插件在其作者提供的许可证下可用。)
因此,我们欢迎所有贡献!该项目的进展依赖于来自公司和志愿者的代码、文档、维护和支持的投入。
Appium文档的这一部分是为那些有兴趣为Appium开发做出贡献的人准备的。它包含了开发者概览、指南和说明。
请使用导航菜单来查找特定主题。这些指南中的所有信息都假设您已经对Appium有了深入的了解。
!!! 警告
开发者信息可能不会像面向用户的信息那样频繁更新,或者其当前形式可能在线仓库中最为相关,而非发布的版本中。
请务必检查仓库或与维护者讨论以确保信息的准确性。我们总是乐于帮助新贡献者入门!
## 贡献方式
该项目提供了多种贡献方式,例如:
- [贡献代码](./develop.md)
- 改进文档
- 创建教育内容(博客文章、教程、视频等)
- 传播有关该项目的好话(例如通过Twitter)
- 如果你在使用Appium的过程中发现了漏洞,请提交它们。
- 如果你发现项目中缺少某些功能,或者愿意协助处理漏洞,请提出请求。
- 支持[Appium论坛](https://discuss.appium.io/)中的用户

Some files were not shown because too many files have changed in this diff Show More