appium
Version:
Automation for Apps.
1,173 lines (951 loc) • 106 kB
Markdown
CHANGES IN VERSION 1.7.2 (from 1.7.1)
===================================
Appium 1.7.2 is a feature and bug fix release. It fixes many issues found in
earlier releases.
#### General
* Fix memory leak in server logging
* Add support for MacOS 10.13
* Clean up logging to make messages more clear and useful
* Add `printPageSourceOnFindFailure` to automatically log the current page source when finding an
element or elements fails
* Add ability to take screenshots of an element
* Begin to handle Selenium W3C specification
#### iOS
* Simulators
* Clean up handling in Xcode 9
* Add support for `shake` gesture (requires AppleScript)
* Add support for custom geo locations (requires AppleScript)
* Add possibility to clear caches
* Make sure execution does not fail when trying to shut down simulators that
are already shut down
* Fix handling of source when within a frame/iframe, so that the source of the
frame is retrieved instead of that of the top-most frameset
* Fix error when unable to parse real device date/time, to return unparsable
date rather than `Invalid Date`
* Fix getting crash logs
* Fix getting device logs in iOS 10+
* Fix cleaning up of temporary files
* Correctly handle device names for iPhone 7, 8 and X in Xcode 9
* Fix screenshots for larger real devices
* Fix runtime Xcode selection through `DEVELOPER_DIR` environment variable
* Add `useJSONSource` desired capability to force Appium to use WDA JSON source
and parse locally, to speed up source retrieval on larger devices
* Fix file pushing/pulling so it works for simulators and real devices
#### iOS - Instruments-specific
#### Android
* Fix handling of install/upgrade of Appium helper apps (for settings manipulation
and unlocking of devices)
* Add support for Chromedriver 2.33 (which supports webviews on Android O)
* Add `showChromedriverLog` desired capability to bring Chromedriver logs in-line
in the Appium server logs
* Fix error in stopping coverage when session failed to start
* Add support for getting and setting animation state
* Fix handling of size-limited text fields in API levels below 24
* Add support for getting the current value of progress bars
* Fix handling of initial orientation, and make sure no orientation is set if
nothing is requested
* Make sure all UiAutomator commands are properly handled
* Ensure `pageLoadStrategy` capability is passed to Chromedriver
* Add support to get currently running package name
* Ensure non-working Chromedriver is correctly handled
* Add `password` to retrievable element attributes
* Fix locale/language setting
* Add `clearDeviceLogsOnStart` desired capability, to clear `adb` `logcat` logs when the session is started
* Add `--relaxed-security`, and `mobile: shell` access to `adb`
CHANGES IN VERSION 1.7.1 (from 1.7.0)
===================================
Appium 1.7.1 fixes multiple issues with the previous release.
#### iOS
* Add ability to change default Simulator preferences
#### iOS - XCUITest
* Can use xctestrun file to launch WDA
* Fix bug that was causing startCapture to be called more than once
* Apply a workaround for setting default device orientation
* Update offset determination for iPad
#### iOS+Safari
* Add handler for starting/stopping JS console capture
#### Android
* Add support to force upgrade settings app
* Always assumes the file to be pushed by `pushFile` command contains binary data
* Add ADB option to to force reinstall on upgrade
#### Android - UiAutomator 2
* Do not proxy getting app strings
CHANGES IN VERSION 1.7.0 (from 1.6.5)
===================================
**Note:** This is a feature release, marking two major changes:
* Support iOS 11 through Xcode 9 beta 6
* Support multiple simultaneous sessions in Android and iOS (9+)
**Known Issues:**
* Android
* Webviews on Android O do not work because of a bug in Chromedriver. We
are working on a workaround. Chrome sessions still work
* iOS
* Touch ID enrollment on simulators in Xcode 9 does not work because of an
issue with AppleScript
* Scaling simulators with Xcode 9 does not work
* Simulators in Xcode 9 produce no meaningful device logs
* Parallel Safari/Webview sessions are not working due to an Apple bug
#### General
* Fix handling of sending keys to elements in recent versions of Selenium
* Allow `app` capability that is a url to have query parameters
* Begin to allow multiple device support in situations where it is possible
(e.g., iOS under Xcode 9)
* Add `isHeadless` capability to allow running simulator/emulator with no UI
#### iOS
* Add command to upload media to simulator
* Fix reliability of touch ID functionality
* Fix detection of system apps
* Update atoms used for MobileSafari automation to those of Selenium 3.5.3
* Add `realDeviceLogger` capability to allow specification of what program to
use to capture logs on real device
* Fix handling of `enablePerformanceLogging` capability in Safari tests
* Fix offset when Safari on an iPad has multiple tabs
#### iOS - XCUITest
* Support for latest Beta of iOS 11 (Xcode 9 beta 6)
* Multiple device support
* Fix handling of bundle id on simulators
* Make `nativeWebTap` a setting as well as a desired capability
* Allow `nativeWebTap` to work on real devices
* Do not try to uninstall app before installing on real device, which was causing
many issues
* Fix clearing of text fields
* Change behavior of `useNewWDA`: if `true`, forces uninstall of any existing
WebDriverAgent app on device. Set it to `true` if you want to apply different
startup options for WebDriverAgent for each session. Real devices require
WebDriverAgent client to run for as long as possible without reinstall/restart
to avoid issues. The `false` value will try to detect currently running WDA
listener executed by previous testing session(s) and reuse it if possible,
which is highly recommended for real device testing and to speed up suites of
multiple tests in general. A new WDA session will be triggered at the default
URL (http://localhost:8100) if WDA is not listening and `webDriverAgentUrl`
capability is not set.
* Allow setting url in native context
* Fix screenshot functionality
#### Android
* Add `remoteAdbHost` capability to specify the host on which adb is running, if
it is not localhost
* Add methods to start and stop recording the screen
* Fix screenshot commands
* Skip setting of mock location for emulators
* Add methods for emulator phone capacity: `sendSMS`, `gsmCall`, `gsmSignal`,
`gsmVoice`, `powerAC`, `powerCapacity`, and `networkSpeed`
* Fix cleanup of adb port forwarding during Chrome sessions
* Fix error where package name would be appended to fully qualified activity
name and package finding would then fail
* Properly handle bootstrap failure on launch
* Make sure correct logger is used for bootstrap
#### Android - UIAutomator 2
* Fix handling of `adbPort` capability
* Fix coverage handling
* Handle pressing and long pressing key codes
* Enable `nativeWebScreenshot` capability
* Fix restoring of IME when `unicodeKeyboard`/`resetKeyboard` capabilities are
used
* Add `disableWindowAnimation` capability to launch instrumentation with no
animation
* Correctly start ChromeDriver session for Chrome session
* Allow getting `password` attribute from elements
CHANGES IN VERSION 1.7.0-beta (from 1.6.5)
===================================
**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
issue tracker](https://github.com/appium/appium/issues) and provide as much
information as possible.
This release exists to provide an updatable package in order to get the latest
work on Appium. To install, first uninstall Appium and then re-install with the
`beta` tag. To get any changes that have been published to sub-packages, simply
repeat that process.
```
npm uninstall -g appium
npm install -g appium@beta
```
If you are running iOS tests with the XCUITest backend (i.e., iOS 10+ tests, and
some iOS 9.3 tests, if the `automationName` capability is set to `XCUITest`), you
should also remove the old build artifacts.
1. Remove derived data: `rm -rf ~/Library/Developer/Xcode/DerivedData/WebDriverAgent-*`
2. Remove `WebDriverAgentRunner` application from any real device being tested.
#### Android
* Add beta version of Espresso Driver. To use, set `automationName = espresso`.
CHANGES IN VERSION 1.6.6-beta.4 (from 1.6.5)
===================================
**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
issue tracker](https://github.com/appium/appium/issues) and provide as much
information as possible.
This release exists to provide an updatable package in order to get the latest
work on Appium. To install, first uninstall Appium and then re-install with the
`beta` tag. To get any changes that have been published to sub-packages, simply
repeat that process.
```
npm uninstall -g appium
npm install -g appium@beta
```
If you are running iOS tests with the XCUITest backend (i.e., iOS 10+ tests, and
some iOS 9.3 tests, if the `automationName` capability is set to `XCUITest`), you
should also remove the old build artifacts.
1. Remove derived data: `rm -rf ~/Library/Developer/Xcode/DerivedData/WebDriverAgent-*`
2. Remove `WebDriverAgentRunner` application from any real device being tested.
#### Android
* Add beta version of Espresso Driver. To use, set `automationName = espresso`.
CHANGES IN VERSION 1.6.5 (from 1.6.4)
===================================
Appium 1.6.5 fixes many issues and continues the trend to make more aspects of
the automation process configurable.
#### General
* Add `--enable-heapdump` server flag to turn on NodeJS memory dump collection,
to aid in memory management.
* Better logging of erroneous responses.
* Full support of W3C specification's handling of capabilities.
* Fix licensing in all dependencies.
#### Android
* Fix backgrounding of app.
* Add `androidInstallPath` capability to specify where on the device apps are installed.
* Speed up taking screenshots on Android 5.0 and higher devices.
* Fix handling of activity names that are inner classes.
* Support latest Android SDK directory structure.
* Fix issue where granting permissions would fail if there were too many.
* Fix handling of parent element information when finding elements.
#### Android - UIAutomator 2
* Fix handling of boolean return values.
* Add `skipUnlock` capability to skip the device unlock process.
* Fix issue where setting the network connection would crash.
#### iOS
* Add `enableAsyncExecuteFromHttps` capability to allow simulators to execute
asynchronous JavaScript on pages using HTTPS.
* Allow setting url in native context, for opening deep links.
* Better memory management when capturing device logs.
* Add `webkitResponseTimeout` capability to adjust the timeout for responses in
Safari real device tests.
* Add `enablePerformanceLogging` capability (previously Android-only) to turn on
performance logging in Safari tests.
#### iOS - XCUITest
* Fully support `clearSystemFiles` desired capability, deleting the derived data
for the `xcodebuild` process.
* Fix `longPress` duration, to be milliseconds.
* Add `mobile: selectPickerWheelValue` method to aid in interacting with picker wheels.
* Add `mobile: alert` method to enable passing of `buttonLabel` option, to handle
alerts with non-standard button names.
* Fix hanging if an app is not installed and only bundle identifier is given in
capabilities.
* Allow `platformVersion` to be a number or a string.
CHANGES IN VERSION 1.6.5-beta (from 1.6.4)
===================================
**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
issue tracker](https://github.com/appium/appium/issues) and provide as much
information as possible.
This release exists to provide an updatable package in order to get the latest
work on Appium. To install, first uninstall Appium (`npm uninstall -g appium`)
and then re-install with the `beta` tag (`npm install -g appium@beta`). To get
any changes that have been published to sub-packages, simply repeat that process.
CHANGES IN VERSION 1.6.4 (from 1.6.3)
===================================
Appium 1.6.4 fixes numerous issues with the previous releases. This release
supports iOS 10.3 as well as Android 7.1.
**_Note_:**
* Apple's MacOS 10.12.4 update has broken the functioning of iOS 10.2 and below
simulators.
#### General
* Fix `UnhandledPromiseRejection` errors when running Appium with Node version 7
* Better indicate missing necessary programs to users
* Fix session creation logging
* Fix server shutdown on `SIGINT` and `SIGTERM` signals
* Ensure that all requests have `application/json` content-type
* Add an event timing API to allow for monitoring of performance metrics such as
time to session startup, simulator boot, etc. Add `eventTimings` capability
to enable or disable
#### iOS
* Fix issues with error handling in Safari/Webview handling
* Increase simulator launch timeout for iOS 10+
* Better handling of page selection in Safari
* Fix memory usage issues when device logs get large
* Add `startIWDP` capability to allow Appium to handle starting/stopping `ios-webkit-debug-proxy`
automatically.
* Fix problem where date returned from device was not parsable
* Allow custom `SafariLauncher` bundle id to be passed in through `bundleId` capability
during real device Safari tests, in case Xcode can no longer build the bundled one
* Fix logging from real device in the case where the device data/time are different
from the server
#### iOS - XCUITest
* Changes the way the Appium checks that WebDriverAgent is running on the device,
so that rather than searching the logs, the device is pinged until it is
ready.
- Remove `realDeviceLogger` capability, since we no longer check the logs
* Add `useNewWDA` capability, which forces uninstall of the WDA app from the
device before each session
* Add `wdaLaunchTimeout` capability, which specified the time, in `ms`, to wait
for WDA to be loaded and launched on the device
* Allow for the auto-generation of the Xcode config file used to configurable
WDA before launch. This includes _two_ new desired capabilities
- `xcodeOrgId` - the Apple developer team identifier string
- `xcodeSigningId` - a string representing a signing certificate, defaulting to
"iPhone Developer"
* Allow for automatic changing of bundle id for WDA in cases where a
provisioning profile cannot be made for default bundle
- add `updatedWDABundleId` capability to specify bundle id for which there is
a valid provisioning profile
* Speed up setting the value of text fields
* Add `wdaConnectionTimeout` to control how long the server waits for WDA to
allow connections
* Fix handling of local port on real devices
* Speed up Safari interactions
* Fix session deletion to ensure that clean up happens
* Add `mobile: swipe` execute method
* Ensure that scrolling through `mobile: scroll` works in web context
* Add `class chain` search strategy (see [wiki](https://github.com/facebook/WebDriverAgent/wiki/Queries#searching-for-elements))
* Add `maxTypingFrequency` capability to set the speed of typing
* Introduce new set of gestures to allow access to everything the underlying
system can do (see [docs](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios-xctest-mobile-gestures.md))
* Add `allowTouchIdEnroll` capability to enroll simulator for touch id
* Use `simctl` to do simulator screenshots when possible
* Fix handling of getting status so that it returns even when other commands
are in progress, bypassing queue
* Fix bug where commands in webviews would work, but not return for a long time
* If `showXcodeLog` capability set, print out the contents of the xcodebuild log
file at the end of the session (also after a failure/retry of the build, in
such a case)
#### Android
* Default installation to ChromeDriver 2.28
* Add device manufacturer, model, and screen size to session details
* Fix bug in checking avd status on some systems
* Allow wildcards in `appWaitActivity` capability
* Fix issue where reboot would fail
* Add new unlocking strategies (see [docs](https://github.com/appium/appium-android-driver/blob/master/docs/UNLOCK.md))
* Add `androidNaturalOrientation` capability to allow for correct handling of
orientation on landscape-oriented devices
* Allow backgrounding to be permanent
* Dismiss Chrome welcome screen if `--no-first-run` Chrome option passed in
* Fix Android command line tools for recent releases
* Make network setting commands more reliable
#### Android - Selendroid
* Fix handling of host binary configuration for more precise installation options
CHANGES IN VERSION 1.6.4 Beta (from 1.6.3)
===================================
**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
issue tracker](https://github.com/appium/appium/issues) and provide as much
information as possible.
#### General
* Fixed `UnhandledPromiseRejection` errors when running Appium with Node version
7
* Better indicate missing necessary programs to users
* Fix session creation logging
* Fix server shutdown on `SIGINT` and `SIGTERM` signals
* Ensure that all requests have `application/json` content-type
#### iOS
* Fix issues with error handling in Safari/Webview handling
* Increase simulator launch timeout for iOS 10+
* Better handling of page selection in Safari
* Fix memory usage issues when device logs get large
#### iOS - XCUITest
* Changed the way the Appium checks that WebDriverAgent is running on the device,
so that rather than searching the logs, the device is pinged until it is
ready.
- Removed `realDeviceLogger` capability, since we no longer check the logs
* Add `useNewWDA` capability, which forces uninstall of the WDA app from the
device before each session
* Add `wdaLaunchTimeout` capability, which specified the time, in `ms`, to wait
for WDA to be loaded and launched on the device
* Allow for the auto-generation of the Xcode config file used to configurable
WDA before launch. This includes _two_ new desired capabilities
- `xcodeOrgId` - the Apple developer team identifier string
- `xcodeSigningId` - a string representing a signing certificate, defaulting to
"iPhone Developer"
* Allow for automatic changing of bundle id for WDA in cases where a
provisioning profile cannot be made for default bundle
- add `updatedWDABundleId` capability to specify bundle id for which there is
a valid provisioning profile
* Speed up setting the value of text fields
* Add `wdaConnectionTimeout` to control how long the server waits for WDA to
allow connections
* Fix handling of local port on real devices
* Speed up Safari interactions
* Fix session deletion to ensure that clean up happens
* Add `mobile: swipe` execute method
* Ensure that scrolling through `mobile: scroll` works in web context
#### Android
* Default installation to ChromeDriver 2.26
* Add device manufacturer, model, and screen size to session details
* Fix bug in checking avd status on some systems
* Allow wildcards in `appWaitActivity` capability
#### Android - Selendroid
* Fix handling of host binary configuration for more precise installation options
CHANGES IN VERSION 1.6.3 (from 1.6.2)
===================================
_This is another emergency release due to an issue with the NPM shrinkwrap_
#### iOS
* Fix issue where we might try and uninstall an ssl cert from a real device
where this isn't sensible
* Fix another issue with acceptSslCerts where it might potentially miss the
correct sim UDID
#### iOS - XCUITest
* Upgrade version of WebDriverAgent used. Includes following updates:
* Improve xpath query performance
* Verify predicates
* Fix crash for some xpath selectors
* Decorate proxied getSession response with Appium's capabilities (fixes
issues with clients that call getSession to determine server capabilities
and are confused by WDA's non-standard response) ([#7480](https://github.com/appium/appium/issues/7480))
* Fix issue with starting XCUITests on a real device, due to changes in WDA
that invalidated our startup detection logic. ([#7313](https://github.com/appium/appium/issues/7313))
* Allow connecting to an already-running WebDriverAgent through the
`webDriverAgentUrl` capability, rather than starting our own
#### Android
* Fix bug where we would attempt to get target SDK version from manifests
even when they might not include it. ([#7353](https://github.com/appium/appium/issues/7353))
* Actually pass the `acceptSslCerts` capability to the underlying automation
so that it can have an effect ([#7326](https://github.com/appium/appium/issues/7326))
* Updated permission granting logic to speed up permission granting by doing
it in bulk rather than one at a time ([#7493](https://github.com/appium/appium/issues/7493))
* Hide the new permission granting logic behind an `autoGrantPermissions`
capability which doesn't attempt to grant permissions unless it's `true`
([#7497](https://github.com/appium/appium/issues/7497))
#### Android - Uiautomator2
* Add ability to verify TOAST messages (these can't be interacted with, only
text retrieval allowed)
#### Windows
* _Actually_ upgrade WinAppDriver to 0.7 ([#7445](https://github.com/appium/appium/issues/7445)). Includes following updates:
* Click on arbitrary elements
* Support for sendKeys modifiers
* Various bugfixes
* Added `GET /orientation`
* Added support for WPF apps
CHANGES IN VERSION 1.6.2 (from 1.6.1)
===================================
_This is a small, mostly-emergency release because we realized we omitted
XCUITest upgrades via WebDriverAgent that we had mistakenly presumed were part
of 1.6.1._
#### iOS - XCUITest
* Upgrade version of WebDriverAgent used. Includes following updates:
* Support for setting values on sliders
* Fix tapping in various orientations
* Allow tapping on arbitrary coordinates
* Support for pinch gestures
* Make `clear` faster
* Improve xpath query performance
* Add `preventWDAAttachments` capability to help with XCUITest speed and disk usage
#### Android - UiAutomator2
* Code refactoring to pave the way for some UiAutomator2 wifi automation work
* Find an unused system port automatically to avoid port clashes
#### Windows
* Upgrade WinAppDriver to 0.7. Includes following updates:
* Click on arbitrary elements
* Support for sendKeys modifiers
* Various bugfixes
* Added `GET /orientation`
* Added support for WPF apps
CHANGES IN VERSION 1.6.1 (from 1.6.0)
===================================
Appium 1.6.1 is the first release since bringing Appium into the [JS Foundation](https://js.foundation/)
(see [press release](https://js.foundation/announcements/2016/10/17/Linux-Foundation-Unites-JavaScript-Community-Open-Web-Development/)).
Much of the development energy has been spent on fixing issues that have come up
from the newly-integrated XCUITest and UI Automator 2 vendor-provided test
backends.
#### General
* Add `clearSystemFiles` desired capability, to specify whether to delete any generated
files at the end of a session (see iOS and Android entries for particulars)
* Better handle signals for stopping server
* Fix operation of Selenium 3 Grid
* Log more of the proxied requests and responses, for better debugging
* Better handle source mapping for IDE support
* Move `appium-doctor` into globally-installed utility, not bundled with server
* Move `appium-logger` into `appium-base-driver`
* Better handle downloading of zip files which may not have a `.zip` extension (like `.apk`)
##### iOS
* Add support for iOS 10.1
* Add support for iOS 10.2 Beta 1
* Add `clearSystemFiles` desired capability to specify whether to Core Simulator
files, and Instruments (for iOS Driver) or XCUITest (for XCUITest Driver) generated files
* Ensure correct files are tested when checking for Simulator newness
* Map `iPad Simulator` `deviceName` to iPad Retina instead of discontinued iPad 2
* Gracefully return when Webkit Remote Debugger doesn't return on a real device
* Better log errors from xcode handling
* Add `customSSLCert` capability to pre-authorize a specific SSL cert in the iOS trust store
* During reset, don't try to uninstall an app from a real device if it's not installed
##### iOS - XCUITest specific
* clean up logging to remove confusing "Waiting..." lines
* Fix issue in which switching to NATIVE_APP would still proxy find commands to Remote debugger
* Fix handling of Selenium Grids
* Correctly handle long press so duration is respected
* Add `tapWithShortPressDuration` desired capability to specify a length for tapping,
if the regular tap is too long for the app under test
* Add support for scrolling through Touch Actions
* Make sure keyboard is available when keys are sent to Text Fields
* Add support for Zoom via Touch Action API (Pinch still not supported by Apple)
* Fix implementation of double tap
* Improvements in startup flow for real devices
* Allow gestures on coordinates, not just elements
* Add `scaleFactor` capability to direct Appium to set the simulator scale
##### Android
* Use ChromeDriver version 2.25
* Correctly handle `--suppress-adb-kill-server` command line argument
* Pass actual failure back when session fail and deleting the session also fails
* Add `clearSystemFiles` desired capability to specify whether to delete temporary
copies of the application under test at the end of the session
* Fix issue where finding UI Automator process id would throw an error
* Add `chromeAndroidPackage` capability which will be passed to `chromeOptions`
* Add APIs for gathering various kinds of performance data
* Ensure we don't try to stop app if `dontStopAppOnReset` is in force
* Fix issue where we tried to determine the bounds of a non-existent element
##### Android - UiAutomator2
* Fix handling of element attributes
* Better handle element finding
* Toast message verification support
* Ensure that there is a <hierarchy> root tag for xml/xpath source
* Implement /rotation endpoint (supports 4 rotations)
CHANGES IN VERSION 1.6.0 (from 1.5.3)
===================================
This release of Appium is a significant milestone, introducing support for two new platforms:
* [Windows](https://www.microsoft.com/en-us/windows) desktop applications (see the [usage documentation](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/windows-app-testing.md)).
* [You.i TV](http://www.youi.tv/) (see the [driver documentation](https://github.com/YOU-i-Labs/appium-youiengine-driver#appium-youi-engine-driver)).
There is also support for two new frameworks for automating iOS and Android:
* XCUITest support for automating iOS 9.3 and 10 (see [migration docs](https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-xcuitest.md) and [driver docs](https://github.com/appium/appium-xcuitest-driver#appium-xcuitest-driver)).
* UI Automator 2 support for enhanced automation of Android devices (see [wiki](https://github.com/appium/appium-uiautomator2-server/wiki)).
#### General
- Require Node 4 or above (**possible breaking change**)
- Add `automationName` capability entries for `XCUITest`, `UIAutomator2`, and `youiengine`
- Add `platformName` capability entry for `Windows`
#### iOS
- Add support for Xcode 8 and iOS 10 (using `automationName` of `XCUITest`). For information on using this driver, see the [driver documentation](https://github.com/appium/appium-xcuitest-driver#external-dependencies)
- Make sure device name gets properly translated into actual device name
- Fix case where orientation would get lost
- Fix Safari page change logic to actually catch when a page changes
- Try harder to kill Instruments if the normal way does not work, to avoid hanging processes
- Move `authorize-ios` into global package
#### Android
- Add `androidInstallTimeout` desired capability, to customize the timeout when installing an app
- Add `androidScreenshotPath` desired capability, to set the path in which screenshot files are saved on the device
- Add `appWaitDuration` desired capability, to customize how long to wait for an application
- Fix optional intent arguments to allow for hyphens
- Wait for apps to launch before proceeding
- Switch to clearing text fields using adb, to improve reliability and speed
- Add ability to detect screen orientation
- Make sure Selendroid mode doesn't lose connection through adb when network changes
- Make sure the release action in a touch action chain doesn't happen in the wrong place
- Make application install more reliable
- Fix screenshot on Windows
- Make Chromedriver connect on a random port if none specified
- Add `reboot` server argument, to specify that the avd ought to be cleaned and rebooted
CHANGES IN VERSION 1.6.0 beta 1 (from 1.5.3)
===================================
This release of Appium marks the beginning of support for two brand new platforms:
* [Windows](https://www.microsoft.com/en-us/windows) desktop applications (see the [usage documentation](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/windows-app-testing.md))
* [You.i TV](http://www.youi.tv/) (see the [driver documentation](https://github.com/YOU-i-Labs/appium-youiengine-driver#appium-youi-engine-driver)).
Further, since Apple removed the Instruments automation functionality in Xcode 8,
this release of Appium has preliminary support for XCUITest, allowing for the automation
of applications in iOS 9.3 and 10.
#### General
- Require Node 4 or above (**possible breaking change**)
- Add `automationName` entries for `XCUITest`, and `youiengine`
- Add `platformName` entry for `Windows`
#### iOS
- Add preliminary support for Xcode 8 and iOS 10 (using `automationName` of `XCUITest`). For information on using this driver, see the [driver documentation](https://github.com/appium/appium-xcuitest-driver#external-dependencies)
- Make sure device name gets properly translated into actual device name
- Fix case where orientation would get lost
- Fix Safari page change logic to actually catch when a page changes
- Try harder to kill Instruments if the normal way does not work, to avoid hanging processes
#### Android
- Add `androidInstallTimeout` desired capability, to customize the timeout when installing an app
- Add `androidScreenshotPath` desired capability, to set the path in which screenshot files are saved on the device
- Add `appWaitDuration` desired capability, to customize how long to wait for an application
- Fix optional intent arguments to allow for hyphens
- Wait for apps to launch before proceeding
- Switch to clearing text fields using adb, to improve reliability and speed
- Add ability to detect screen orientation
- Make sure Selendroid mode doesn't lose connection through adb when network changes
- Make sure the release action in a touch action chain doesn't happen in the wrong place
- Make application install more reliable
- Fix screenshot on Windows
- Make Chromedriver connect on a random port if none specified
CHANGES IN VERSION 1.5.3 (from 1.5.2)
===================================
*NOTE*: Appium 1.5.3 is primarily a bug-fix release.
It also adds functionality to support for iOS [WKWebViews](https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/) and for automating the iOS Calendar app, as well as adding a capability to use `abd` for screenshots in Android web/hybrid sessions, selecting the correct version of Android emulator, and providing a list of Android activities to wait for on session startup.
Further, Android session reporting is increased, so that automation clients can get the device UDID for the automation session, as well as the currently running `appPackage` and `appActivity`.
#### General
- Allow `--default-capabilities` server argument to specify a file containing the default capabilities.
- Fix handling of statuses from proxied drivers (Chrome, Selendroid, etc.).
- Fix handling of `browserName` capability for Selenium Grid usage.
- Fix intermittent bug where creating a directory might crash the server.
- Fix handling of `--session-override` server argument.
#### iOS
- Add support for `WKWebView`-based webviews.
- Add support for automating the built-in Calendar app.
- Fix `ios-debug-proxy-launcher`.
- Fix bug where scrolling in Safari would crash.
- Fix handling of Safari in "new window" state.
- Fix handling of arguments for `keys` method so that clients that send an array do not fail.
- Clean up handling of `ipa` files for real device tests.
- Make sure `processArguments` parsing works.
- Fix iwd script to allow re-running.
#### Android
- Add `nativeWebScreenshot` capability, to use `adb` screenshots instead of ChromeDriver if necessary.
- Add support to auto-select device based on `platformVersion` rather than using first available device.
- Allow `appWaitActivity` to be a list of activities
- Fix setting wifi and data state
- Implement `initAutoWebView` capability.
- Report `appPackage`, `appActivity`, and `deviceUDID` when requesting session details.
- Make sure unlock app is closed at the end of a session so that the device works again.
- Fix handling of unlock to make less flakey.
- Make sure unicode encoding works correctly when strings are long.
- Fix handling of `disableAndroidWatchers` capability.
- Fix killing ChromeDriver on Ubuntu 16.04.
- Fix bug where early ChromeDriver failure crashed Appium.
CHANGES IN VERSION 1.5.2 (from 1.5.1)
===================================
*NOTE*: Appium 1.5.2 is a bug-fix release.
#### General
- deprecated `--command-timeout`. Use `newCommandTimeout` desired capability instead
- ensure implicit wait can be set through `timeout` method
- add better logging for `EPIPE` errors
#### iOS
- make sure `ipa` files are handled correctly for installing on real devices
- ensure that existing SafariLauncher on device is used instead of rebuilding and reinstalling
- fix issues with getting webview contexts on real devices
- add full timeout support through `timeout` method
- make sure Xpath searches respect implicit wait timeout
- make sure bare Instruments process arguments are accepted
#### Android
- fix failure when `apk` file is too large
- re-implement setting geolocation so it does not use Telnet.
- add support for Chromium browser
- fix issues with `flick`
- fix bug where touch action `release` would throw an error
- fix bug in later Android SDK version where noticing a newly started avd would fail
- implement `autoWebviewTimeout`
CHANGES IN VERSION 1.5.1 (from 1.5)
===================================
*NOTE*: Appium 1.5.1 is a bug-fix release.
#### General
- allow `platformName` to be any case
- Windows process handling is cleaned up
- Desired capabilities `language` and `locale` added
#### iOS
- iOS 9.3 (Xcode 7.3) support
- Fix handling of return values from `executeScript` in Safari
- Don't stop if Instruments doesn't shut down in a timely manner
- Escape single quotes in all methods that set the value on an element
- Allow custom device names
- Make full use of process arguments to Instruments
- Pass `launchTimeout` to Instruments when checking devices
#### Android
- Make use of `--bootstrap-port` server argument
- Fix `keystorePassword` capability to allow a string
- Fix handling of localization in Android 6
- Use Appium's unlock logic for Chrome sessions
- Make sure reset works
- Make unlock more reliable for later versions of Android
- Allow Xpath searching from the context of another element
- Make full use of process arguments to adb
- Better error messages when ChromeDriver fails to start
CHANGES IN VERSION 1.5 (from 1.4.16)
======================================
*NOTE*: Appium 1.5 is a complete rewrite of Appium from the ground up. Every
effort has been made to avoid any breaking changes but caution should be
exercised. Please let us know on GitHub if you notice any issues with your
tests.
#### General
- Appium now requires Node 0.12 as a minimum Node version
- Deprecate server arguments that are also desired capabilities. Instead, add
a `--default-capabilities` argument which takes a JSON string of capabilities
that will be the default for any session. E.g., `--default-capabilities '{"launchTimeout": 60000}'`
- Various docs and contributing docs updates (including a code of conduct for
the project)
- Add capability validation on the protocol and driver level. Along with this
we have tightened up requirements on capability values so that they can be
strictly validated. For example, before you were able to send in a string
value of `"180"` for the `newCommandTimeout` capability. Now you must send in
an actual JSON number, e.g., `180`.
- Remove the `autoLaunch` capability since it added a significant
amount of complexity to the startup flow and Appium shouldn't be responsible
for this kind of use case
- Remove long-deprecated `name` locator strategy
- Remove long-deprecated `mobile: xxx` gesture commands, except scroll
#### iOS
- add Tapster support for some more touch methods
- fix moveTo: treat coordinates as relative, instead of absolute
- iPhone 6 + 6S support
- iOS 9.3 support
#### Android
- enable navigating to an android URI via the set url driver methods, e.g.,
driver.get('content://contacts/people/1')
- fix some adb issues in Windows (e.g., `signWithCustomCert`, sdk binary names)
- fix issue with UIWatcher ssl certificate errors
- if you want to install all chromedrivers, use --chromedriver-install-all; if
you want to install a specific chromedriver version, use
--chromedriver-version="$VER"
- `driver.closeApp` no longer runs through the shutdown routine; it simply
force-stops the app
- The `ANDROID_ADB_SERVER_PORT` environment variable has been removed in favor
of the `adbPort` desired capability, which does the same thing.
#### Non-exhaustive examples of internal changes
- see the [developer's
overview](/docs/en/contributing-to-appium/developers-overview.md) for
a fuller description of Appium 1.5 from a developer's perspective
- get rid of reset.sh and various other appium build tools in favor of a simple
npm install
- split apart Appium into various smaller modules each with their own
repositories and NPM packages
- use gulp instead of grunt
- use babel to transpile from es2015+ to standard es5 code
- get rid of .appiumconfig.json
CHANGES IN VERSION 1.4.16 (from 1.4.15)
===================================
#### iOS
- fix for safari and webview issues for 9.2
CHANGES IN VERSION 1.4.15 (from 1.4.14)
===================================
#### iOS
- fix for safari and webview issues in iOS9+
CHANGES IN VERSION 1.4.14 (from 1.4.13)
===================================
#### iOS
- support for iOS9.2
- fix for webview, resolving context issues in iOS9+
#### Selendroid
- upgrade to Selendroid 0.17.0.
CHANGES IN VERSION 1.4.13 (from 1.4.12)
===================================
#### Chromedriver
- Setting appium-chromedriver version to 2.3.2 as it is stable on Node version 0.10.32
CHANGES IN VERSION 1.4.12 (from 1.4.11)
===================================
#### iOS
- support for iOS9.1
- fix for iOS simulator with similar device names on Xcode 7
- fix to idevicelog (real device) to record logs only for device under test
CHANGES IN VERSION 1.4.11 (from 1.4.10)
===================================
#### iOS
- fix for iOS simulator selector for Xcode 7
- fix for selecting default device for iOS9
CHANGES IN VERSION 1.4.10 (from 1.4.9)
===================================
#### General
- fixed bug in a config file accidentally published in version 1.4.9
CHANGES IN VERSION 1.4.9 (from 1.4.8)
===================================
#### iOS
- support for iOS9 and xcode 7
- at this point instruments-without-delay is not supported for xcode-7
CHANGES IN VERSION 1.4.8 (from 1.4.7)
===================================
#### General
- fix for Windows users! Now the system architecture is properly detected, npm installs should work again
#### Chromedriver / Android hybrid
- fix for an issue in responding to `/status` api endpoint, this is used heavily by Selenium grid
CHANGES IN VERSION 1.4.7 (from 1.4.6)
===================================
#### Chromedriver / Android hybrid
- fix for problem in downstream jsonwp-proxy; now sessionId returned is replaced
with sessionId present in url(original sessionId). Fixed this in appium-jsonwp-proxy 1.2.3
CHANGES IN VERSION 1.4.6 (from 1.4.5)
===================================
#### General
- this is a republish because of a misconfiguration before 1.4.5 got published
resulting in a server startup failure
CHANGES IN VERSION 1.4.5 (from 1.4.4)
===================================
#### General
- fix problem with npm shrinkwrap that caused Appium not to start
CHANGES IN VERSION 1.4.4 (from 1.4.3)
===================================
#### Chromedriver / Android hybrid
- fix a problem in downstream appium-chromedriver; no longer rely on async
methods returning objects of the Promise type. This was causing undefined
errors when running Chromedriver/hybrid tests.
CHANGES IN VERSION 1.4.3 (from 1.4.2)
===================================
#### iOS
- update the appium-instruments dependency with working subdeps
CHANGES IN VERSION 1.4.2 (from 1.4.1)
===================================
#### General
- update ES6-based dependencies which got bit by a breaking Regenerator
change
#### iOS
- keep track of the correct app ID for Safari webviews (fixes problems in
finding the webview for iOS)
#### Android
- fix sendKeys and clear for Samsung devices
CHANGES IN VERSION 1.4.1 (from 1.4)
===================================
#### Chromedriver
- have the appium-chromedriver manage the chromedriver binary download/install
CHANGES IN VERSION 1.4 (from 1.3.7)
======================================
#### General
- fix for broken `./reset.sh --dev` due broken UICatalog build package in sample-code submodule
- fix for issues with cookie encoding
- updated sample code
- updated documentation
- updated test suite
- deprecate node 0.10
#### iOS
- support for iOS 8.3
- deprecate iOS 6.1 and iOS 7.0 (support will be removed soon, probably 1.5)
- deprecate Xcodes less than 6.3 (moving to support of latest versions only,
and Xcode 6.3+ together allows automation of all supported iOS versions). The
only exception to this is the combination of Xcode 6.0.1 + iOS 8.0.
- fix for issues relating to finding xcode folder and Info.plist
- new sever flag `--instruments <path>` to specify custom path to instruments commandLine tool
- fix for getOrientation
- fix for iOS crash log retrieval
#### Android
- fix for killing chromedriver on windows
- fix for parsing java version correctly
- support for searching elements by id without passing package name
- requesting capabilities from server now returns correct deviceName and platformVersion for Android
- fix for scrollTo
- new capability `disableAndroidWatchers`
- deprecated capability `stopAppOnReset`
- new capability `dontStopAppOnReset`
- fix a crash possibly encountered during extracting app strings
- new server argument `suppress-adb-kill-server`
- fix issue with `keys()`; now it correctly targets currently-focused element
#### Selendroid
- Support for installApp, isAppInstalled and removeApp
#### Android+Chrome
- Chormedriver version updated to 2.15
- fix for driver.quit()
- use the correct ADB path already identified by Appium
#### iOS+Safari
- fix for handling real device object
- fix for safariAllowPopups for iOS 8.x
- reduce logging in remote debugger for real devices, and don't use console.log
- fix issues with SafariLauncher on real devices
- fix execute_async so that it now works at all
CHANGES IN VERSION 1.3.7
======================================
#### General
- fix failure to remap session id in proxied responses
#### iOS
- fix intermittent failure to find Xcode
CHANGES IN VERSION 1.3.6
======================================
#### Android
- fix XPath regression where Appium failed to recognize non-ASCII characters
- fix regression where Appium failed to set ADB's path during Chromedriver tests
CHANGES IN VERSION 1.3.5
======================================
#### iOS
- fix for a bug when driver.get() never returns for page with alert.
- iOS 8.2 support.
- fixed safari startup crashes.
- ensure Appium drops into the right continuation cb when selecting hybrid contexts.
#### Android
- now finds the location of adb earlier.
- ensure encoding stream in Bootstrap.jar closes correctly.
- add workaround for issue where UiAUtomator fails to find visible elements.
- fixed undefined member error for the release object.
- add a delete key test.
#### Selendroid
- upgrade to Selendroid 0.13.0.
CHANGES IN VERSION 1.3.4
======================================
#### General
- better handling of session closing.
- tmp dir customization via env variable.
- app/browserName error message fix.
- functional test fixes.
#### iOS
- allow location services in zip file.
- ensure a string is returned from iOS getText.
- simpler device type detection logic.
- screenshotWaitTimeout cap
- added ios-webkit-debug-proxy launcher to go round libidevice 8.1 bugs
- waitForAppScript capability.
- syslog fix
- getStrings refactoring
- simulator folder fix
- doctor support for OSX 10.10.1
#### Android
- exec refactoring.
- uses for latest apktool (2.0.0-RC2) when Java 7 is detected.
- ADB.jars refactored into instance property.
- smart keyboard closing fix.
- added support for getting the resourceId attribute of an element.
- clear text fix for large centered edit fields.
- better handling of errors in clear text.
- ensure an already-running Android device's language and country settings are correct.
- fixed unknown server-side error is thrown when the XPath expression doesn't match any nodes.
- better error handling is SetText
- edit + clear fields with hint text fix.
- make hideKeyboard do nothing when keyboard is present but not closable (has no UI).
#### Selendroid
- upgrade to Selendroid 0.12.0.
- throws when getting a redirect from Selendroid.
- added hideKeyboard support.
- uses for latest apktool (2.0.0-RC2) when Java 7 is detected.
CHANGES IN VERSION 1.3.3 (from 1.3.1)
======================================
#### General
- fix several internal Appium tests
- add a sendKeyStrategy capability to allow testers to enable less reliable, but faster sendKey method
- add handling for safeRimRafSync ENOENT mesages
- clean up sessions when session clobbering enabled
- fix stripping log colors on --stripColors
- create system logs file before tailing it
#### iOS
- fix issue where driver.current_context is `null` for native app context
- fix bug that prevents closing tabs in Safari
- fix log capture when Appium starts a simulator for the first time
- add OSX 10.10 and iOS8 support for Appium Doctor
- fix inability to open Safari on a real device
#### Android
- fix arg and cap parsing when passing arguments to adb
- add support for passing elements as targets for swipe actions
- correctly calculate relative position of swipe targets
- ensure ChromeDriver instances are properly terminated
- fix appPackage parsing error with overlapping namespaces
- fix TouchAction release bug when released element is not valid
- ensure `logcat` correctly appended to command string
#### Selendroid
- add comment to caps page, and to running tests page, to note the need for a period before an activity
CHANGES IN VERSION 1.3.2
=====================================
#### Patch number skipped due to NPM error
CHANGES IN VERSION 1.3.1 (from 1.3.0)
=====================================
#### iOS
- fixed a bug where appium could hang if the 'full-reset' and 'keepKeychain' capabilities were both used on ios8.1
- default context now set to `NATIVE_APP` instead of being null
#### Android
- fix bugs which arise from spaces in the path to `adb` tool
- fix detection of whether the screen is locked
- fix an error with running remote apk's on Windows
CHANGES IN VERSION 1.3.0 (from 1.2.4)
======================================
#### General
- allow `full-reset` desired capability to work alongside `language`/`locale` desired capabilities
#### iOS
- add iOS 8 support
- add support for launching an app on the sim just by bundleId (iOS8 only)
- ensure screenshot process uses dir specified in --tmp
- add --isolate-sim-device which removes all other xcode 6 simulators
before running test (might be necessary for some platforms)
- update mobile safari temp app to include platformVersion so we don't get
strange version conflicts
- reset push notification privacy settings in between sessions
- fix the flakiness of getting a list of available devices
- auto-refresh Safari if no webviews are found
- rewrite cookie handling code to use code derived from jQuery instead of mozilla docCookie
- force device string when device name starts with "="
- fix a security hole in pullFile() where users could download files on the machine hosting appium
#### Android
- fix Chromedriver to work with newer versions
- Chromedriver will work if adb is not running on default port
- speed up clearing text fields when there is hint text
#### Selendroid
- fix sendKeys() in CHROMIUM context
- fix getContexts()
CHANGES IN VERSION 1.3.0-beta1 (from 1.2.3)
======================================
#### General
- add objective-c examples
#### iOS
- update appium-instruments with logging fixes
- add iOS 8 support
- add support for launching an app on the sim just by bundleId (iOS8 only)
- ensure screenshot process uses dir specified in --tmp
- add --isolate-sim-device which removes all other xcode 6 simulators
before running test (might be necessary for some platforms)
- update mobile safari temp app to include platformVersion so we don't get
strange version conflicts
- reset push notification privacy settings i