feat(appium): add easy access to a few more drivers and plugins
MODIFY
README.md
README.md
@@ -69,40 +69,10 @@ appium driver update xcuitest
appium driver uninstall xcuitest
```
-#### Drivers Maintained By The Appium Team
-
-These drivers are supported by Appium core members. Please report any issues
-or suggestions regarding them to the corresponding GitHub issue tracker.
-Refer to the corresponding driver Readme to know more on how to use it and its requirements.
-
-Name | Description
---- | ---
-[appium-xcuitest-driver](https://github.com/appium/appium-xcuitest-driver) | Allows automation of iOS native and web apps (via hybrid mode). Also supports tvOS. This driver is based on Apple's [XCTest framework](https://developer.apple.com/documentation/xctest) and can only use macOS as the host system.
-[appium-uiautomator2-driver](https://github.com/appium/appium-uiautomator2-driver) | Allows automation of Android native and web apps (via hybrid mode). The driver is based on Google's [UiAutomator](https://developer.android.com/training/testing/other-components/ui-automator) framework.
-[appium-espresso-driver](https://github.com/appium/appium-espresso-driver) | Allows automation of Android native apps. The driver is based on Google's [Espresso](https://developer.android.com/training/testing/espresso) framework.
-[appium-mac2-driver](https://github.com/appium/appium-mac2-driver) | Allows automation of macOS native apps. Also supports tvOS. This driver is based on Apple [XCTest framework](https://developer.apple.com/documentation/xctest) and can only use macOS as the host system.
-[appium-windows-driver](https://github.com/appium/appium-windows-driver) | Allows automation of Windows native and UWP apps. This driver is based on Microsoft's [WinAppDriver](https://github.com/microsoft/WinAppDriver) implementation and can only use Windows 10 as the host system.
-[appium-gecko-driver](https://github.com/appium/appium-geckodriver) | Allows automation of Gecko-engine-based browsers, like Firefox on mobile and desktop platforms. Uses [geckodriver](https://github.com/mozilla/geckodriver/releases) command line tool provided by Mozilla for various platforms.
-[appium-safari-driver](https://github.com/appium/appium-safari-driver) | Allows automation of Safari browser on mobile and desktop platforms . Uses the [safaridriver](https://www.manpagez.com/man/1/safaridriver/) command line tool provided by Apple as part of macOS.
-
-#### Drivers Provided By Third Parties
-
-These drivers are supported by different companies or communities.
-Please report any issues related to their functionality to their
-respective maintainers. If you are a developer yourself and have created a new useful
-Appium2-compatible driver then don't hesitate to create a PR and add a link to
-your driver into the below list.
-
-<details>
- <summary>Drivers List</summary>
-
- Name | Description
- --- | ---
- [appium-youiengine-driver](https://github.com/YOU-i-Labs/appium-youiengine-driver) | Appium You.i Engine Driver is a test automation tool for devices of various platforms running applications built with [You.i Engine](http://www.youi.tv/youi-engine/)
- [appium-flutter-driver](https://github.com/appium-userland/appium-flutter-driver) | Allows automation of apps built using [Flutter](https://flutter.dev/) framework
- [appium-tizen-driver](https://github.com/Samsung/appium-tizen-driver) | Allows automation of apps built for devices running [Tizen OS](https://www.tizen.org/)
- [appium-linux-driver](https://github.com/fantonglang/appium-linux-driver) | Allows automation of Linux applications using [AtSpi2](https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/) framework
-</details>
+You can find a full list of
+[officially-supported](https://appium.github.io/appium/docs/en/latest/ecosystem/#drivers) and
+[third-party](https://appium.github.io/appium/docs/en/latest/ecosystem/#other-drivers) drivers at
+the current Appium 2.0 documentation.
### Plugins
@@ -132,33 +102,11 @@ The main difference between drivers and plugins is that the latter must be expli
appium server --use-plugins=device-farm,images
```
-#### Plugins Maintained By The Appium Team
+You can find a full list of
+[officially-supported](https://appium.github.io/appium/docs/en/latest/ecosystem/#plugins) and
+[third-party](https://appium.github.io/appium/docs/en/latest/ecosystem/#other-plugins) plugins at
+the current Appium 2.0 documentation.
-These plugins are supported by Appium core members. Please report any issues
-or suggestions regarding them to the corresponding GitHub issue tracker.
-Refer to the corresponding plugin Readme to know more on how to use it.
-
-Name | Description
---- | ---
-[images](https://github.com/appium/appium/tree/master/packages/images-plugin) | This is an official Appium plugin designed to facilitate image comparison, visual testing, and image-based functional testing.
-[relaxed-caps](https://github.com/appium/appium/tree/master/packages/relaxed-caps-plugin) | With the advent of Appium 2.0, the Appium server begins to require that all capabilities conform to the W3C requirements for capabilities. Among these requirements is one that restricts capabilities to those found in a predetermined set. Appium supports many additional capabilities as extension capabilities, and these must be accessed with the prefix appium: in front of the capability name. There are a lot of test scripts out there that don't conform to the requirement, and so this plugin is designed to make it easy to keep running these scripts even with the new stricter capabilities requirements beginning with Appium 2.0. Basically, it inserts the appium: prefix for you!
-[universal-xml](https://github.com/appium/appium/tree/master/packages/universal-xml-plugin) | This is an official Appium plugin designed to make XML source retrieved from iOS and Android use the same node and attribute names, to facilitate cross-platform test writing.
-
-#### Plugins Provided By Third Parties
-
-These plugins are supported by different companies or communities.
-Please report any issues related to their functionality to their
-respective maintainers. If you are a developer yourself and have created a new useful
-plugin then don't hesitate to create a PR and add a link to your plugin into the below list.
-
-<details>
- <summary>Plugins List</summary>
-
- Name | Description
- --- | ---
- [appium-device-farm](https://github.com/AppiumTestDistribution/appium-device-farm) | This is an Appium plugin designed to manage and create driver session on connected android devices and iOS Simulators.
- [appium-reporter-plugin](https://github.com/AppiumTestDistribution/appium-reporter-plugin) | This Plugin generates standalone consolidated html report with screenshots. Report can be fetched from appium server, without worrying about heavy lifting such as screenshot capturing, report generation etc.
-</details>
### Server Command Line Interface

MODIFY
packages/appium/docs/en/ecosystem/index.md
packages/appium/docs/en/ecosystem/index.md
@@ -13,28 +13,44 @@ learn more about the inspector here: [Appium Inspector](https://github.com/appiu
## Drivers
-You can't use Appium without at least one driver! Here are the drivers that are officially
-recognized by Appium. Click on the link for each driver to see the specific installation
+You can't use Appium without at least one driver! Here are the drivers that are currently
+maintained by the Appium team. Click on the link for each driver to see the specific installation
instructions and documentation for that driver.
To learn more about what drivers are and how they work, check out the [Driver
Intro](../intro/drivers.md)
-|Driver|Installation Key|Platform(s)|Mode(s)|Support|
-|-|-|-|-|-|
-|[XCUITest](https://github.com/appium/appium-xcuitest-driver)|`xcuitest`|iOS|Native, Hybrid, Web|Appium Team|
-|[UiAutomator2](https://github.com/appium/appium-uiautomator2-driver)|`uiautomator2`|Android|Native, Hybrid, Web|Appium Team|
-|[Espresso](https://github.com/appium/appium-espresso-driver)|`espresso`|Android|Native|Appium Team|
-|[Mac2](https://github.com/appium/appium-mac2-driver)|`mac2`|macOS|Native|Appium Team|
-|[Safari](https://github.com/appium/appium-safari-driver)|`safari`|macOS, iOS|Web|Appium Team|
-|[Gecko](https://github.com/appium/appium-geckodriver)|`gecko`|macOS, Windows, Linux, Android|Web|Appium Team|
-|[Windows](https://github.com/appium/appium-windows-driver)|`windows`|Windows|Native|Community / Microsoft|
-|[Flutter](https://github.com/appium-userland/appium-flutter-driver)|`flutter`|iOS, Android|Native|Community|
-|[Tizen](https://github.com/Samsung/appium-tizen-driver)|`tizen`|Android|Native|Community / Samsung|
-|[Youi](https://github.com/YOU-i-Labs/appium-youiengine-driver)|`youiengine`|iOS, Android, macOS, Linux, tvOS|Native|Community / You.i|
+|Driver|Installation Key|Platform(s)|Mode(s)|
+|--|--|--|--|
+|[Espresso](https://github.com/appium/appium-espresso-driver)|`espresso`|Android|Native|
+|[Gecko](https://github.com/appium/appium-geckodriver)|`gecko`|macOS, Windows, Linux, Android|Web|
+|[Mac2](https://github.com/appium/appium-mac2-driver)|`mac2`|macOS|Native|
+|[Safari](https://github.com/appium/appium-safari-driver)|`safari`|macOS, iOS|Web|
+|[UiAutomator2](https://github.com/appium/appium-uiautomator2-driver)|`uiautomator2`|Android|Native, Hybrid, Web|
+|[XCUITest](https://github.com/appium/appium-xcuitest-driver)|`xcuitest`|iOS|Native, Hybrid, Web|
And of course, you can install any other drivers you find out there by using the Appium driver CLI.
+### Other drivers
+
+These drivers are not maintained by the Appium team and can be used to target additional platforms.
+
+|Driver|Installation Key|Platform(s)|Mode(s)|Supported By|
+|--|--|--|--|--|
+|[Flutter](https://github.com/appium-userland/appium-flutter-driver)|`--source=npm appium-flutter-driver`|iOS, Android|Native|Community|
+|[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|
+|[Windows](https://github.com/appium/appium-windows-driver)|`--source=npm appium-windows-driver`|Windows|Native|Community / Microsoft|
+|[Youi](https://github.com/YOU-i-Labs/appium-youiengine-driver)|`--source=npm appium-youiengine-driver`|iOS, Android, macOS, Linux, tvOS|Native|Community / You.i|
+
+!!! note
+
+ If you maintain an Appium driver that you would like to be listed in the Appium docs, feel free
+ to make a PR to add it to this section with a link to the driver documentation.
+
## Clients
You need a clients to write and run Appium scripts. To learn more about clients, read our [Client
@@ -42,7 +58,7 @@ Intro](../intro/clients.md). Here is the list of known Appium clients. You'll wa
familiar with your client documentation (as well as the documentation of any Selenium client that
the Appium client depends on) since that is what you will use as your primary interface to Appium.
-|Client|Language|Support|
+|Client|Language|Supported By|
|-|-|-|
|[Appium Java client](https://github.com/appium/java-client)|Java|Appium Team|
|[Appium Python client](https://github.com/appium/python-client)|Python|Appium Team|
@@ -53,3 +69,30 @@ the Appium client depends on) since that is what you will use as your primary in
In general, any W3C WebDriver spec-compatible client will also integrate well with Appium, though
some Appium-specific commands may not be implemented in other clients.
+
+## Plugins
+
+Appium Plugins offer ways to extend or modify Appium's behaviour. This is the list of plugins that
+are currently maintained by the Appium Team:
+
+|Plugin|Installation Key|Description|Supported By|
+|---|---|---|---|
+|[Execute Driver](https://github.com/appium/appium/tree/master/packages/execute-driver-plugin)|`execute-driver`|Run entire batches of commands in a single call to the Appium server|Appium Team|
+|[Images](https://github.com/appium/appium/tree/master/packages/images-plugin)|`images`|Image matching and comparison features|Appium Team|
+|[Relaxed Caps](https://github.com/appium/appium/tree/master/packages/relaxed-caps-plugin)|`relaxed-caps`|Relax Appium's requirement for vendor prefixes on capabilities|Appium Team|
+|[Universal XML](https://github.com/appium/appium/tree/master/packages/universal-xml-plugin)|`universal-xml`|Instead of the standard XML format for iOS and Android, use an XML definition that is the same across both platforms|Appium Team|
+
+### Other plugins
+
+|Plugin|Installation Key|Description|Supported By|
+|---|---|---|---|
+|[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`|
+|[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`|
+
+!!! note
+
+ If you maintain an Appium plugin that you would like to be listed in the Appium docs, feel free
+ to make a PR to add it to this section with a link to the documentation for the plugin.
+

MODIFY
packages/appium/lib/constants.js
packages/appium/lib/constants.js
@@ -29,6 +29,7 @@ export const KNOWN_PLUGINS = Object.freeze(
images: '@appium/images-plugin',
'execute-driver': '@appium/execute-driver-plugin',
'relaxed-caps': '@appium/relaxed-caps-plugin',
+ 'universal-xml': '@appium/universal-xml-plugin',
})
);
@@ -40,13 +41,8 @@ export const KNOWN_DRIVERS = Object.freeze(
/** @type {const} */ ({
uiautomator2: 'appium-uiautomator2-driver',
xcuitest: 'appium-xcuitest-driver',
- youiengine: 'appium-youiengine-driver',
- windows: 'appium-windows-driver',
- mac: 'appium-mac-driver',
mac2: 'appium-mac2-driver',
espresso: 'appium-espresso-driver',
- tizen: 'appium-tizen-driver',
- flutter: 'appium-flutter-driver',
safari: 'appium-safari-driver',
gecko: 'appium-geckodriver',
})

feat(appium): add easy access to a few more drivers and plugins (#17878)