Skip to content

Commit 1422473

Browse files
authored
feat: Remove Selendroid driver (appium#12964)
1 parent 2be7573 commit 1422473

19 files changed

+16
-192
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ lib/devices/android/bootstrap/target/
2525
.*~
2626
*~
2727
org.eclipse.ltk.core.refactoring.prefs
28-
/selendroid
2928
.appiumconfig*
3029
build/
3130
.idea

README.md

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ specific information about how that driver works and how to set it up:
3030
* (BETA) The [Espresso Driver](/docs/en/drivers/android-espresso.md)
3131
* The [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md)
3232
* (DEPRECATED) The [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md)
33-
* (DEPRECATED) The [Selendroid Driver](/docs/en/drivers/android-selendroid.md)
3433
* The [Windows Driver](/docs/en/drivers/windows.md) (for Windows Desktop apps)
3534
* The [Mac Driver](/docs/en/drivers/mac.md) (for Mac Desktop apps)
3635

docs/en/about-appium/intro.md

-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ shipping**. The vendor-provided frameworks we use are:
4343
* iOS 9.3 and above: Apple's [XCUITest](https://developer.apple.com/reference/xctest)
4444
* iOS 9.3 and lower: Apple's [UIAutomation](https://web.archive.org/web/20160904214108/https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/)
4545
* Android 4.2+: Google's [UiAutomator/UiAutomator2](https://developer.android.com/training/testing/ui-automator)
46-
* Android 2.3+: Google's [Instrumentation](http://developer.android.com/reference/android/app/Instrumentation.html). (Instrumentation support is provided by bundling a separate project, [Selendroid](http://selendroid.io))
4746
* Windows: Microsoft's [WinAppDriver](http://github.com/microsoft/winappdriver)
4847

4948
We meet requirement #2 by wrapping the vendor-provided frameworks in one API,

docs/en/about-appium/platform-support.md

+5-10
Original file line numberDiff line numberDiff line change
@@ -38,34 +38,29 @@ Android automation is supported with two drivers:
3838

3939
* The [UiAutomator2 Driver](/docs/en/drivers/android-uiautomator2.md)
4040
* The (deprecated) [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md)
41-
* The (deprecated) [Selendroid Driver](/docs/en/drivers/android-selendroid.md)
4241

4342
Please refer to these driver docs for setup instructions.
4443

45-
* Versions: 2.3 and up
46-
* Versions 2.3 through 4.2 are supported via Appium's [Selendroid Driver](/docs/en/drivers/android-selendroid.md)
44+
* Versions: 4.2 and up
4745
* Versions 4.2 and up are supported via Appium's [UiAutomator and UiAutomator2](http://developer.android.com/tools/testing-support-library/index.html#UIAutomator)
4846
libraries. UiAutomator is the default driver.
4947
* Devices: Android emulators and real Android devices
5048
* Native app support: Yes
51-
* Mobile web support: Yes (but not when using Selendroid backend). Automation
49+
* Mobile web support: Yes. Automation
5250
is effected using a bundled [Chromedriver](https://code.google.com/p/selenium/wiki/ChromeDriver)
5351
server as a proxy. With 4.2 and 4.3, automation works on official Chrome
5452
browser or Chromium only. With 4.4+, automation also works on the built-in
5553
"Browser" app. Chrome/Chromium/Browser must already be installed on the
5654
device under test. See the [mobile web doc](/docs/en/writing-running-appium/web/mobile-web.md) for instructions.
5755
* Hybrid support: Yes. See the [hybrid doc](/docs/en/writing-running-appium/web/hybrid.md) for instructions.
5856
* With default Appium automation backend: versions 4.4 and up
59-
* With Selendroid automation backend: versions 2.3 and up
60-
* Support for automating multiple apps in one session: Yes (but not when
61-
using the Selendroid backend)
57+
* Support for automating multiple apps in one session: Yes
6258
* Support for automating multiple devices simultaneously: Yes,
6359
though Appium must be started using different ports for the server
64-
parameters `--port`, `--bootstrap-port` (or `--selendroid-port`) and/or
60+
parameters `--port`, `--bootstrap-port` and/or
6561
`--chromedriver-port`. See the [server args doc](/docs/en/writing-running-appium/server-args.md) for more
6662
information on these parameters.
67-
* Support for automating vendor-provided or third-party apps: Yes (but not
68-
when using the Selendroid backend)
63+
* Support for automating vendor-provided or third-party apps: Yes
6964
* Support for automating custom, non-standard UI controls: No
7065

7166
### Windows Desktop Support

docs/en/contributing-to-appium/appium-from-source.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ Now your Appium instance is ready to go. Run `node .` to kick up the Appium serv
9191
9292
To work on Android, make sure you have `ant`, `maven`, and `adb` installed
9393
and added to system `PATH` environment variable. Also you would need the
94-
android-16 sdk (for `Selendroid`) and android-19+ sdk installed.
94+
android-19+ sdk installed.
9595
From your local repo's command prompt, install/run the following:
9696
9797
Set up Appium by running:

docs/en/contributing-to-appium/appium-packages.md

+3-19
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
- put logging together
1212
- mixture out of npmlog, winston and a custom logger
1313
- initiates AppiumDriver (extends Basedriver)
14-
- assigns iOS/Android/Selendroid/Fake driver to session
14+
- assigns iOS/Android/Fake driver to session
1515
- creates/deletes Appium session
1616
- starts baseServer (appium-express)
1717
- passes routes given by driver
@@ -144,7 +144,7 @@
144144
- allows to send json wire protocol commands to a server that understands it (browser drivers)
145145
- parses response into json
146146
- allows to proxy requests to a proxied server
147-
- used for communication in appium-chromedriver and appium-selendroid-driver
147+
- used for communication in appium-chromedriver
148148

149149
## appium-android-driver
150150
- similar to appium-ios-driver it can run as standalone server
@@ -183,26 +183,10 @@
183183
- command flow is like
184184
- appium-android-bootstrap:start -> appium-uiautomator:start -> appium-adb:install bootstrap
185185

186-
## appium-selendroid-driver
187-
- similar to appium-android-driver it can run as standalone server
188-
- downloads and installs Selendroid using appium-selendroid-installer
189-
- contains several Selendroid specific logic to ensure a seamless integration
190-
- contains a more specific set of capability constraints
191-
- uses jsonwp-proxy to talk to the server
192-
- used appium-adb to enable commands not implemented in Selendroid
193-
194-
## appium-selendroid-installer
195-
- contains and exports a setup logic to
196-
- download Selendroid
197-
- determine AndroidManifest location
198-
- determine Server APK location
199-
- extracting both files
200-
- copying and cleaning files
201-
202186
## appium-android-ime
203187
- allows to send and receive unicode characters from/to the Android device
204188
- encodes text into UTF-7 sends it to the device and recodes it as Unicode
205-
- used by appium-android-driver and appium-selendroid-driver
189+
- used by appium-android-driver
206190

207191
## appium-doctor
208192
- diagnoses, reports and fixes common Node, iOS and Android configuration issues before starting Appium

docs/en/drivers/android-selendroid.md

-52
This file was deleted.

docs/en/drivers/android-uiautomator2.md

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ repo.
1212

1313
Older Android-based drivers include:
1414
* The [UiAutomator Driver](/docs/en/drivers/android-uiautomator.md)
15-
* The [Selendroid Driver](/docs/en/drivers/android-selendroid.md)
1615

1716
### Requirements and Support
1817

docs/en/writing-running-appium/caps.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ These Capabilities span multiple drivers.
3838

3939
|Capability|Description|Values|
4040
|----|-----------|-------|
41-
|`automationName`|Which automation engine to use|`Appium` (default) or `Selendroid` or `UiAutomator2` or `Espresso` for Android or `XCUITest` for iOS or `YouiEngine` for application built with You.i Engine|
41+
|`automationName`|Which automation engine to use|`Appium` (default) or `UiAutomator2` or `Espresso` for Android or `XCUITest` for iOS or `YouiEngine` for application built with You.i Engine|
4242
|`platformName`|Which mobile OS platform to use|`iOS`, `Android`, or `FirefoxOS`|
4343
|`platformVersion`|Mobile OS version|e.g., `7.1`, `4.4`|
4444
|`deviceName`|The kind of mobile device or emulator to use|`iPhone Simulator`, `iPad Simulator`, `iPhone Retina 4-inch`, `Android Emulator`, `Galaxy S4`, etc.... On iOS, this should be one of the valid devices returned by instruments with `instruments -s devices`. On Android this capability is currently ignored, though it remains required.|
@@ -105,9 +105,9 @@ These Capabilities are available only on Android-based drivers (like
105105
|`dontStopAppOnReset`| Doesn't stop the process of the app under test, before starting the app using adb. If the app under test is created by another anchor app, setting this false, allows the process of the anchor app to be still alive, during the start of the test app using adb. In other words, with `dontStopAppOnReset` set to `true`, we will not include the `-S` flag in the `adb shell am start` call. With this capability omitted or set to `false`, we include the `-S` flag. Default `false`| `true` or `false`|
106106
|`unicodeKeyboard`| Enable Unicode input, default `false`| `true` or `false`|
107107
|`resetKeyboard`| Reset keyboard to its original state, after running Unicode tests with `unicodeKeyboard` capability. Ignored if used alone. Default `false`| `true` or `false`|
108-
|`noSign`| Skip checking and signing of app with debug keys, will work only with UiAutomator and not with selendroid, default `false`| `true` or `false`|
108+
|`noSign`| Skip checking and signing of app with debug keys, will work only with UiAutomator, default `false`| `true` or `false`|
109109
|`ignoreUnimportantViews`| Calls the `setCompressedLayoutHierarchy()` uiautomator function. This capability can speed up test execution, since Accessibility commands will run faster ignoring some elements. The ignored elements will not be findable, which is why this capability has also been implemented as a toggle-able *setting* as well as a capability. Defaults to `false` | `true` or `false`
110-
|`disableAndroidWatchers`| Disables android watchers that watch for application not responding and application crash, this will reduce cpu usage on android device/emulator. This capability will work only with UiAutomator and not with selendroid, default `false`| `true` or `false`|
110+
|`disableAndroidWatchers`| Disables android watchers that watch for application not responding and application crash, this will reduce cpu usage on android device/emulator. This capability will work only with UiAutomator, default `false`| `true` or `false`|
111111
|`chromeOptions`| Allows passing chromeOptions capability for ChromeDriver. For more information see [chromeOptions](https://sites.google.com/a/chromium.org/chromedriver/capabilities) | `chromeOptions: {args: ['--disable-popup-blocking']}` |
112112
|`recreateChromeDriverSessions`| Kill ChromeDriver session when moving to a non-ChromeDriver webview. Defaults to `false` | `true` or `false`|
113113
|`nativeWebScreenshot`| In a web context, use native (adb) method for taking a screenshot, rather than proxying to ChromeDriver. Defaults to `false` | `true` or `false`|

docs/en/writing-running-appium/running-tests.md

-75
Original file line numberDiff line numberDiff line change
@@ -193,81 +193,6 @@ capabilities and connect to the server running at port 4723 of localhost (or
193193
whatever host and port you specified when you started Appium). You should be
194194
all set now!
195195

196-
### Running your test app with Appium (Android devices < 4.2, and hybrid tests)
197-
198-
Android devices before version 4.2 (API Level 17) do not have Google's
199-
[UiAutomator framework](http://developer.android.com/tools/testing-support-library/index.html#UIAutomator)
200-
installed. This is what Appium uses to perform the automation behaviors on
201-
the device. For earlier devices or tests of hybrid (webview-based) apps,
202-
Appium comes bundled with another automation backend called [Selendroid]
203-
(http://selendroid.io/).
204-
205-
To use Selendroid, all that is required is to slightly change the set of
206-
desired capabilities mentioned above, by adding the `automationName` capability
207-
and specifying the Selendroid automation backend. It is usually the case that you
208-
also need to use a `.` before your activity name (e.g., `.MainActivity` instead
209-
of `MainActivity` for your `appActivity` capability).
210-
211-
```javascript
212-
// javascript
213-
{
214-
automationName: 'Selendroid',
215-
platformName: 'Android',
216-
platformVersion: '2.3',
217-
deviceName: 'Android Emulator',
218-
app: myApp,
219-
appPackage: 'com.mycompany.package',
220-
appActivity: '.MainActivity'
221-
}
222-
```
223-
224-
```python
225-
# python
226-
{
227-
'automationName': 'Selendroid',
228-
'platformName': 'Android',
229-
'platformVersion': '2.3',
230-
'deviceName': 'Android Emulator',
231-
'app': myApp,
232-
'appPackage': 'com.mycompany.package',
233-
'appActivity': '.MainActivity'
234-
}
235-
```
236-
237-
```php
238-
// php
239-
public static $browsers = array(
240-
array(
241-
'desiredCapabilities' => array(
242-
'automationName' => 'Selendroid',
243-
'platformName' => 'Android',
244-
'platformVersion' => '2.3',
245-
'deviceName' => 'Android Emulator',
246-
'app' => $myApp,
247-
'appPackage' => 'com.mycompany.package',
248-
'appActivity'=> '.MainActivity'
249-
)
250-
)
251-
);
252-
```
253-
254-
```java
255-
// java
256-
DesiredCapabilities capabilities = new DesiredCapabilities();
257-
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Selendroid");
258-
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
259-
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "2.3");
260-
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
261-
capabilities.setCapability(MobileCapabilityType.APP, myApp);
262-
capabilities.setCapability(MobileCapabilityType.APP_PACKAGE: "com.mycompany.package");
263-
capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY: ".MainActivity");
264-
```
265-
266-
Now Appium will start up a Selendroid test session instead of the default test
267-
session. One of the downsides to using Selendroid is that its API differs
268-
sometimes significantly with Appium's. Therefore we recommend you thoroughly
269-
read [Selendroid's documentation](http://selendroid.io/native.html) before
270-
writing your scripts for older devices or hybrid apps.
271196

272197
### Running your test app with Appium (Windows)
273198

docs/en/writing-running-appium/server-args.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ All flags are optional, but some are required in conjunction with certain others
3939
|`--nodeconfig`|null|Configuration JSON file to register appium with selenium grid|`--nodeconfig /abs/path/to/nodeconfig.json`|
4040
|`-ra`, `--robot-address`|0.0.0.0|IP Address of robot|`--robot-address 0.0.0.0`|
4141
|`-rp`, `--robot-port`|-1|port for robot|`--robot-port 4242`|
42-
|`--selendroid-port`|8080|Local port used for communication with Selendroid|`--selendroid-port 8080`|
4342
|`--chromedriver-port`|9515|Port upon which ChromeDriver will run|`--chromedriver-port 9515`|
4443
|`--chromedriver-executable`|null|ChromeDriver executable full path||
4544
|`--show-config`|false|Show info about the appium server configuration and exit||
@@ -58,7 +57,7 @@ All flags are optional, but some are required in conjunction with certain others
5857
|`-k`, `--keep-artifacts`|false|[DEPRECATED] - no effect, trace is now in tmp dir by default and is cleared before each run. Please also refer to the --trace-dir flag.||
5958
|`--platform-name`|null|[DEPRECATED] - Name of the mobile platform: iOS, Android, or FirefoxOS|`--platform-name iOS`|
6059
|`--platform-version`|null|[DEPRECATED] - Version of the mobile platform|`--platform-version 7.1`|
61-
|`--automation-name`|null|[DEPRECATED] - Name of the automation tool: Appium or Selendroid|`--automation-name Appium`|
60+
|`--automation-name`|null|[DEPRECATED] - Name of the automation tool: Appium, XCUITest, etc.|`--automation-name Appium`|
6261
|`--device-name`|null|[DEPRECATED] - Name of the mobile device to use|`--device-name iPhone Retina (4-inch), Android Emulator`|
6362
|`--browser-name`|null|[DEPRECATED] - Name of the mobile browser: Safari or Chrome|`--browser-name Safari`|
6463
|`--app`|null|[DEPRECATED] - IOS: abs path to simulator-compiled .app file or the bundle_id of the desired target on device; Android: abs path to .apk file|`--app /abs/path/to/my.app`|

docs/en/writing-running-appium/web/hybrid.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,7 @@ public function testThings()
159159
### Automating hybrid Android apps
160160

161161
Appium comes with [built-in hybrid support via Chromedriver](/docs/en/writing-running-appium/web/chromedriver.md),
162-
which allow the automation of any Chrome-backed Android web views. Appium also
163-
uses [Selendroid](http://selendroid.io/) under the hood for webview support on
164-
devices older than 4.4. (in which case you will need to specify
165-
`"automationName": "selendroid"` as a desired capability).
162+
which allow the automation of any Chrome-backed Android web views.
166163

167164
There is an additional step necessary within your app build, unfortunately. As
168165
described in the Android [remote debugging docs](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews)

docs/toc.js

-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ module.exports = {
1616
['UIAutomator (Android)', 'android-uiautomator.md'],
1717
['UIAutomator2 (Android)', 'android-uiautomator2.md'],
1818
['Espresso (Android)', 'android-espresso.md'],
19-
['Selendroid (Android)', 'android-selendroid.md'],
2019
['Windows', 'windows.md'],
2120
['Mac', 'mac.md'],
2221
]],
@@ -296,7 +295,6 @@ module.exports = {
296295
['UIAutomator (Android)', 'android-uiautomator.md'],
297296
['UIAutomator2 (Android)', 'android-uiautomator2.md'],
298297
['Espresso (Android)', 'android-espresso.md'],
299-
['Selendroid (Android)', 'android-selendroid.md'],
300298
['Windows', 'windows.md'],
301299
['Mac', 'mac.md'],
302300
]],

lib/appium.js

-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ const PLATFORMS = {
2424

2525
const AUTOMATION_NAMES = {
2626
APPIUM: 'Appium',
27-
SELENDROID: 'Selendroid',
2827
UIAUTOMATOR2: 'UiAutomator2',
2928
UIAUTOMATOR1: 'UiAutomator1',
3029
XCUITEST: 'XCUITest',
@@ -37,10 +36,6 @@ const AUTOMATION_NAMES = {
3736
MAC: 'Mac',
3837
};
3938
const DRIVER_MAP = {
40-
[AUTOMATION_NAMES.SELENDROID.toLowerCase()]: {
41-
driverClassName: 'SelendroidDriver',
42-
driverPackage: 'appium-selendroid-driver',
43-
},
4439
[AUTOMATION_NAMES.UIAUTOMATOR2.toLowerCase()]: {
4540
driverClassName: 'AndroidUiautomator2Driver',
4641
driverPackage: 'appium-uiautomator2-driver',

lib/config.js

-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ function validateServerArgs (parser, args) {
197197
port: checkValidPort,
198198
callbackPort: checkValidPort,
199199
bootstrapPort: checkValidPort,
200-
selendroidPort: checkValidPort,
201200
chromedriverPort: checkValidPort,
202201
robotPort: checkValidPort,
203202
backendRetries: (r) => { return r >= 0; }

0 commit comments

Comments
 (0)