UNPKG

118 kBMarkdownView Raw
1CHANGES IN VERSION 1.10.0 (from 1.9.1)
2===================================
3
4Appium 1.10.0 is a minor release.
5
6#### General
7* Bring Espresso Driver out of beta and into general availability
8* Support Xcode 10, discontinue support for Xcode 8
9* Bump up minimum Node version to 8 and minimum NPM version to 6
10* Improve string extractions for Android and iOS
11* Fix synchronization of applications caching [#274](https://github.com/appium/appium-base-driver/pull/274)
12* Disable CORS on `createServer` by default.Add `--allow-cors` flag to server flags [#11719](https://github.com/appium/appium/pull/11719)
13
14#### iOS
15* Add [mobile:](http://appium.io/docs/en/commands/mobile-command/#ios-xcuitest-only) methods:
16 * Add biometrics (touchId, faceId) methods that can enroll/unenroll biometric features and send matching/non-matching biometric inputs (iOS Simulator only) [#816](https://github.com/appium/appium-xcuitest-driver/pull/816)
17 * Add method to clear keychains for an iOS Simulator [#816](https://github.com/appium/appium-xcuitest-driver/pull/816)
18* Add [permissions capability](https://github.com/appium/appium-xcuitest-driver#desired-capabilities) that sets service permissions (calendar, siri, etc...) prior to creating a session [#818](https://github.com/appium/appium-xcuitest-driver/pull/818)
19* Add possibility to upload files into different container types on Simulator [#770](https://github.com/appium/appium-xcuitest-driver/pull/770)
20* Add [reduceMotion](https://github.com/appium/appium-xcuitest-driver/blob/master/README.md#L161) capability [#760](https://github.com/appium/appium-xcuitest-driver/pull/760)
21* Improve video recording
22* Improved iOS simulator booting procedure
23* Add mobile endpoint for running Siri commands [#837](https://github.com/appium/appium-xcuitest-driver/pull/837)
24
25#### Android
26* Add [mobile:](http://appium.io/docs/en/commands/mobile-command) command for performing editor actions [#428](https://github.com/appium/appium-android-driver/pull/428)
27* Can record videos up to 30 minutes (requires [FFMPEG](https://www.ffmpeg.org/) to be installed) [#399](https://github.com/appium/appium-android-driver/pull/399)
28* Add `localeScript` capability to set script in `locale` (https://developer.android.com/reference/java/util/Locale) [#460](https://github.com/appium/appium-android-driver/pull/460)
29* Allow `locale` and `language` for real devices under API level 23 [#379](https://github.com/appium/appium-adb/pull/379)
30* Improved video recording
31* Fix [bug](https://github.com/appium/appium/issues/11619) calling `getRect` in MJSONWP sessions [#240](https://github.com/appium/appium-uiautomator2-driver/pull/240)
32* Fix pin entry error on Samsung devices that wasn't correctly locating the "Enter" button [#458](https://github.com/appium/appium-android-driver/pull/458)
33* Relax [hidden API policy](https://developer.android.com/about/versions/pie/restrictions-non-sdk-interfaces) for Android P and above
34* Support running tests using Android App Bundle [#11601](https://github.com/appium/appium/pull/11601)
35
36#### Android (UiAutomator2)
37* Add [mobile:](http://appium.io/docs/en/commands/mobile-command) command for retrieving device information [#221](https://github.com/appium/appium-uiautomator2-driver/pull/211)
38* Support `.apks` bundles [#233](https://github.com/appium/appium-uiautomator2-driver/pull/233)
39* Fix bug with timeouts calls for W3C sessions [#239](https://github.com/appium/appium-uiautomator2-driver/pull/239)
40* Refactored XML source generation and xpath search in order to fix known bugs and to improve the general performance of these operations [#208](https://github.com/appium/appium-uiautomator2-server/pull/208)
41* Refactored and fixed issues with W3C Actions [#205](https://github.com/appium/appium-uiautomator2-server/pull/205)
42
43CHANGES IN VERSION 1.9.1 (from 1.9.0)
44===================================
45
46Appium 1.9.1 is a patch release. Next version will likely not support Xcode 8
47
48#### General
49* Append the current session identifier to the protocol name prefix in server logs
50* Fix the way current protocol is determined from execute response
51
52#### iOS
53* Support Xcode 10 and iOS 12.0
54* Add a possibility to set container type for Simulator while pushing/pulling files
55* Fix W3C format handling by receiveAsyncResponse command
56* Fix iPhone X Simulator screen recording
57
58#### Android
59* Fix `getStrings` for no app
60* Fix screen recording bug
61* Return the current geolocation from `getGeoLocation`
62* Add `mobile:mobileGetDeviceInfo` command (UiAutomator2 only)
63* Make 'by tag name' selector compatible with View Tag selector (Espresso only)
64* Convert mouse action events to touch actions (Espresso only)
65
66#### Windows
67* Add more support for [W3C Actions API](https://www.w3.org/TR/webdriver1/#actions)
68 * Support pointer input methods: up, down and move
69 * Add advanced modifier attributes to 'touch' inputs: pressure, twist, width, height
70 * Add advanced modifier attributes to 'pen' inputs: pressure, twist, tilt x and y, eraser, barrel button
71 * Support interpolation for 'pen' and 'multitouch'
72
73
74CHANGES IN VERSION 1.9.0 (from 1.8.1)
75===================================
76
77Appium 1.9.0 is a feature release, comprising multiple updates.
78
79#### General
80* Full W3C Specification support.
81* Add full beta of [Espresso driver](https://github.com/appium/appium-espresso-driver)
82 for Android automation (used by specifying `automationName` capability to be
83 `"Espresso"`).
84* Add driver for [Samsung Tizen devices](https://github.com/Samsung/appium-tizen-driver)
85* Add `-image` find element strategy,
86* Fix `--async-trace` server argument, and rename as `--long-stacktrace`
87* Sample code has been moved into the main repository to aid in maintenance.
88* Fix status retrieval to speed up performance.
89
90#### iOS
91* Add support for Xcode 10 beta 5 and iOS 12 beta 5.
92* Add preliminary support for MacOS Mojave beta.
93* Add face id biometric support.
94* Fix retrieval of device time, and add optional `format` parameter.
95* Do not crash if there is no `idevicesyslog` when ending session.
96* Handle frames when page changes in Safari.
97* Add desired capabilities:
98 * `remoteDebugProxy` - port or Unix domain socket on which a proxy for the
99 remote debugger sits.
100 * `safariGarbageCollect` - turn on/off JS garbage collection in Safari.
101 * `showSafariNetworkLog` - print Safari network logs in the Appium server logs.
102 * `mjpegServerPort` - port to which screenshots can be streamed.
103* Fix handling of settings updates, so simulators are not restarted unnecessarily.
104* Allow pulling of folder from real devices.
105* Add `mobile: getContexts` execute function, to retrieve meta-information (title,
106 url, etc.) about available contexts.
107* Fix certificate retrieval and handling.
108* Fix cookie handling, to allow secure cookies.
109* Fix Safari timeout issues.
110* Add support to retrieve Safari network logs, as `safariNetwork` log type.
111
112#### Android
113* Update Chromedriver to v2.41.
114* Get Chrome version for Webviews in Android 7+, to find correct Chromedriver.
115* Make sure UiAutomator processes are cleaned up during test.
116* Fix handling of `autoWebview` capability.
117* New desired capabilities:
118 * `mjpegScreenshotUrl` - url to stream screenshots to.
119 * `chromedriverUseSystemExecutable` - boolean flag to use the default Chromedriver
120 installed with Appium, avoiding any attempt to find correct Chromedriver.
121 * `disableWindowAnimation` - disable window animations on device (now available
122 on UiAutomator _and_ UiAutomator2).
123 * `pageLoadStrategy` - page load strategy for Chromedriver.
124* Allow test-only APKs to be installed.
125* Fix implicit wait handling for finding elements.
126* Better handle Unicode IME installation.
127* Relax package validation logic.
128* Fix error in UiAutomator searches with nested quotes.
129* Perform accessibility refresh when needed on UiAutomator2.
130* Improve logic for determining if apps need upgrade.
131* Fix screen recording to allow longer recordings, up to 30 minutes.
132
133
134CHANGES IN VERSION 1.8.1 (from 1.8.0)
135===================================
136
137Appium 1.8.1 introduces multiple fixes and features. Most notably, it improves the performance of XCUITest
138getPageSource.
139
140#### General
141* Fix shrinkwrap problem caused due to package-lock being set to false (#10660)
142
143#### iOS
144* Add keyboard presence verification endpoint (see http://appium.io/docs/en/commands/device/keys/is-keyboard-shown/)
145* Add `mobile:startLogsBroadcast` feature (see http://appium.io/docs/en/commands/mobile-command/)
146* Add cap called `realDeviceScreenshotter` to use idevicescreenshot for real device screenshots
147* Add application platform verification
148* Validates that `webdriverAgentUrl` capability is a valid URL
149* Add an extension to retrieve battery info from a real device
150* Fix Safari console log retrieval
151
152#### Android
153* Return the current connection state instead of undefined for setNetworkConnection
154* Add a possibility to include stderr output into adb:shell call (see https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/android-shell.md#supported-arguments)
155* Add flags argument to pressKeyCode so it is possible to generate IME actions if needed (UIAutomator2 only)
156* Add a cap called `userProfile` which is an integer to enforce user profile while launching applications
157* Make it possible to retrieve a battery info from the device under test (mobile:batteryInfo)
158* Add `deviceApiLevel` to returned session capabilities (UIAutomator2 only)
159* Fix passing suppressKillServer option while creating ADB instance
160* Improve performance of swipe unlock action
161* Improve restore from background behaviour
162
163CHANGES IN VERSION 1.8.0 (from 1.7.2)
164===================================
165
166Appium 1.8.0 introduces full support for the [W3C WebDriver specification](https://www.w3.org/TR/webdriver/)
167([digested version of the spec](https://github.com/jlipps/simple-wd-spec)).
168
169#### General
170* Minimum [NodeJS](https://nodejs.org/en/) version moved to 6
171* Add methods for
172 * getting and setting the clipboard contents
173 * get full screen screenshots
174 * Application management
175* More efficient app downloading by caching URLs
176* All `moveTo` operations in touch actions now take coordinates as absolute
177* Support for registering selenium grid through HTTPS by setting the configuration
178 key `"hubProtocol"` to `"https"`
179* Add `otherApps` desired capability, to specify array of ancillary apps to install
180 on session creation
181
182#### iOS
183* Support for iOS 11.3/Xcode 9.3
184* Fix handling of process arguments
185* Add capabilities
186 * `shutdownOtherSimulators` - shutdown other running simulators at session start up
187* Add ability to record screen
188* Add support for complex gestures
189* Fix handling of custom SSL certificate on simulators
190* Better handling of `xcodebuild` processes
191* Maintain keychains while upgrading apps
192* Better handle simulators in unexpected states
193* Add performance measuring (see [documentation](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios/ios-xctest-performance.md))
194
195#### Android
196* Support for Android P (API Level 28)
197 * Known issue in screenshot: https://issuetracker.google.com/issues/76114030
198* Fix handling of webview contexts when resetting apps
199* Fix handling of screen recording
200* Make sure intent is broadcast when file is uploaded
201* Add possibility to broadcast device logs through WebSocket
202* Chromedriver
203 * Bundle version 2.37
204 * Automatically choose compatible Chromedriver for Chrome version
205 * `chromedriverExecutableDir` capability to specify where Chromedrivers are located
206 * `chromedriverChromeMappingFile` capability to specify what Chromedriver version corresponds to what Chrome version
207* Fix Handling of idle state waiting
208* Speed up screenshot logic in UiAutomator2
209* Allow disabling of notification watching through settings
210* Fix parsing and granting of permissions for app under test
211* Support deep linking and Android Instant Apps
212
213
214CHANGES IN VERSION 1.8.0-beta (from 1.7.2)
215===================================
216
217Appium 1.8.0 introduces full support for the [W3C WebDriver specification](https://www.w3.org/TR/webdriver/)
218([digested version of the spec](https://github.com/jlipps/simple-wd-spec)).
219
220
221CHANGES IN VERSION 1.7.2 (from 1.7.1)
222===================================
223
224Appium 1.7.2 is a feature and bug fix release. It fixes many issues found in
225earlier releases.
226
227
228#### General
229* Fix memory leak in server logging
230* Add support for MacOS 10.13
231* Clean up logging to make messages more clear and useful
232* Add `printPageSourceOnFindFailure` to automatically log the current page source when finding an
233 element or elements fails
234* Add ability to take screenshots of an element
235* Begin to handle Selenium W3C specification
236
237#### iOS
238* Simulators
239 * Clean up handling in Xcode 9
240 * Add support for `shake` gesture (requires AppleScript)
241 * Add support for custom geo locations (requires AppleScript)
242 * Add possibility to clear caches
243 * Make sure execution does not fail when trying to shut down simulators that
244 are already shut down
245* Fix handling of source when within a frame/iframe, so that the source of the
246 frame is retrieved instead of that of the top-most frameset
247* Fix error when unable to parse real device date/time, to return unparsable
248 date rather than `Invalid Date`
249* Fix getting crash logs
250* Fix getting device logs in iOS 10+
251* Fix cleaning up of temporary files
252* Correctly handle device names for iPhone 7, 8 and X in Xcode 9
253* Fix screenshots for larger real devices
254* Fix runtime Xcode selection through `DEVELOPER_DIR` environment variable
255* Add `useJSONSource` desired capability to force Appium to use WDA JSON source
256 and parse locally, to speed up source retrieval on larger devices
257* Fix file pushing/pulling so it works for simulators and real devices
258
259#### iOS - Instruments-specific
260
261
262#### Android
263* Fix handling of install/upgrade of Appium helper apps (for settings manipulation
264 and unlocking of devices)
265* Add support for Chromedriver 2.33 (which supports webviews on Android O)
266* Add `showChromedriverLog` desired capability to bring Chromedriver logs in-line
267 in the Appium server logs
268* Fix error in stopping coverage when session failed to start
269* Add support for getting and setting animation state
270* Fix handling of size-limited text fields in API levels below 24
271* Add support for getting the current value of progress bars
272* Fix handling of initial orientation, and make sure no orientation is set if
273 nothing is requested
274* Make sure all UiAutomator commands are properly handled
275* Ensure `pageLoadStrategy` capability is passed to Chromedriver
276* Add support to get currently running package name
277* Ensure non-working Chromedriver is correctly handled
278* Add `password` to retrievable element attributes
279* Fix locale/language setting
280* Add `clearDeviceLogsOnStart` desired capability, to clear `adb` `logcat` logs when the session is started
281* Add `--relaxed-security`, and `mobile: shell` access to `adb`
282
283CHANGES IN VERSION 1.7.1 (from 1.7.0)
284===================================
285
286Appium 1.7.1 fixes multiple issues with the previous release.
287
288#### iOS
289* Add ability to change default Simulator preferences
290
291#### iOS - XCUITest
292* Can use xctestrun file to launch WDA
293* Fix bug that was causing startCapture to be called more than once
294* Apply a workaround for setting default device orientation
295* Update offset determination for iPad
296
297#### iOS+Safari
298* Add handler for starting/stopping JS console capture
299
300#### Android
301* Add support to force upgrade settings app
302* Always assumes the file to be pushed by `pushFile` command contains binary data
303* Add ADB option to to force reinstall on upgrade
304
305#### Android - UiAutomator 2
306* Do not proxy getting app strings
307
308
309CHANGES IN VERSION 1.7.0 (from 1.6.5)
310===================================
311
312**Note:** This is a feature release, marking two major changes:
313 * Support iOS 11 through Xcode 9 beta 6
314 * Support multiple simultaneous sessions in Android and iOS (9+)
315
316**Known Issues:**
317 * Android
318 * Webviews on Android O do not work because of a bug in Chromedriver. We
319 are working on a workaround. Chrome sessions still work
320 * iOS
321 * Touch ID enrollment on simulators in Xcode 9 does not work because of an
322 issue with AppleScript
323 * Scaling simulators with Xcode 9 does not work
324 * Simulators in Xcode 9 produce no meaningful device logs
325 * Parallel Safari/Webview sessions are not working due to an Apple bug
326
327#### General
328* Fix handling of sending keys to elements in recent versions of Selenium
329* Allow `app` capability that is a url to have query parameters
330* Begin to allow multiple device support in situations where it is possible
331 (e.g., iOS under Xcode 9)
332* Add `isHeadless` capability to allow running simulator/emulator with no UI
333
334#### iOS
335* Add command to upload media to simulator
336* Fix reliability of touch ID functionality
337* Fix detection of system apps
338* Update atoms used for MobileSafari automation to those of Selenium 3.5.3
339* Add `realDeviceLogger` capability to allow specification of what program to
340 use to capture logs on real device
341* Fix handling of `enablePerformanceLogging` capability in Safari tests
342* Fix offset when Safari on an iPad has multiple tabs
343
344#### iOS - XCUITest
345* Support for latest Beta of iOS 11 (Xcode 9 beta 6)
346* Multiple device support
347* Fix handling of bundle id on simulators
348* Make `nativeWebTap` a setting as well as a desired capability
349* Allow `nativeWebTap` to work on real devices
350* Do not try to uninstall app before installing on real device, which was causing
351 many issues
352* Fix clearing of text fields
353* Change behavior of `useNewWDA`: if `true`, forces uninstall of any existing
354 WebDriverAgent app on device. Set it to `true` if you want to apply different
355 startup options for WebDriverAgent for each session. Real devices require
356 WebDriverAgent client to run for as long as possible without reinstall/restart
357 to avoid issues. The `false` value will try to detect currently running WDA
358 listener executed by previous testing session(s) and reuse it if possible,
359 which is highly recommended for real device testing and to speed up suites of
360 multiple tests in general. A new WDA session will be triggered at the default
361 URL (http://localhost:8100) if WDA is not listening and `webDriverAgentUrl`
362 capability is not set.
363* Allow setting url in native context
364* Fix screenshot functionality
365
366#### Android
367* Add `remoteAdbHost` capability to specify the host on which adb is running, if
368 it is not localhost
369* Add methods to start and stop recording the screen
370* Fix screenshot commands
371* Skip setting of mock location for emulators
372* Add methods for emulator phone capacity: `sendSMS`, `gsmCall`, `gsmSignal`,
373 `gsmVoice`, `powerAC`, `powerCapacity`, and `networkSpeed`
374* Fix cleanup of adb port forwarding during Chrome sessions
375* Fix error where package name would be appended to fully qualified activity
376 name and package finding would then fail
377* Properly handle bootstrap failure on launch
378* Make sure correct logger is used for bootstrap
379
380#### Android - UIAutomator 2
381* Fix handling of `adbPort` capability
382* Fix coverage handling
383* Handle pressing and long pressing key codes
384* Enable `nativeWebScreenshot` capability
385* Fix restoring of IME when `unicodeKeyboard`/`resetKeyboard` capabilities are
386 used
387* Add `disableWindowAnimation` capability to launch instrumentation with no
388 animation
389* Correctly start ChromeDriver session for Chrome session
390* Allow getting `password` attribute from elements
391
392
393
394
395CHANGES IN VERSION 1.7.0-beta (from 1.6.5)
396===================================
397
398**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
399issue tracker](https://github.com/appium/appium/issues) and provide as much
400information as possible.
401
402This release exists to provide an updatable package in order to get the latest
403work on Appium. To install, first uninstall Appium and then re-install with the
404`beta` tag. To get any changes that have been published to sub-packages, simply
405repeat that process.
406```
407npm uninstall -g appium
408npm install -g appium@beta
409```
410
411If you are running iOS tests with the XCUITest backend (i.e., iOS 10+ tests, and
412some iOS 9.3 tests, if the `automationName` capability is set to `XCUITest`), you
413should also remove the old build artifacts.
4141. Remove derived data: `rm -rf ~/Library/Developer/Xcode/DerivedData/WebDriverAgent-*`
4152. Remove `WebDriverAgentRunner` application from any real device being tested.
416
417#### Android
418* Add beta version of Espresso Driver. To use, set `automationName = espresso`.
419
420
421CHANGES IN VERSION 1.6.6-beta.4 (from 1.6.5)
422===================================
423
424**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
425issue tracker](https://github.com/appium/appium/issues) and provide as much
426information as possible.
427
428This release exists to provide an updatable package in order to get the latest
429work on Appium. To install, first uninstall Appium and then re-install with the
430`beta` tag. To get any changes that have been published to sub-packages, simply
431repeat that process.
432```
433npm uninstall -g appium
434npm install -g appium@beta
435```
436
437If you are running iOS tests with the XCUITest backend (i.e., iOS 10+ tests, and
438some iOS 9.3 tests, if the `automationName` capability is set to `XCUITest`), you
439should also remove the old build artifacts.
4401. Remove derived data: `rm -rf ~/Library/Developer/Xcode/DerivedData/WebDriverAgent-*`
4412. Remove `WebDriverAgentRunner` application from any real device being tested.
442
443#### Android
444* Add beta version of Espresso Driver. To use, set `automationName = espresso`.
445
446CHANGES IN VERSION 1.6.5 (from 1.6.4)
447===================================
448
449Appium 1.6.5 fixes many issues and continues the trend to make more aspects of
450the automation process configurable.
451
452#### General
453* Add `--enable-heapdump` server flag to turn on NodeJS memory dump collection,
454 to aid in memory management.
455* Better logging of erroneous responses.
456* Full support of W3C specification's handling of capabilities.
457* Fix licensing in all dependencies.
458
459#### Android
460* Added handlers for basic system alerts, so now it is possible to accept/decline/get text of the most of
461them using the standard Selenium's switchTo().alert() interface (UIA2 only)
462* Fix backgrounding of app.
463* Add `androidInstallPath` capability to specify where on the device apps are installed.
464* Speed up taking screenshots on Android 5.0 and higher devices.
465* Fix handling of activity names that are inner classes.
466* Support latest Android SDK directory structure.
467* Fix issue where granting permissions would fail if there were too many.
468* Fix handling of parent element information when finding elements.
469
470#### Android - UIAutomator 2
471* Fix handling of boolean return values.
472* Add `skipUnlock` capability to skip the device unlock process.
473* Fix issue where setting the network connection would crash.
474
475
476#### iOS
477* Add `enableAsyncExecuteFromHttps` capability to allow simulators to execute
478 asynchronous JavaScript on pages using HTTPS.
479* Allow setting url in native context, for opening deep links.
480* Better memory management when capturing device logs.
481* Add `webkitResponseTimeout` capability to adjust the timeout for responses in
482 Safari real device tests.
483* Add `enablePerformanceLogging` capability (previously Android-only) to turn on
484 performance logging in Safari tests.
485
486#### iOS - XCUITest
487* Fully support `clearSystemFiles` desired capability, deleting the derived data
488 for the `xcodebuild` process.
489* Fix `longPress` duration, to be milliseconds.
490* Add `mobile: selectPickerWheelValue` method to aid in interacting with picker wheels.
491* Add `mobile: alert` method to enable passing of `buttonLabel` option, to handle
492 alerts with non-standard button names.
493* Fix hanging if an app is not installed and only bundle identifier is given in
494 capabilities.
495* Allow `platformVersion` to be a number or a string.
496
497
498
499CHANGES IN VERSION 1.6.5-beta (from 1.6.4)
500===================================
501
502**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
503issue tracker](https://github.com/appium/appium/issues) and provide as much
504information as possible.
505
506This release exists to provide an updatable package in order to get the latest
507work on Appium. To install, first uninstall Appium (`npm uninstall -g appium`)
508and then re-install with the `beta` tag (`npm install -g appium@beta`). To get
509any changes that have been published to sub-packages, simply repeat that process.
510
511
512CHANGES IN VERSION 1.6.4 (from 1.6.3)
513===================================
514
515Appium 1.6.4 fixes numerous issues with the previous releases. This release
516supports iOS 10.3 as well as Android 7.1.
517
518**_Note_:**
519* Apple's MacOS 10.12.4 update has broken the functioning of iOS 10.2 and below
520 simulators.
521
522#### General
523* Fix `UnhandledPromiseRejection` errors when running Appium with Node version 7
524* Better indicate missing necessary programs to users
525* Fix session creation logging
526* Fix server shutdown on `SIGINT` and `SIGTERM` signals
527* Ensure that all requests have `application/json` content-type
528* Add an event timing API to allow for monitoring of performance metrics such as
529 time to session startup, simulator boot, etc. Add `eventTimings` capability
530 to enable or disable
531
532#### iOS
533* Fix issues with error handling in Safari/Webview handling
534* Increase simulator launch timeout for iOS 10+
535* Better handling of page selection in Safari
536* Fix memory usage issues when device logs get large
537* Add `startIWDP` capability to allow Appium to handle starting/stopping `ios-webkit-debug-proxy`
538 automatically.
539* Fix problem where date returned from device was not parsable
540* Allow custom `SafariLauncher` bundle id to be passed in through `bundleId` capability
541 during real device Safari tests, in case Xcode can no longer build the bundled one
542* Fix logging from real device in the case where the device data/time are different
543 from the server
544
545#### iOS - XCUITest
546* Changes the way the Appium checks that WebDriverAgent is running on the device,
547 so that rather than searching the logs, the device is pinged until it is
548 ready.
549 - Remove `realDeviceLogger` capability, since we no longer check the logs
550* Add `useNewWDA` capability, which forces uninstall of the WDA app from the
551 device before each session
552* Add `wdaLaunchTimeout` capability, which specified the time, in `ms`, to wait
553 for WDA to be loaded and launched on the device
554* Allow for the auto-generation of the Xcode config file used to configurable
555 WDA before launch. This includes _two_ new desired capabilities
556 - `xcodeOrgId` - the Apple developer team identifier string
557 - `xcodeSigningId` - a string representing a signing certificate, defaulting to
558 "iPhone Developer"
559* Allow for automatic changing of bundle id for WDA in cases where a
560 provisioning profile cannot be made for default bundle
561 - add `updatedWDABundleId` capability to specify bundle id for which there is
562 a valid provisioning profile
563* Speed up setting the value of text fields
564* Add `wdaConnectionTimeout` to control how long the server waits for WDA to
565 allow connections
566* Fix handling of local port on real devices
567* Speed up Safari interactions
568* Fix session deletion to ensure that clean up happens
569* Add `mobile: swipe` execute method
570* Ensure that scrolling through `mobile: scroll` works in web context
571* Add `class chain` search strategy (see [wiki](https://github.com/facebook/WebDriverAgent/wiki/Queries#searching-for-elements))
572* Add `maxTypingFrequency` capability to set the speed of typing
573* Introduce new set of gestures to allow access to everything the underlying
574 system can do (see [docs](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios-xctest-mobile-gestures.md))
575* Add `allowTouchIdEnroll` capability to enroll simulator for touch id
576* Use `simctl` to do simulator screenshots when possible
577* Fix handling of getting status so that it returns even when other commands
578 are in progress, bypassing queue
579* Fix bug where commands in webviews would work, but not return for a long time
580* If `showXcodeLog` capability set, print out the contents of the xcodebuild log
581 file at the end of the session (also after a failure/retry of the build, in
582 such a case)
583
584
585#### Android
586* Default installation to ChromeDriver 2.28
587* Add device manufacturer, model, and screen size to session details
588* Fix bug in checking avd status on some systems
589* Allow wildcards in `appWaitActivity` capability
590* Fix issue where reboot would fail
591* Add new unlocking strategies (see [docs](https://github.com/appium/appium-android-driver/blob/master/docs/UNLOCK.md))
592* Add `androidNaturalOrientation` capability to allow for correct handling of
593 orientation on landscape-oriented devices
594* Allow backgrounding to be permanent
595* Dismiss Chrome welcome screen if `--no-first-run` Chrome option passed in
596* Fix Android command line tools for recent releases
597* Make network setting commands more reliable
598
599#### Android - Selendroid
600* Fix handling of host binary configuration for more precise installation options
601
602
603CHANGES IN VERSION 1.6.4 Beta (from 1.6.3)
604===================================
605
606**Note:** This is a **_BETA_** release. Please direct any issues to the [Appium
607issue tracker](https://github.com/appium/appium/issues) and provide as much
608information as possible.
609
610#### General
611* Fixed `UnhandledPromiseRejection` errors when running Appium with Node version
612 7
613* Better indicate missing necessary programs to users
614* Fix session creation logging
615* Fix server shutdown on `SIGINT` and `SIGTERM` signals
616* Ensure that all requests have `application/json` content-type
617
618#### iOS
619* Fix issues with error handling in Safari/Webview handling
620* Increase simulator launch timeout for iOS 10+
621* Better handling of page selection in Safari
622* Fix memory usage issues when device logs get large
623
624#### iOS - XCUITest
625* Changed the way the Appium checks that WebDriverAgent is running on the device,
626 so that rather than searching the logs, the device is pinged until it is
627 ready.
628 - Removed `realDeviceLogger` capability, since we no longer check the logs
629* Add `useNewWDA` capability, which forces uninstall of the WDA app from the
630 device before each session
631* Add `wdaLaunchTimeout` capability, which specified the time, in `ms`, to wait
632 for WDA to be loaded and launched on the device
633* Allow for the auto-generation of the Xcode config file used to configurable
634 WDA before launch. This includes _two_ new desired capabilities
635 - `xcodeOrgId` - the Apple developer team identifier string
636 - `xcodeSigningId` - a string representing a signing certificate, defaulting to
637 "iPhone Developer"
638* Allow for automatic changing of bundle id for WDA in cases where a
639 provisioning profile cannot be made for default bundle
640 - add `updatedWDABundleId` capability to specify bundle id for which there is
641 a valid provisioning profile
642* Speed up setting the value of text fields
643* Add `wdaConnectionTimeout` to control how long the server waits for WDA to
644 allow connections
645* Fix handling of local port on real devices
646* Speed up Safari interactions
647* Fix session deletion to ensure that clean up happens
648* Add `mobile: swipe` execute method
649* Ensure that scrolling through `mobile: scroll` works in web context
650
651#### Android
652* Default installation to ChromeDriver 2.26
653* Add device manufacturer, model, and screen size to session details
654* Fix bug in checking avd status on some systems
655* Allow wildcards in `appWaitActivity` capability
656
657#### Android - Selendroid
658* Fix handling of host binary configuration for more precise installation options
659
660
661CHANGES IN VERSION 1.6.3 (from 1.6.2)
662===================================
663
664_This is another emergency release due to an issue with the NPM shrinkwrap_
665
666#### iOS
667
668* Fix issue where we might try and uninstall an ssl cert from a real device
669 where this isn't sensible
670* Fix another issue with acceptSslCerts where it might potentially miss the
671 correct sim UDID
672
673#### iOS - XCUITest
674* Upgrade version of WebDriverAgent used. Includes following updates:
675 * Improve xpath query performance
676 * Verify predicates
677 * Fix crash for some xpath selectors
678* Decorate proxied getSession response with Appium's capabilities (fixes
679 issues with clients that call getSession to determine server capabilities
680 and are confused by WDA's non-standard response) ([#7480](https://github.com/appium/appium/issues/7480))
681* Fix issue with starting XCUITests on a real device, due to changes in WDA
682 that invalidated our startup detection logic. ([#7313](https://github.com/appium/appium/issues/7313))
683* Allow connecting to an already-running WebDriverAgent through the
684 `webDriverAgentUrl` capability, rather than starting our own
685
686#### Android
687* Fix bug where we would attempt to get target SDK version from manifests
688 even when they might not include it. ([#7353](https://github.com/appium/appium/issues/7353))
689* Actually pass the `acceptSslCerts` capability to the underlying automation
690 so that it can have an effect ([#7326](https://github.com/appium/appium/issues/7326))
691* Updated permission granting logic to speed up permission granting by doing
692 it in bulk rather than one at a time ([#7493](https://github.com/appium/appium/issues/7493))
693* Hide the new permission granting logic behind an `autoGrantPermissions`
694 capability which doesn't attempt to grant permissions unless it's `true`
695 ([#7497](https://github.com/appium/appium/issues/7497))
696
697#### Android - Uiautomator2
698
699* Add ability to verify TOAST messages (these can't be interacted with, only
700 text retrieval allowed)
701
702#### Windows
703* _Actually_ upgrade WinAppDriver to 0.7 ([#7445](https://github.com/appium/appium/issues/7445)). Includes following updates:
704 * Click on arbitrary elements
705 * Support for sendKeys modifiers
706 * Various bugfixes
707 * Added `GET /orientation`
708 * Added support for WPF apps
709
710
711CHANGES IN VERSION 1.6.2 (from 1.6.1)
712===================================
713
714_This is a small, mostly-emergency release because we realized we omitted
715XCUITest upgrades via WebDriverAgent that we had mistakenly presumed were part
716of 1.6.1._
717
718#### iOS - XCUITest
719* Upgrade version of WebDriverAgent used. Includes following updates:
720 * Support for setting values on sliders
721 * Fix tapping in various orientations
722 * Allow tapping on arbitrary coordinates
723 * Support for pinch gestures
724 * Make `clear` faster
725 * Improve xpath query performance
726* Add `preventWDAAttachments` capability to help with XCUITest speed and disk usage
727
728#### Android - UiAutomator2
729* Code refactoring to pave the way for some UiAutomator2 wifi automation work
730* Find an unused system port automatically to avoid port clashes
731
732#### Windows
733* Upgrade WinAppDriver to 0.7. Includes following updates:
734 * Click on arbitrary elements
735 * Support for sendKeys modifiers
736 * Various bugfixes
737 * Added `GET /orientation`
738 * Added support for WPF apps
739
740
741CHANGES IN VERSION 1.6.1 (from 1.6.0)
742===================================
743
744Appium 1.6.1 is the first release since bringing Appium into the [JS Foundation](https://js.foundation/)
745(see [press release](https://js.foundation/announcements/2016/10/17/Linux-Foundation-Unites-JavaScript-Community-Open-Web-Development/)).
746
747Much of the development energy has been spent on fixing issues that have come up
748from the newly-integrated XCUITest and UI Automator 2 vendor-provided test
749backends.
750
751#### General
752* Add `clearSystemFiles` desired capability, to specify whether to delete any generated
753files at the end of a session (see iOS and Android entries for particulars)
754* Better handle signals for stopping server
755* Fix operation of Selenium 3 Grid
756* Log more of the proxied requests and responses, for better debugging
757* Better handle source mapping for IDE support
758* Move `appium-doctor` into globally-installed utility, not bundled with server
759* Move `appium-logger` into `appium-base-driver`
760* Better handle downloading of zip files which may not have a `.zip` extension (like `.apk`)
761
762
763##### iOS
764* Add support for iOS 10.1
765* Add support for iOS 10.2 Beta 1
766* Add `clearSystemFiles` desired capability to specify whether to Core Simulator
767files, and Instruments (for iOS Driver) or XCUITest (for XCUITest Driver) generated files
768* Ensure correct files are tested when checking for Simulator newness
769* Map `iPad Simulator` `deviceName` to iPad Retina instead of discontinued iPad 2
770* Gracefully return when Webkit Remote Debugger doesn't return on a real device
771* Better log errors from xcode handling
772* Add `customSSLCert` capability to pre-authorize a specific SSL cert in the iOS trust store
773* During reset, don't try to uninstall an app from a real device if it's not installed
774
775
776##### iOS - XCUITest specific
777* clean up logging to remove confusing "Waiting..." lines
778* Fix issue in which switching to NATIVE_APP would still proxy find commands to Remote debugger
779* Fix handling of Selenium Grids
780* Correctly handle long press so duration is respected
781* Add `tapWithShortPressDuration` desired capability to specify a length for tapping,
782if the regular tap is too long for the app under test
783* Add support for scrolling through Touch Actions
784* Make sure keyboard is available when keys are sent to Text Fields
785* Add support for Zoom via Touch Action API (Pinch still not supported by Apple)
786* Fix implementation of double tap
787* Improvements in startup flow for real devices
788* Allow gestures on coordinates, not just elements
789* Add `scaleFactor` capability to direct Appium to set the simulator scale
790
791
792##### Android
793* Use ChromeDriver version 2.25
794* Correctly handle `--suppress-adb-kill-server` command line argument
795* Pass actual failure back when session fail and deleting the session also fails
796* Add `clearSystemFiles` desired capability to specify whether to delete temporary
797copies of the application under test at the end of the session
798* Fix issue where finding UI Automator process id would throw an error
799* Add `chromeAndroidPackage` capability which will be passed to `chromeOptions`
800* Add APIs for gathering various kinds of performance data
801* Ensure we don't try to stop app if `dontStopAppOnReset` is in force
802* Fix issue where we tried to determine the bounds of a non-existent element
803
804
805##### Android - UiAutomator2
806* Fix handling of element attributes
807* Better handle element finding
808* Toast message verification support
809* Ensure that there is a <hierarchy> root tag for xml/xpath source
810* Implement /rotation endpoint (supports 4 rotations)
811
812
813CHANGES IN VERSION 1.6.0 (from 1.5.3)
814===================================
815
816This release of Appium is a significant milestone, introducing support for two new platforms:
817* [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)).
818* [You.i TV](http://www.youi.tv/) (see the [driver documentation](https://github.com/YOU-i-Labs/appium-youiengine-driver#appium-youi-engine-driver)).
819
820There is also support for two new frameworks for automating iOS and Android:
821* 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)).
822* UI Automator 2 support for enhanced automation of Android devices (see [wiki](https://github.com/appium/appium-uiautomator2-server/wiki)).
823
824#### General
825- Require Node 4 or above (**possible breaking change**)
826- Add `automationName` capability entries for `XCUITest`, `UIAutomator2`, and `youiengine`
827- Add `platformName` capability entry for `Windows`
828
829#### iOS
830- 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)
831- Make sure device name gets properly translated into actual device name
832- Fix case where orientation would get lost
833- Fix Safari page change logic to actually catch when a page changes
834- Try harder to kill Instruments if the normal way does not work, to avoid hanging processes
835- Move `authorize-ios` into global package
836
837#### Android
838- Add `androidInstallTimeout` desired capability, to customize the timeout when installing an app
839- Add `androidScreenshotPath` desired capability, to set the path in which screenshot files are saved on the device
840- Add `appWaitDuration` desired capability, to customize how long to wait for an application
841- Fix optional intent arguments to allow for hyphens
842- Wait for apps to launch before proceeding
843- Switch to clearing text fields using adb, to improve reliability and speed
844- Add ability to detect screen orientation
845- Make sure Selendroid mode doesn't lose connection through adb when network changes
846- Make sure the release action in a touch action chain doesn't happen in the wrong place
847- Make application install more reliable
848- Fix screenshot on Windows
849- Make Chromedriver connect on a random port if none specified
850- Add `reboot` server argument, to specify that the avd ought to be cleaned and rebooted
851
852
853CHANGES IN VERSION 1.6.0 beta 1 (from 1.5.3)
854===================================
855
856This release of Appium marks the beginning of support for two brand new platforms:
857* [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))
858* [You.i TV](http://www.youi.tv/) (see the [driver documentation](https://github.com/YOU-i-Labs/appium-youiengine-driver#appium-youi-engine-driver)).
859
860Further, since Apple removed the Instruments automation functionality in Xcode 8,
861this release of Appium has preliminary support for XCUITest, allowing for the automation
862of applications in iOS 9.3 and 10.
863
864#### General
865- Require Node 4 or above (**possible breaking change**)
866- Add `automationName` entries for `XCUITest`, and `youiengine`
867- Add `platformName` entry for `Windows`
868
869#### iOS
870- 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)
871- Make sure device name gets properly translated into actual device name
872- Fix case where orientation would get lost
873- Fix Safari page change logic to actually catch when a page changes
874- Try harder to kill Instruments if the normal way does not work, to avoid hanging processes
875
876#### Android
877- Add `androidInstallTimeout` desired capability, to customize the timeout when installing an app
878- Add `androidScreenshotPath` desired capability, to set the path in which screenshot files are saved on the device
879- Add `appWaitDuration` desired capability, to customize how long to wait for an application
880- Fix optional intent arguments to allow for hyphens
881- Wait for apps to launch before proceeding
882- Switch to clearing text fields using adb, to improve reliability and speed
883- Add ability to detect screen orientation
884- Make sure Selendroid mode doesn't lose connection through adb when network changes
885- Make sure the release action in a touch action chain doesn't happen in the wrong place
886- Make application install more reliable
887- Fix screenshot on Windows
888- Make Chromedriver connect on a random port if none specified
889
890
891
892CHANGES IN VERSION 1.5.3 (from 1.5.2)
893===================================
894
895*NOTE*: Appium 1.5.3 is primarily a bug-fix release.
896
897It 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.
898
899Further, 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`.
900
901#### General
902- Allow `--default-capabilities` server argument to specify a file containing the default capabilities.
903- Fix handling of statuses from proxied drivers (Chrome, Selendroid, etc.).
904- Fix handling of `browserName` capability for Selenium Grid usage.
905- Fix intermittent bug where creating a directory might crash the server.
906- Fix handling of `--session-override` server argument.
907
908#### iOS
909- Add support for `WKWebView`-based webviews.
910- Add support for automating the built-in Calendar app.
911- Fix `ios-debug-proxy-launcher`.
912- Fix bug where scrolling in Safari would crash.
913- Fix handling of Safari in "new window" state.
914- Fix handling of arguments for `keys` method so that clients that send an array do not fail.
915- Clean up handling of `ipa` files for real device tests.
916- Make sure `processArguments` parsing works.
917- Fix iwd script to allow re-running.
918
919#### Android
920- Add `nativeWebScreenshot` capability, to use `adb` screenshots instead of ChromeDriver if necessary.
921- Add support to auto-select device based on `platformVersion` rather than using first available device.
922- Allow `appWaitActivity` to be a list of activities
923- Fix setting wifi and data state
924- Implement `initAutoWebView` capability.
925- Report `appPackage`, `appActivity`, and `deviceUDID` when requesting session details.
926- Make sure unlock app is closed at the end of a session so that the device works again.
927- Fix handling of unlock to make less flakey.
928- Make sure unicode encoding works correctly when strings are long.
929- Fix handling of `disableAndroidWatchers` capability.
930- Fix killing ChromeDriver on Ubuntu 16.04.
931- Fix bug where early ChromeDriver failure crashed Appium.
932
933
934
935CHANGES IN VERSION 1.5.2 (from 1.5.1)
936===================================
937
938*NOTE*: Appium 1.5.2 is a bug-fix release.
939
940#### General
941- deprecated `--command-timeout`. Use `newCommandTimeout` desired capability instead
942- ensure implicit wait can be set through `timeout` method
943- add better logging for `EPIPE` errors
944
945#### iOS
946- make sure `ipa` files are handled correctly for installing on real devices
947- ensure that existing SafariLauncher on device is used instead of rebuilding and reinstalling
948- fix issues with getting webview contexts on real devices
949- add full timeout support through `timeout` method
950- make sure Xpath searches respect implicit wait timeout
951- make sure bare Instruments process arguments are accepted
952
953#### Android
954- fix failure when `apk` file is too large
955- re-implement setting geolocation so it does not use Telnet.
956- add support for Chromium browser
957- fix issues with `flick`
958- fix bug where touch action `release` would throw an error
959- fix bug in later Android SDK version where noticing a newly started avd would fail
960- implement `autoWebviewTimeout`
961
962
963
964CHANGES IN VERSION 1.5.1 (from 1.5)
965===================================
966
967*NOTE*: Appium 1.5.1 is a bug-fix release.
968
969#### General
970- allow `platformName` to be any case
971- Windows process handling is cleaned up
972- Desired capabilities `language` and `locale` added
973
974#### iOS
975- iOS 9.3 (Xcode 7.3) support
976- Fix handling of return values from `executeScript` in Safari
977- Don't stop if Instruments doesn't shut down in a timely manner
978- Escape single quotes in all methods that set the value on an element
979- Allow custom device names
980- Make full use of process arguments to Instruments
981- Pass `launchTimeout` to Instruments when checking devices
982
983#### Android
984- Make use of `--bootstrap-port` server argument
985- Fix `keystorePassword` capability to allow a string
986- Fix handling of localization in Android 6
987- Use Appium's unlock logic for Chrome sessions
988- Make sure reset works
989- Make unlock more reliable for later versions of Android
990- Allow Xpath searching from the context of another element
991- Make full use of process arguments to adb
992- Better error messages when ChromeDriver fails to start
993
994CHANGES IN VERSION 1.5 (from 1.4.16)
995======================================
996
997*NOTE*: Appium 1.5 is a complete rewrite of Appium from the ground up. Every
998effort has been made to avoid any breaking changes but caution should be
999exercised. Please let us know on GitHub if you notice any issues with your
1000tests.
1001
1002#### General
1003- Appium now requires Node 0.12 as a minimum Node version
1004- Deprecate server arguments that are also desired capabilities. Instead, add
1005 a `--default-capabilities` argument which takes a JSON string of capabilities
1006 that will be the default for any session. E.g., `--default-capabilities '{"launchTimeout": 60000}'`
1007- Various docs and contributing docs updates (including a code of conduct for
1008 the project)
1009- Add capability validation on the protocol and driver level. Along with this
1010 we have tightened up requirements on capability values so that they can be
1011 strictly validated. For example, before you were able to send in a string
1012 value of `"180"` for the `newCommandTimeout` capability. Now you must send in
1013 an actual JSON number, e.g., `180`.
1014- Remove the `autoLaunch` capability since it added a significant
1015 amount of complexity to the startup flow and Appium shouldn't be responsible
1016 for this kind of use case
1017- Remove long-deprecated `name` locator strategy
1018- Remove long-deprecated `mobile: xxx` gesture commands, except scroll
1019
1020#### iOS
1021- add Tapster support for some more touch methods
1022- fix moveTo: treat coordinates as relative, instead of absolute
1023- iPhone 6 + 6S support
1024- iOS 9.3 support
1025
1026#### Android
1027- enable navigating to an android URI via the set url driver methods, e.g.,
1028 driver.get('content://contacts/people/1')
1029- fix some adb issues in Windows (e.g., `signWithCustomCert`, sdk binary names)
1030- fix issue with UIWatcher ssl certificate errors
1031- if you want to install all chromedrivers, use --chromedriver-install-all; if
1032 you want to install a specific chromedriver version, use
1033 --chromedriver-version="$VER"
1034- `driver.closeApp` no longer runs through the shutdown routine; it simply
1035 force-stops the app
1036- The `ANDROID_ADB_SERVER_PORT` environment variable has been removed in favor
1037 of the `adbPort` desired capability, which does the same thing.
1038
1039#### Non-exhaustive examples of internal changes
1040- see the [developer's
1041 overview](/docs/en/contributing-to-appium/developers-overview.md) for
1042 a fuller description of Appium 1.5 from a developer's perspective
1043- get rid of reset.sh and various other appium build tools in favor of a simple
1044 npm install
1045- split apart Appium into various smaller modules each with their own
1046 repositories and NPM packages
1047- use gulp instead of grunt
1048- use babel to transpile from es2015+ to standard es5 code
1049- get rid of .appiumconfig.json
1050
1051CHANGES IN VERSION 1.4.16 (from 1.4.15)
1052===================================
1053
1054#### iOS
1055- fix for safari and webview issues for 9.2
1056
1057CHANGES IN VERSION 1.4.15 (from 1.4.14)
1058===================================
1059
1060#### iOS
1061- fix for safari and webview issues in iOS9+
1062
1063CHANGES IN VERSION 1.4.14 (from 1.4.13)
1064===================================
1065
1066#### iOS
1067- support for iOS9.2
1068- fix for webview, resolving context issues in iOS9+
1069
1070#### Selendroid
1071- upgrade to Selendroid 0.17.0.
1072
1073CHANGES IN VERSION 1.4.13 (from 1.4.12)
1074===================================
1075
1076#### Chromedriver
1077- Setting appium-chromedriver version to 2.3.2 as it is stable on Node version 0.10.32
1078
1079CHANGES IN VERSION 1.4.12 (from 1.4.11)
1080===================================
1081
1082#### iOS
1083- support for iOS9.1
1084- fix for iOS simulator with similar device names on Xcode 7
1085- fix to idevicelog (real device) to record logs only for device under test
1086
1087CHANGES IN VERSION 1.4.11 (from 1.4.10)
1088===================================
1089
1090#### iOS
1091- fix for iOS simulator selector for Xcode 7
1092- fix for selecting default device for iOS9
1093
1094CHANGES IN VERSION 1.4.10 (from 1.4.9)
1095===================================
1096
1097#### General
1098- fixed bug in a config file accidentally published in version 1.4.9
1099
1100CHANGES IN VERSION 1.4.9 (from 1.4.8)
1101===================================
1102
1103#### iOS
1104- support for iOS9 and xcode 7
1105- at this point instruments-without-delay is not supported for xcode-7
1106
1107CHANGES IN VERSION 1.4.8 (from 1.4.7)
1108===================================
1109
1110#### General
1111- fix for Windows users! Now the system architecture is properly detected, npm installs should work again
1112
1113#### Chromedriver / Android hybrid
1114- fix for an issue in responding to `/status` api endpoint, this is used heavily by Selenium grid
1115
1116CHANGES IN VERSION 1.4.7 (from 1.4.6)
1117===================================
1118
1119#### Chromedriver / Android hybrid
1120- fix for problem in downstream jsonwp-proxy; now sessionId returned is replaced
1121 with sessionId present in url(original sessionId). Fixed this in appium-jsonwp-proxy 1.2.3
1122
1123CHANGES IN VERSION 1.4.6 (from 1.4.5)
1124===================================
1125
1126#### General
1127- this is a republish because of a misconfiguration before 1.4.5 got published
1128 resulting in a server startup failure
1129
1130
1131CHANGES IN VERSION 1.4.5 (from 1.4.4)
1132===================================
1133
1134#### General
1135- fix problem with npm shrinkwrap that caused Appium not to start
1136
1137
1138CHANGES IN VERSION 1.4.4 (from 1.4.3)
1139===================================
1140
1141#### Chromedriver / Android hybrid
1142- fix a problem in downstream appium-chromedriver; no longer rely on async
1143 methods returning objects of the Promise type. This was causing undefined
1144 errors when running Chromedriver/hybrid tests.
1145
1146
1147CHANGES IN VERSION 1.4.3 (from 1.4.2)
1148===================================
1149
1150#### iOS
1151- update the appium-instruments dependency with working subdeps
1152
1153
1154CHANGES IN VERSION 1.4.2 (from 1.4.1)
1155===================================
1156
1157#### General
1158- update ES6-based dependencies which got bit by a breaking Regenerator
1159 change
1160
1161#### iOS
1162- keep track of the correct app ID for Safari webviews (fixes problems in
1163 finding the webview for iOS)
1164
1165#### Android
1166- fix sendKeys and clear for Samsung devices
1167
1168
1169CHANGES IN VERSION 1.4.1 (from 1.4)
1170===================================
1171
1172#### Chromedriver
1173- have the appium-chromedriver manage the chromedriver binary download/install
1174
1175
1176CHANGES IN VERSION 1.4 (from 1.3.7)
1177======================================
1178
1179#### General
1180- fix for broken `./reset.sh --dev` due broken UICatalog build package in sample-code submodule
1181- fix for issues with cookie encoding
1182- updated sample code
1183- updated documentation
1184- updated test suite
1185- deprecate node 0.10
1186
1187#### iOS
1188- support for iOS 8.3
1189- deprecate iOS 6.1 and iOS 7.0 (support will be removed soon, probably 1.5)
1190- deprecate Xcodes less than 6.3 (moving to support of latest versions only,
1191 and Xcode 6.3+ together allows automation of all supported iOS versions). The
1192 only exception to this is the combination of Xcode 6.0.1 + iOS 8.0.
1193- fix for issues relating to finding xcode folder and Info.plist
1194- new sever flag `--instruments <path>` to specify custom path to instruments commandLine tool
1195- fix for getOrientation
1196- fix for iOS crash log retrieval
1197
1198#### Android
1199- fix for killing chromedriver on windows
1200- fix for parsing java version correctly
1201- support for searching elements by id without passing package name
1202- requesting capabilities from server now returns correct deviceName and platformVersion for Android
1203- fix for scrollTo
1204- new capability `disableAndroidWatchers`
1205- deprecated capability `stopAppOnReset`
1206- new capability `dontStopAppOnReset`
1207- fix a crash possibly encountered during extracting app strings
1208- new server argument `suppress-adb-kill-server`
1209- fix issue with `keys()`; now it correctly targets currently-focused element
1210
1211#### Selendroid
1212- Support for installApp, isAppInstalled and removeApp
1213
1214#### Android+Chrome
1215- Chormedriver version updated to 2.15
1216- fix for driver.quit()
1217- use the correct ADB path already identified by Appium
1218
1219#### iOS+Safari
1220- fix for handling real device object
1221- fix for safariAllowPopups for iOS 8.x
1222- reduce logging in remote debugger for real devices, and don't use console.log
1223- fix issues with SafariLauncher on real devices
1224- fix execute_async so that it now works at all
1225
1226CHANGES IN VERSION 1.3.7
1227======================================
1228
1229#### General
1230- fix failure to remap session id in proxied responses
1231
1232#### iOS
1233- fix intermittent failure to find Xcode
1234
1235CHANGES IN VERSION 1.3.6
1236======================================
1237
1238#### Android
1239- fix XPath regression where Appium failed to recognize non-ASCII characters
1240- fix regression where Appium failed to set ADB's path during Chromedriver tests
1241
1242CHANGES IN VERSION 1.3.5
1243======================================
1244
1245#### iOS
1246- fix for a bug when driver.get() never returns for page with alert.
1247- iOS 8.2 support.
1248- fixed safari startup crashes.
1249- ensure Appium drops into the right continuation cb when selecting hybrid contexts.
1250
1251#### Android
1252- now finds the location of adb earlier.
1253- ensure encoding stream in Bootstrap.jar closes correctly.
1254- add workaround for issue where UiAUtomator fails to find visible elements.
1255- fixed undefined member error for the release object.
1256- add a delete key test.
1257
1258#### Selendroid
1259- upgrade to Selendroid 0.13.0.
1260
1261CHANGES IN VERSION 1.3.4
1262======================================
1263
1264#### General
1265- better handling of session closing.
1266- tmp dir customization via env variable.
1267- app/browserName error message fix.
1268- functional test fixes.
1269
1270#### iOS
1271- allow location services in zip file.
1272- ensure a string is returned from iOS getText.
1273- simpler device type detection logic.
1274- screenshotWaitTimeout cap
1275- added ios-webkit-debug-proxy launcher to go round libidevice 8.1 bugs
1276- waitForAppScript capability.
1277- syslog fix
1278- getStrings refactoring
1279- simulator folder fix
1280- doctor support for OSX 10.10.1
1281
1282#### Android
1283- exec refactoring.
1284- uses for latest apktool (2.0.0-RC2) when Java 7 is detected.
1285- ADB.jars refactored into instance property.
1286- smart keyboard closing fix.
1287- added support for getting the resourceId attribute of an element.
1288- clear text fix for large centered edit fields.
1289- better handling of errors in clear text.
1290- ensure an already-running Android device's language and country settings are correct.
1291- fixed unknown server-side error is thrown when the XPath expression doesn't match any nodes.
1292- better error handling is SetText
1293- edit + clear fields with hint text fix.
1294- make hideKeyboard do nothing when keyboard is present but not closable (has no UI).
1295
1296#### Selendroid
1297- upgrade to Selendroid 0.12.0.
1298- throws when getting a redirect from Selendroid.
1299- added hideKeyboard support.
1300- uses for latest apktool (2.0.0-RC2) when Java 7 is detected.
1301
1302CHANGES IN VERSION 1.3.3 (from 1.3.1)
1303======================================
1304
1305#### General
1306- fix several internal Appium tests
1307- add a sendKeyStrategy capability to allow testers to enable less reliable, but faster sendKey method
1308- add handling for safeRimRafSync ENOENT mesages
1309- clean up sessions when session clobbering enabled
1310- fix stripping log colors on --stripColors
1311- create system logs file before tailing it
1312
1313#### iOS
1314- fix issue where driver.current_context is `null` for native app context
1315- fix bug that prevents closing tabs in Safari
1316- fix log capture when Appium starts a simulator for the first time
1317- add OSX 10.10 and iOS8 support for Appium Doctor
1318- fix inability to open Safari on a real device
1319
1320#### Android
1321- fix arg and cap parsing when passing arguments to adb
1322- add support for passing elements as targets for swipe actions
1323- correctly calculate relative position of swipe targets
1324- ensure ChromeDriver instances are properly terminated
1325- fix appPackage parsing error with overlapping namespaces
1326- fix TouchAction release bug when released element is not valid
1327- ensure `logcat` correctly appended to command string
1328
1329#### Selendroid
1330- add comment to caps page, and to running tests page, to note the need for a period before an activity
1331
1332CHANGES IN VERSION 1.3.2
1333=====================================
1334
1335#### Patch number skipped due to NPM error
1336
1337CHANGES IN VERSION 1.3.1 (from 1.3.0)
1338=====================================
1339
1340#### iOS
1341- fixed a bug where appium could hang if the 'full-reset' and 'keepKeychain' capabilities were both used on ios8.1
1342- default context now set to `NATIVE_APP` instead of being null
1343
1344#### Android
1345- fix bugs which arise from spaces in the path to `adb` tool
1346- fix detection of whether the screen is locked
1347- fix an error with running remote apk's on Windows
1348
1349CHANGES IN VERSION 1.3.0 (from 1.2.4)
1350======================================
1351
1352#### General
1353- allow `full-reset` desired capability to work alongside `language`/`locale` desired capabilities
1354
1355#### iOS
1356- add iOS 8 support
1357- add support for launching an app on the sim just by bundleId (iOS8 only)
1358- ensure screenshot process uses dir specified in --tmp
1359- add --isolate-sim-device which removes all other xcode 6 simulators
1360 before running test (might be necessary for some platforms)
1361- update mobile safari temp app to include platformVersion so we don't get
1362 strange version conflicts
1363- reset push notification privacy settings in between sessions
1364- fix the flakiness of getting a list of available devices
1365- auto-refresh Safari if no webviews are found
1366- rewrite cookie handling code to use code derived from jQuery instead of mozilla docCookie
1367- force device string when device name starts with "="
1368- fix a security hole in pullFile() where users could download files on the machine hosting appium
1369
1370#### Android
1371- fix Chromedriver to work with newer versions
1372- Chromedriver will work if adb is not running on default port
1373- speed up clearing text fields when there is hint text
1374
1375#### Selendroid
1376- fix sendKeys() in CHROMIUM context
1377- fix getContexts()
1378
1379CHANGES IN VERSION 1.3.0-beta1 (from 1.2.3)
1380======================================
1381
1382#### General
1383- add objective-c examples
1384
1385#### iOS
1386- update appium-instruments with logging fixes
1387- add iOS 8 support
1388- add support for launching an app on the sim just by bundleId (iOS8 only)
1389- ensure screenshot process uses dir specified in --tmp
1390- add --isolate-sim-device which removes all other xcode 6 simulators
1391 before running test (might be necessary for some platforms)
1392- update mobile safari temp app to include platformVersion so we don't get
1393 strange version conflicts
1394- reset push notification privacy settings in between sessions
1395
1396
1397CHANGES IN VERSION 1.2.4 (from 1.2.3)
1398======================================
1399
1400#### General
1401- add objective-c examples
1402
1403#### iOS
1404- update appium-instruments with logging fixes
1405- update appium-instruments with getDevices stalling fix
1406
1407#### Android
1408- give better error for UiScrollable parse exception
1409- fix UiSelector instance in finds
1410- use last coordinates for touch release
1411
1412
1413CHANGES IN VERSION 1.2.3 (from 1.2.2)
1414======================================
1415
1416#### General
1417- add a settings api (used currently only for Android xpath compression)
1418- add configurable loglevels for different transports
1419- allow appium to be run under sudo if the sudo user owns the appium files
1420
1421#### iOS
1422- fix crash while recovering from instruments failure
1423- add ability to launch app by 'bundleId' cap alone (no 'app' cap)
1424- misc groundwork for iOS8
1425- fix bug that prevented scrolling collectionViews
1426- more crash recovery bugfixes
1427- use 'click' atom in webviews, 'tap' sent two clicks
1428- fix bug where we'd try to kill a null logging proc and crash
1429- enable performance logs for webviews
1430- allow automation of native frame in safari (actually works on 7.1!)
1431- fix uiautomation predicate search bug
1432- fix 'spawn ENOENT' bug caused by a missing deviceconsole binary
1433- fix autoAcceptAlert bug
1434- fix certain findElement crashes
1435- fix hideKeyboard bugs
1436
1437#### Android
1438- fix issue with unzipping apk
1439- add ability to launch arbitrary apps/activities mid-session
1440- add lock() method to lock screen
1441- add unlock() method to unlock screen
1442- fix bug where app would be classified incorrectly as not installed
1443- add settings api member for setting layout hierarchy compression
1444- fix crash when touch actions attempted on webviews
1445- undo setText changes and simply handle hint text fields better
1446
1447#### Selendroid
1448- fix --selendroid-quick reset.sh option
1449- fix unicode keyboard issues
1450- fix bug in getting window_handles
1451- fix bug that would prevent launching an app with spaces in its apk path
1452
1453
1454CHANGES IN VERSION 1.2.2 (from 1.2.1)
1455======================================
1456
1457#### General
1458- add doc for running on multiple devices simultaneously
1459- move sample code and sample apps out of the main appium repo
1460- remove http request size limit
1461
1462#### iOS
1463- check to make sure an element is not UIAElementNil before returning it
1464- add a configurable key delay to help with keyboard smudging
1465- fix issue with deleting cookies in mobile safari
1466- correct sendKeys behavior not to clear text before sending keys
1467- remove 'iwebview' support, since automating safari works
1468- fix bug where apostraphes in accessibility ids caused elements not to be
1469 found
1470- use deviceconsole instead of idevicesyslog to capture ios logs
1471- fix bug where automating safari on a real device would hang forever and never
1472 start a session
1473- fix bug where getting text() on a textfield would return its label instead of
1474 its value
1475
1476#### Android
1477- cache Chromedriver webview objects so we don't need to start a new
1478 Chromedriver on every context switch
1479- correct sendKeys behavior not to clear text before sending keys
1480- allow chromeOptions cap object to be passed to chromedriver
1481- download all chromedriver architectures for linux (32 and 64 bit)
1482- make sure we stop adb logcat logging when ending a chrome session so we don't
1483 leak processes
1484- add noSign capability to skip the apk resigning process
1485- add setText method that will clear a text field before adding text; this is
1486 primarily useful for textfields with hint text where clear() does not work
1487 in general
1488- move xpath parsing into the android bootstrap, for fewer bugs and greater
1489 reliability. NOTE: this could be a breaking change depending on the kind of
1490 xpath selectors you are using
1491- clean android XML tags of invalid characters like '$'
1492- fix bug where '&' would be sent into a textfield as '&-'
1493- add isLocked method to determine whether screen is locked
1494- add ability to automate the native portion of the Chrome/Browser apps
1495
1496#### Selendroid
1497- make sure the contact manager test app has the required internet permissions
1498
1499
1500CHANGES IN VERSION 1.2.1 (from 1.2.0)
1501======================================
1502
1503#### General
1504- fix up sample code
1505- bring back support for autoLaunch=false case
1506- reset commandTimeout during implicit wait cycles
1507- remove deprecated window_handles methods
1508- add --local-timezone flag that uses timezone for timestamps
1509- add a configurable --callback-address and --callback-port for execute_async
1510- update setLocation method to use correct spec params for geolocation
1511- add networkConnection to server capabilities so clients can use the API
1512- if boolean cap values are sent in as strings, convert them to boolean
1513
1514#### iOS
1515- fix bug where we waited for safari7 dirs when we weren't on ios7.x
1516- improve deviceName flexibility and device recognition
1517- make sure instruments and uiauto know about the tmp dir flag
1518- fix install/uninstall logic for real ios device
1519- fix bug with parsing of binary vs XML plists
1520- fix handling of multiple taps
1521- clean up iOS simulator log
1522- fix hang when ending a real safari session
1523- implement pushFile for ios
1524- allow .ipa in the list of downloadable app types
1525- retry getting screenshot if it fails
1526- fix JavaScript error when using sendKeys
1527- fix error where testsuite would kill appium in its ios reset cycle
1528- fix error in getting localized strings
1529
1530#### Android
1531- fix handling of IME activation
1532- fix chromedriver kill logic
1533- support API level 10 style focused activity strings
1534- add lots of fallback strategies for element.clear()
1535- update api level dependency for the project to 19
1536- add fallback strategies for finding app activity from AndroidManifest
1537- fix bug with xpath searches for //*
1538- fix xpath search bugs, now we use UiAutomator's instance() which is more
1539 reliable
1540- fix grunt-helpers bug when building appium on windows
1541- retry all adb commands to make all adb commands less flakey
1542- upgrade chromedriver to 2.10
1543
1544#### Selendroid
1545- fix for setValue and getContexts methods, they were not using a custom
1546 selendroid port if active
1547- selendroid now requires internet permission in apps; fail if it's not
1548 present
1549- add custom keystore support
1550- upgrade selendroid to 0.11.0
1551
1552
1553CHANGES IN VERSION 1.2.0 (from 1.1.0)
1554======================================
1555
1556#### General
1557- migrated to express 4 for the webserver
1558- allow setting tmp dir with --tmp flag
1559- upgrade many submodules including wd
1560- add --strict-caps mode which will cause sessions to fail which send in
1561 bad or unknown caps
1562- add error handling for invalid multi-pointer gestures
1563- add autoWebview capability to automatically get into a webview context of a
1564 hybrid app
1565- remove deprecated -real xpath locator strategy
1566- allow bypassing appium's sudo checks
1567- add generic crash handler
1568- many documentation and sample code updates
1569
1570#### iOS
1571- prevent log lines without dates from being filetered out
1572- add keepAppToRetainPrefs cap to avoid deleting location plists
1573- check for accessibility id matching selector then fall back to string match
1574- add flag for specifying where in .app hierarchy Localizable.strings is
1575- use a dynamic bootstrap in appium-uiauto
1576- upgrade mechanic
1577- implement pullFolder to get an entire folder from the sim
1578- make sure launchAndKill can wait for specified directories before killing sim
1579- get rid of ForceQuitInstruments
1580- update hideKeyboard to take various possible strategies
1581- fix launchAndKill to wait for safari-specific directories
1582- make sure all pageload timeouts are cleared and called only once
1583- disable ios grace delay
1584- don't return duplicate elements
1585
1586#### Android
1587- renamed keyevent to press_keycode and long_press_keycode
1588- add dedupe to complex_find
1589- fix activity-finding logic
1590- fix error handling in installApp
1591- extract adb code into its own package, appium-adb
1592- add support for opening notifications
1593- add automation support for embedded chromium
1594- fix pushStrings to work with 'app' as package
1595- fix id serach
1596- cause appium to fail if we can't parse package/activity
1597- add package name to android webview context
1598- make sure UNZIP env var doesn't confuse our internal unzip calls
1599- add appIntent etc capabilities so app can be launched with a certain intent
1600- add IME methods, and an appium-specific IME that is automatically installed
1601- add unicodeKeyboard capability which allows sending unicode text
1602- fix installApp, prevent a server crash
1603
1604#### Selendroid
1605- faster selendroid installer
1606
1607
1608CHANGES IN VERSION 1.1.0 (from 1.0.0)
1609======================================
1610
1611#### General
1612- less buggy xcode locator strategy for iOS and Android
1613 - note that for Android this might cause previous xpath selectors not to
1614 work, since we now always set compressed hierarchy when getting the xml
1615dump used for xpath
1616- fix defaults for swipe duration
1617- add fixes for context switching
1618- add optional argument 'language' to getStrings
1619- update docs and code samples (including adding perl code samples)
1620- continue work on appium CI
1621- make sure we can't close already ended sessions
1622- upgrade all node deps besides express
1623
1624#### iOS
1625- add `-ios uiautomation` strategy doc
1626
1627#### Android
1628- allow for encoding of non-ASCII text
1629- clearer activity error messages
1630- add language and country support
1631- extract strings from apk corresponding to device language instead of default
1632 to be used with ID locator strategy
1633- update complex find with new uiautomator constants
1634- upgrade Chromedriver to 2.10
1635- allow automation of Chrome Beta with browserName: `ChromeBeta`
1636
1637#### Selendroid
1638- update selendroid to 0.10.0
1639- add getStrings method
1640
1641
1642CHANGES IN VERSION 1.0.0 (from 1.0.0-beta.2)
1643=======================================
1644
1645#### General
1646- update python samples to use 1.0 style
1647- don't convert 'proxy' or 'launchTimeout' caps into strings
1648- make sure commit hooks use local grunt and mocha
1649- update some ruby samples to use 1.0 style
1650- add more 1.0 docs and sample code
1651
1652#### iOS
1653- fix mobile safari native tap on android by offsetting tap position by 40px
1654- go back to using unpatched UICatalog
1655- fix autoAcceptAlerts
1656- allow multiple calls to /contexts
1657- update appium-instruments with fix that would prevent the basic 'iPhone
1658 Simulator' device from launching correctly
1659
1660#### Android
1661- fix gesture timing so it doesn't interpret ms as seconds
1662
1663#### Selendroid
1664- ensure selendroid isn't proxied appium endpoint commands
1665
1666
1667CHANGES IN VERSION 1.0.0-beta.2 (from 1.0.0-beta.1)
1668=======================================
1669
1670#### General
1671- extensive docs updates (make it ready for the new Slate docs)
1672- decode sequence of actions to native "swipe" method
1673- fix valid platform error message
1674- update WD dep
1675- fix proxying when session id is null
1676- allow spaces in appium folder name in reset.sh
1677- get rid of tag name loc strat in favor of class name
1678
1679#### Android
1680- allow for different input sets to mobile: find
1681- fix apk signing with custom keystore
1682- allow MultiActions without an element
1683- move chrome tests into their own emulator type
1684- fix async bug in getting xml dump
1685- use async.queue to ensure synchronicity of commands
1686- improve DumpWindowHierarchy so xpath queries don't crash
1687
1688
1689CHANGES IN VERSION 1.0.0-beta.1 (from 0.18.0)
1690=======================================
1691
1692#### General
1693- fix broken log options: --log, --log-no-colors, and --log-timestamp
1694- update docs to work with Jekyll
1695- change 'launch' desired cap to 'autoLaunch', same defaults
1696- fix installApp, launchApp, closeApp, removeApp to use correct app path
1697- fix bug in action handling for python client
1698- remove deprecated window handle support for native clients (in favor of contexts)
1699- remove deprecated old xpath support and promote the '-real xpath' strategy to the
1700 default
1701- remove deprecated json page source in favor of xml
1702- remove deprecated mobile methods: location, fireEvent, waitForPageLoad,
1703 findElementNameContains, localScreenshot, getCommandTimeout, findAndAct
1704- rewrite caps.md doc to use new 1.0 style caps
1705- remove deprecated --merciful and --device-port flags (add
1706 --force-quit-instruments flag instead of -m)
1707- lots of docs reorganization and prep for new publishing method
1708- fix valid platform list
1709- update npm deps to latest (except for express)
1710- remove all deprecated "mobile: xxx" commands, except for gestures for now
1711- use new native methods from WD in testsuite
1712
1713#### iOS
1714- fix bug where iOS < 7.1 would try to ask instruments for available devices
1715- loosen up sudo check for authorize_ios so it can run without issue under sudo
1716- rename `nonSyntheticWebClick` cap to `nativeWebTap`, and turn it off by
1717 default
1718
1719#### Android
1720- fix bug with XML page source where it wouldn't create the dump file correctly
1721- change caps with hyphens (-) like "app-package" to be camelCased like the
1722 rest of Appium caps, e.g., "appPackage"
1723- fix bug with custom keystore apk signing
1724- allow multi actions without an element
1725
1726#### Selendroid
1727- fix command timeout bug
1728
1729
1730CHANGES IN VERSION 0.18.0 (from 0.17.6)
1731=======================================
1732
1733*Important*: This is the Appium 1.0 feature-complete pre-release. Please the
1734discussion group for more context and details about this release and where
1735Appium is headed in the near future.
1736
1737#### General
1738- disallow use of appium under sudo (except for authorize_ios)
1739- don't autopopulate node config host (so appium url can be set in nodeconfig)
1740- many build and test tweaks and fixes to improve build stability
1741- don't link commit hooks if we're not in a git repo
1742- add "accessibility id" locator strategy
1743- get rid of a bunch of unused grunt commands
1744- deprecate use of JSON page source (XML will be the standard)
1745- simplify reset strategy and make reset strategies available through caps.
1746 There's now the default (fastReset), fullReset, and noReset.
1747- deprecate "tag name" locator strategy
1748- add real xpath support (for now under the "-real xpath" locator strategy)
1749- deprecate old xpath strategy
1750- a lot of work on appium CI
1751- further update new capability handling and device selection; use only the
1752 new caps internally
1753- implement TouchAction and MultiTouch APIs
1754- migrate all "mobile: " methods to their own REST endpoints; they are now
1755 deprecated
1756- don't allow users to send in bad platformNames; fail with an error instead
1757- allow app paths relative to appium root
1758- add command-line flags corresponding to the new desired capabilities
1759
1760#### iOS
1761- add "-ios uiautomation" locator strategy
1762- make backup path for built-in apps in ios 7.0 configurable
1763- only count one out of the two textfields which compose an ios 7.1 textfield
1764- introduce a distinction between global and post-launch timeouts for
1765 instruments, to fine-tune flake management
1766- rewrite screenshot logic
1767- modify "mobile: scroll" to take an element argument
1768- fix bug where bundleID would be improperly lowercased
1769- allow changing of remote debugger ports with env variable
1770- fix bug in device launching logic that would try to launch an invalid device
1771 as the default
1772- add "mobile: pullFile" support for retrieving files from the sim folders
1773- update fruitstrap to a version which doesn't segfault for Japanese
1774
1775#### Android
1776- make sure app is signed before getting MD5 hash for use in on-device install
1777- ensure that the app is always force-stopped before uninstalling the APK
1778- add "-android uiautomator" locator strategy
1779- fix bug involving storing android binary paths incorrectly
1780- add avdLaunchTimeout and avdReadyTimeout caps to fine-tune these timeouts
1781- retry launching AVD once if it never connects to adb
1782- if installing a remote apk fails, uninstall/rm, then retry
1783
1784
1785CHANGES IN VERSION 0.17.6 (from 0.17.6)
1786=======================================
1787
1788#### General
1789- disallow use of Appium in sudo mode
1790- ensure publishes happen with a version of Node which doesn't generate
1791 shasum errors in NPM
1792
1793
1794CHANGES IN VERSION 0.17.5 (from 0.17.4)
1795=======================================
1796
1797#### Selendroid
1798- update Selendroid to 0.9.0
1799
1800
1801CHANGES IN VERSION 0.17.4 (from 0.17.3)
1802=======================================
1803
1804#### General
1805- fix "mobile: reset"
1806- use the new Context API (from [the spec
1807 draft](https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile))
1808 for switching back and forth between webviews. The window handles strategy
1809 will be deprecated in 1.0
1810- update Wd.js to use a version with context support
1811- sanitize desired caps so they are always a manageable type
1812
1813#### iOS
1814- allow testing of iOS7.1 in Appium's testsuite/test.sh
1815- don't error out of pref path finding too soon if there are multiple dirs
1816
1817#### Android
1818- fix "mobile: push"
1819- fix fastReset going undefined between sessions
1820- add --avd-args server param to pass args to avd on boot
1821- various fixes for starting avds, including allowing multiple emulators to be
1822 running
1823- fix getElement() to set isElement to false instead of throwing
1824- fix touch actions by fixing leaking state across executions
1825- remove fastClear and run `pm clear` on fastReset
1826
1827CHANGES IN VERSION 0.17.3 (from 0.17.2)
1828=======================================
1829
1830#### General
1831- add new desired capabilities handling to conform to the Selenium 3 spec. Use
1832 of old desired capabilities will now be deprecated. See [the spec
1833 draft](https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile) for more information
1834
1835#### Android
1836- fix process detection
1837- make sure temp dir exists before writing zipaligned apk to it
1838
1839CHANGES IN VERSION 0.17.2 (from 0.17.1)
1840=======================================
1841
1842This is simply a release to make Appium downloadable on npm.
1843
1844CHANGES IN VERSION 0.17.1 (from 0.17.0)
1845=======================================
1846
1847#### General
1848- move toward CI: build appium and run reset.sh on Travis
1849
1850#### iOS
1851- pass quiet flag to fruitstrap when in quiet mode
1852- update appium-instruments (which fixes retry behavior)
1853
1854#### Android
1855- fix uninstall detection
1856
1857
1858CHANGES IN VERSION 0.17.0 (from 0.16.0)
1859=======================================
1860
1861#### General
1862- fix maxBuffer error in installApp command
1863- rearchitect device extraction and configuration from args/caps, and add lots
1864 of unit tests
1865- show non-default server params in server log for easier debugging
1866- add --command-timeout as a server arg
1867- don't ever use sudo to install npm submodules
1868- ensure appium's CWD is always the appium dir
1869- clear out commandTimeout between sessions, so subsequent sessions don't count
1870 the session launching time as command time
1871- set npm submodules to track published branches
1872- relax requirements for unpacking zipfiles and finding app names
1873
1874#### iOS
1875- handle both binary and xml plists when changing ios settings plists
1876- break out appium-instruments into its own npm package
1877- fix bug where command line --force-iphone or --force-ipad wouldn't set
1878 device. This should fix issues with Appium.app
1879- add --keep-keychains server arg / keepKeychains desired cap in order to
1880 disallow deletion of Keychains dir
1881- bring reset behavior back to what it was before location services / settings
1882 updates, so that with the default reset, most directories are still cleared
1883 out
1884- use actual current ios sdk in reset.sh
1885- create plist basedirs if they don't exist
1886- add processArguments cap to pass args to AUT
1887- make --merciful the default
1888- require bundleId when using location services caps
1889- update UICatalog test app for 7.1
1890- fix duplicate textfield issue in iOS 7.1
1891- use new instruments `- w` param in iOS 7.1 to set device type
1892- add location and contact alert request buttons to TestApp
1893
1894#### iOS+Safari
1895- update initial webview navigation logic to work on 7.1
1896- if we start with a real webview, don't try to nav to webview through favs
1897
1898#### Android
1899- added support for 'direction' in scrollTo
1900- fix source command
1901- add longClick by position and duration
1902- fix reset.bat issues on Windows
1903- updated Windows installation instructions
1904- added --udid flag to reset.sh/bat, so it can uninstall from specific devices
1905- added support for touch{Down|Up|Move}
1906- add "mobile: push" and "mobile: pull" commands to send files to/from device
1907- ensure apks are always run through zipalign
1908- parse launch package and activity from apk, so that `app-package` and
1909 `app-activity` caps are no longer required
1910- use better version of `isAppInstalled`
1911
1912#### Chrome+Android
1913- update bundled chromedriver to 2.9
1914- add enablePerformanceLogging cap
1915
1916
1917CHANGES IN VERSION 0.16.0 (from 0.15.0)
1918=======================================
1919
1920#### General
1921- auto-configure the host and port for nodes in an appium grid
1922- fix usage of temp folders on windows/linux
1923- allow better usage of reset.sh in windows git-bash
1924- add linking of pre-commit hook in reset.sh so everyone runs it
1925
1926#### iOS
1927- fix regression where special keys wouldn't be sent
1928- add `mobile: scroll` with direction: up/down/left/right to scroll views
1929- display correct error when app install/uninstall fails on real device
1930- update TestApp to show location services enabled status
1931- add `locationServicesAuthorized` cap
1932- add `locationServicesEnabled` cap
1933- add `safariIgnoreFraudWarning` cap
1934- add `safariAllowPopups` cap
1935- update uiauto js to retrieve references to app/windows dynamically every time
1936
1937#### iOS+Safari
1938- wait longer for webviews to appear in ios7
1939- return latest window with getWindowHandles()
1940- move hardcoded atoms out of appium into its own npm module which builds them
1941- add `nonSyntheticWebClick` cap to use atoms for click in ios7
1942
1943#### Android
1944- fix installing unlock app on windows paths with spaces
1945- add test coverage mechanism
1946- don't fail the test if we can't find strings.xml in an apk
1947- add hybrid support for webviews in 4.4+ apps
1948- fix `mobile: launchApp`
1949
1950#### Chrome+Android
1951- bundle chromedriver into appium itself, remove system dependency
1952
1953#### Selendroid
1954- remove requirement to manually update selendroid test apk path in test code
1955- update selendroid (with maven 3.1.1 requirement)
1956
1957
1958CHANGES IN VERSION 0.15.0 (from 0.14.2)
1959=======================================
1960
1961#### General
1962- fix for issue where logger would log colors even when asked not to
1963- stricter jshint rules enforceable from editor
1964- reformat/restructure test suite
1965- handle previously-unhandled errors when using spawn()
1966- fix startup bug (status object being taken as session id)
1967- clear sessionOverride instance var when cleaning up session
1968- fix regression where appium git revision wasn't shown in server output
1969- various testsuite tweaks/fixes
1970
1971#### iOS
1972- don't wait 30s for instruments to terminate
1973- use SIGKILL for instruments again
1974- allow ios logs to be not found without crashing appium
1975- allow automation of settings app via 'app: settings' cap
1976- don't crash if IDevice init fails (when requesting real device)
1977- don't try to remove app if it's not on the device
1978- escape single quotes for id search
1979- lint the uiauto js code
1980- allow accented characters in send_keys()
1981- delete the entire sim folder when using --full-reset (before & after)
1982
1983#### iOS+Safari
1984- allow safari to pre-launch
1985- don't tap apple button to get into webview on real device safari
1986- don't use synthetic click on real device safari
1987- fix undefined window handle bug
1988- fix safariLauncher crashes
1989
1990#### Android
1991- add new mobile methods: toggleData, toggleFlightMode, toggleWifi,
1992 toggleLocationServices
1993- convert uiautomator error stream to string
1994- use a better method for finding build-tools and platform-tools dirs
1995- implement new version of longClick
1996- add `mobile: find` example
1997- return element's classname by selenium `tag_name` method/property
1998- add `app-wait-package` desired cap, to be used in concert with
1999 `app-wait-activity`
2000
2001#### Chrome+Android
2002- fix unlock errors
2003- fix port-in-use bug which prevented automation of multiple chromes on
2004 multiple emulators
2005
2006#### Selendroid
2007- upgrade to 0.8.0
2008
2009
2010CHANGES IN VERSION 0.14.2 (from 0.14.1)
2011=======================================
2012
2013#### General
2014- fix bug that prevented appium from starting in ios
2015
2016CHANGES IN VERSION 0.14.1 (from 0.14.0)
2017=======================================
2018
2019#### General
2020- fix bug that prevented appium from pre-launching without specified device
2021
2022#### iOS
2023- when alert title is null, return text instead
2024- add framework for setting iOS and app preferences via plists
2025- add `enableLocationServices` desired cap for enabling/disabling location
2026 services on the simulator
2027
2028#### Android
2029- fix fast reset/clear logic to not fail when remote apk doesn't exist
2030
2031#### Selendroid
2032- actually wait for app-wait-activity instead of app-activity
2033
2034
2035CHANGES IN VERSION 0.14.0 (from 0.13.0)
2036=======================================
2037
2038#### General
2039- add ability to set launch timeout from command line
2040- require 'device' cap and fail without it
2041- bring back appium shell
2042- add new node examples
2043- add troubleshooting docs in Chinese
2044- fix app download suffix issue
2045- major refactor of test code
2046
2047#### iOS
2048- delete cache data for all versions of sim
2049- fix sporadic DOM corruption issue
2050- make reset.sh more Xcode 4.6 friendly
2051- add flag to show simulator logs in-line with appium logs
2052- add cap for automatically accepting photo permission alerts
2053- update appium doctor to read new auth db value
2054- keep track of ios crash logs and make available through selenium interface
2055- cleanup app state pre-test and post-test
2056- fix installing/removing .app (instead of .ipa)
2057- escalate to SIGKILL if instruments doesn't respond to SIGTERM
2058- add cap for using native instruments lib
2059- return accessibility hint as 'hint' attribute
2060
2061#### Android
2062- fix AVD startup bug
2063- better error handling in element finding code
2064- update ApiDemos app with webview
2065- support doing web testing against stock browser on 4.4
2066- increase support of android 4.4 toolchain
2067- fix multiple device issue
2068- implement `mobile: background` for android/selendroid
2069- fix custom keystore unzip call stack issue
2070
2071#### Chrome+Android
2072- add ability to deal with a different kind of session redirect
2073- kill chromedriver before starting it up again to clear out ports
2074
2075#### Selendroid
2076- re-instate closeApp and removeApp
2077- fix issue where selendroid would crash based on activity mangling,
2078 resulting in a mysterious connection reset error
2079- upgrade to 0.7.0
2080- show selendroid logs in appium output
2081
2082
2083CHANGES IN VERSION 0.13.0 (from 0.12.3)
2084=======================================
2085
2086#### General
2087- add sauce reporting to ruby example
2088- normalize all ruby examples
2089- don't allow linux platforms to run ios doctor checks
2090- allow building of single platforms in reset.sh (don't delete other platforms)
2091- fix bug with --show-config & npm
2092- removed some unused tests
2093- remove retry support from appium test harness
2094- catch grid syntaxerror issue
2095- make sure gappium tests actually get run
2096
2097#### iOS
2098- update docs for setting up ios-webkit-debug-proxy
2099- fix authorize_ios
2100- make sure setLocale doesn't run on real devices
2101- give webviews a bit of time to show up before we say they aren't there
2102- fix the auth db doctor check to work for 10.7
2103- when launching simulator without instruments, wait for sim logs
2104- kill zombie sim daemon launchers
2105- update mobile: reset
2106- automatically retry launching instruments if it flakes out. The number of
2107 retries can be set with `-r N` or `--backend-retries N`, where `N` is
2108 the number of retries, including 0.
2109- add support for automating real Safari (and other built-in apps) in iOS7
2110- remove support for using iwebview as a Safari replacement
2111- when running mobile safari tests, automatically detect ios version
2112- update i-w-d for compatibility with xcode 5.1 / ios 7.1
2113
2114#### Android
2115- remove dependency on grep for real devices
2116- add 19.0.0 to possible build paths
2117- add tests for apk downloading and fix apk downloading issue
2118- check for API level >= 17 for uiautomator and fail sooner if not
2119- fix issue where calculating md5 of app would use too much memory, for large
2120 apps
2121- fix bug with checking whether app already existed on device
2122
2123#### Selendroid
2124- give useful error message if user tries to run a uiautomator-based
2125 "mobile: " command in selendroid
2126- update selendroid
2127
2128
2129CHANGES IN VERSION 0.12.3 (from 0.12.2)
2130=======================================
2131
2132#### General
2133- reset command timeout during mobile: reset
2134- fixes for strategy validation ('dynamic' and 'class name' are valid)
2135- add --show-config flag to dump appium config and exit
2136- add option to set newCommandTimeout to 0 or false to disable it entirely
2137 rather than working around it by setting a high value
2138- refactor server/main.js -- things were getting ugly
2139- fix issue where ForceQuitUnresponsiveApps would try to run even on non-Mac
2140 systems
2141
2142#### iOS
2143- change default device for iOS 6 to "iPhone" (non-retina)
2144- change Xcode 5.0.1 warning message to indicate an upgrade is possible now
2145- add --default-device flag to allow instruments to launch the sim like it
2146 used to
2147- get rid of deprecated authorization strategy code
2148- include ForceQuitUnresponsiveApps output in appium log
2149- add --merciful (-m) flag to avoid running ForceQuitUnresponsiveApps. Show
2150 Instruments a bit of mercy...or don't.
2151
2152#### Selendroid
2153- upgrade Selendroid to 0.7.0
2154
2155
2156CHANGES IN VERSION 0.12.2 (from 0.12.1b)
2157=======================================
2158
2159- None (npm fix release)
2160
2161CHANGES IN VERSION 0.12.1b (from 0.12.1)
2162=======================================
2163
2164- None (npm fix release)
2165
2166CHANGES IN VERSION 0.12.1 (from 0.12.0)
2167=======================================
2168
2169#### General
2170- add appium doctor for checking system config issues that prevent appium
2171 from working properly. Run with `node bin/appium-doctor.js`, or
2172 `appium-doctor` if installed via NPM, or via the GUI in Appium.app
2173- fail sooner if user passes in bad locator strategy
2174- fix app extracting logic
2175
2176#### iOS
2177- fix locale settings logic
2178- fix 64-bit device string
2179- fail with a nicer message if xcrun can't find instruments
2180- allow iwebview tests to automate https sites
2181- kill simulators before launching new ones
2182- automatically force quit unresponsive instruments processes
2183
2184
2185CHANGES IN VERSION 0.12.0 (from 0.11.4)
2186=======================================
2187
2188#### General
2189- make sure there's no color in console when --log-no-colors is used
2190- add more chinese docs
2191- allow periods in xpath node names
2192- update style guide
2193- bring all NPM dependencies up to date
2194
2195#### iOS
2196- mobile web: doc updates
2197- mobile web: make sure window.close() works on real devices
2198- mobile web: connect to most recent webview instead of first
2199- allow uiauto to get path to node binary from `node_bin` key in .appiumconfig
2200- fix automatic UDID detection
2201- improve webviewapp to be a safari replacement; can now be used for mobile
2202 web automation using `app: iwebview`
2203- use `deviceName` cap to select specific iOS device
2204- mobile web: automatically accept popup window alerts
2205- give informative error message if ideviceinstaller isn't present
2206- add a wait after flick calls so client doesn't regain control before flick
2207 has finished
2208
2209#### Android
2210- make sure chrome tests don't require package/activity
2211- make sure we force-stop apps before starting them
2212- fix issue with checking for package/activity for chrome
2213- make sure to kill any running uiautomator processes before test
2214- add `fastClear` desired cap, default true. If false, uses reinstall
2215 instead of `pm clear` to reset an app
2216- anytime we call `dumpsys windows` when checking for screen lock, dump output
2217 to $APPIUM_HOME/.dumpsys.log so we can learn more about error cases
2218
2219
2220CHANGES IN VERSION 0.11.4 (from 0.11.3)
2221=======================================
2222
2223#### General
2224- add ruby scrollTo example
2225
2226#### iOS
2227- fix dismissAlert / acceptAlert on ios7
2228- make instruments logging quiet by default (put verbose=true in
2229 ~/.instruments.conf to re-enable)
2230- fix safarilauncher shutdown issue
2231- add tests for setting slider values
2232- set ios sim language using desired caps
2233- add more error handling in instruments_client
2234
2235#### Android
2236- fix issue with adb path and quote truncation
2237- fail with a nice message if app activity/package are not sent in
2238
2239#### Selendroid
2240- fix keyevent
2241- add command timeout tests
2242
2243
2244CHANGES IN VERSION 0.11.3 (from 0.11.2)
2245=======================================
2246
2247#### General
2248- remove wiki
2249- various doc updates
2250- reset command timeout for proxied devices (incl selendroid)
2251- translate docs to Chinese
2252- make desired capabilities returned by /session/:id non-hard-coded
2253
2254#### iOS
2255- add support for sim and devices for safari launcher
2256- major refactor of ios startup cascade
2257- fix tracetemplate detection logic
2258- add ability to select code-signing identity for safari launcher
2259- use securitydb for authorization on 10.9
2260- expose 'syslog' logs through selenium log interface
2261
2262#### Android
2263- various control flow/subprocess fixes
2264- don't uninstall app when --no-reset is used
2265
2266#### Selendroid
2267- update selendroid version
2268
2269
2270
2271CHANGES IN VERSION 0.11.2 (from 0.11.1)
2272=======================================
2273
2274#### General
2275- fix bug where running `appium` after installing via npm would error out
2276 because the logger was not initialized correctly
2277- fix bug in reset.sh where setting --real-safari would cause android et al
2278 not to build
2279
2280
2281CHANGES IN VERSION 0.11.1 (from 0.11.0)
2282=======================================
2283
2284#### General
2285- fix launch timeout bug
2286- update travis CI to use newer version of node
2287- remove .appiumconfig before running reset.sh
2288- update reset.sh to build safarilauncher for real devices only when
2289 passing in the --real-safari flag
2290- made test.sh sh-compatible
2291- update all example code to use correct desired capabilities
2292- don't set content-length header for http POSTS with no body
2293- add more desired caps to docs
2294- expand on android setup for mac osx in docs
2295- remove multiple device handling code--appium just does one device at a time
2296 per server
2297- handle command timeouts centrally rather than per-device
2298- add --log-timestamp and --log-no-colors options to server
2299
2300#### iOS
2301- fix sim control authorization on mavericks
2302- copy instead of symlink xpath/status into uiauto for non-breaking npm install
2303- fix cookie methods error case in mobile safari
2304- fail with an error message if user is on xcode 5.0.1 since it comes with
2305 a broken instruments binary
2306
2307#### Android
2308- don't uninstall app on fast reset
2309- fix crash that occurred when no devices were connected
2310- fix unlock logic and change order of regex search
2311- correctly handle responses for element{Displayed|Enabled|Selected}
2312- refactor adb/android/uiautomator startup/shutdown logic to make
2313 callback-based
2314- kill uiautomator if the startup cascade for android fails, so it doesn't
2315 zombify
2316
2317
2318CHANGES IN VERSION 0.11.0 (from 0.10.4)
2319=======================================
2320
2321#### General
2322- make tempdirs uniquely named
2323- massive code reorganization
2324- retry getting a session in testsuite to avoid flaky fails
2325
2326#### iOS
2327- update ios alert handling
2328- use safariLauncher without 20/30 secs timeout
2329- allow .ipa extension for local apps
2330
2331#### Android
2332- clean app using `pm clear` instead of clean.apk
2333- massive refactor/rewrite of android/adb code
2334- fix dependency download error
2335- ensure all apks are signed
2336
2337
2338CHANGES IN VERSION 0.10.4 (from 0.10.3)
2339=======================================
2340
2341#### iOS
2342- add callback for remote debugger socket disconnect to avoid race conditions
2343
2344#### Android
2345- allow _ in package name
2346- add timeout for orientation change
2347
2348
2349CHANGES IN VERSION 0.10.3 (from 0.10.2)
2350=======================================
2351
2352#### General
2353- this is a bugfix release
2354
2355#### iOS
2356- compile the i-w-d shim correctly for ios7
2357
2358
2359CHANGES IN VERSION 0.10.2 (from 0.10.1)
2360=====================================
2361
2362#### General
2363- update docs
2364- README rewrite
2365
2366#### iOS
2367- allow spaces in xcode path
2368- completely reset and restart simulator between sessions
2369- turn CA_DEBUG_TRANSACTIONS on
2370- enable `authorize_ios` on Mavericks
2371- fix bug making handling alerts take longer than necessary
2372
2373#### Android
2374- update clean.apk
2375- refactored setOrientation
2376- fix screenshot method
2377- implement pinch in / out
2378- upgrade unlock.apk
2379- use pm uninstall/install in reset
2380
2381#### Windows
2382- lots of reset.bat improvements
2383- make some more paths windows friendly
2384
2385
2386CHANGES IN VERSION 0.10.1 (from 0.10.0)
2387=====================================
2388
2389#### Android
2390- add hybrid app docs
2391- fix unlock.apk for android 2.3
2392- get unlock.apk into build/ so prebuilt packages can use it
2393
2394#### Selendroid
2395- make unlock.apk work with selendroid
2396- change remote url for selendroid submodule
2397- update selendroid to 0.6.0
2398
2399
2400CHANGES IN VERSION 0.10.0 (from 0.9.1)
2401=====================================
2402
2403#### General
2404- update contributor style guide
2405- add some troubleshooting tips to doc
2406- update test.sh for a better testing flow
2407
2408#### iOS
2409- autodetect tracetemplate rather than bundling with appium
2410- choose version of instruments-without-delay based on xcode version
2411- get rid of --ios-sdk flag in reset.sh since appium now autodetects
2412
2413#### Android
2414- fix find elements by ID
2415- update clean.apk
2416- update touchevent for longpress
2417- add unlock.apk which is a more robust device unlock solution
2418- enable mobile chrome support on windows
2419- better support for tapping invisible elements
2420
2421
2422CHANGES IN VERSION 0.9.1 (from 0.9.0)
2423=====================================
2424
2425#### General
2426- add desired caps doc
2427- moveTo defaults to 0.5, 0.5
2428- add some more node/yiewd examples
2429- beefed up test.sh
2430
2431#### iOS
2432- fix issue with finding ids
2433- add --ios-sdk flag to reset.sh to choose between 6.1/7.0
2434- various ios 7 compatibility fixes
2435- significant refactor of ios session lifecycle code, fixing various issues
2436- add automatic UDID detection
2437- attempt to tap element's coordinates when typical method doesn't work
2438- support more types of zip archives
2439
2440#### Android
2441- restart adb up to 10 times instead of 2
2442- fix --avd launching bug
2443- fix swipe steps/duration logic (note: will affect test behavior)
2444- support metastate for keyevent
2445
2446#### Phonegap
2447- fix submodule issues
2448
2449_Historical Note_: This version of Appium was published by @jlipps in a moving
2450vehicle on a drive from Krakow, Poland to Warsaw, Poland. Thanks, @bkobos, for
2451the chaffeurship and wi-fi!
2452
2453
2454CHANGES IN VERSION 0.9.0 (from 0.8.5)
2455=====================================
2456
2457#### General
2458- update troubleshooting doc
2459- fix app unzip issue
2460- remove app/apk files from zip path before appium starts
2461- fix location of UICatalog in reset.sh
2462- fix reset.sh android device matching
2463- update ruby examples
2464- add chrome example in node
2465- improve python example code
2466- begin to migrate tests from wd to yiewd
2467
2468#### iOS
2469- respond to the last command even if instruments crashes
2470- don't attempt to reset real devices
2471- update instruments-without-delay with ios7 support
2472- add findById support (uses localization strings)
2473- add mobile: getStrings
2474- support setting value for sliders and switches with sendKeys()
2475- add preliminary support for ios7 with a different tracetemplate
2476- make mobile: localScreenshot more robust by fixing race condition
2477- add phonegap example
2478
2479#### Android
2480- don't require 'avd' to be set in order to install/uninstall to android
2481- dynamic find can use classmap aliases
2482- make it easy to run multiple android devices simultaneously
2483- support for dragFrom / dragTo functions in API level 18
2484- use resource-id for finding elements (findById)
2485- make getSize available
2486- make desired cap for compressedLayoutHierarchy
2487- add new version of unsign.jar
2488- fix stopCapture bug
2489- remove some deprecated methods (xmlKeyContains, etc)
2490- add mobile: getStrings
2491- always return true for click() (uiautomator bug)
2492- fix getAttribute to return strings instead of bool
2493- fix tests for use with now-required 4.3 emulator
2494- add phonegap example
2495
2496#### Selendroid
2497- track selendroid dev branch instead of master
2498- upgrade to selendroid 0.5.0
2499
2500#### Windows
2501- update docs
2502- some windows compat fixes
2503
2504
2505CHANGES IN VERSION 0.8.5 (from 0.8.4)
2506=====================================
2507
2508#### GENERAL
2509- reorder problematic async calls (issue #1000!)
2510- misc refactoring
2511
2512#### Android
2513- allow install/uninstall without device id
2514- fix race condition in starting chromedriver
2515
2516#### Selendroid
2517- update selendroid version
2518- fix issue preventing errors from proxying correctly
2519
2520
2521CHANGES IN VERSION 0.8.4 (from 0.8.3)
2522=====================================
2523
2524#### GENERAL
2525- some documentation updates
2526- give appium server a big http timeout so it doesn't drop connections
2527
2528#### Android
2529- make sure chromedriver tries to restart adb if it fails the first time
2530- add logcat retrieval for android and selendroid
2531
2532#### IOS
2533- allow use of --ipa and --app flags together
2534- try out a fix in mechanic.js for the (null) tap issues
2535
2536
2537CHANGES IN VERSION 0.8.3 (from 0.8.2)
2538=====================================
2539
2540#### GENERAL
2541- update various documentation (gestures, inspector tutorial, README)
2542- allow dashes in bundle/package IDs
2543- fix bad address startup error message
2544- use native function.bind() throughout instead of a mix of scoped objects
2545 and underscore.bind()
2546
2547#### Android
2548- use UiAutomator for back() instead of keyevent
2549- use UiAutomator for keyCode instead of adb shell
2550- use UiAutomator for screenshot instead of adb shell
2551
2552### IOS
2553- add some more mechanic aliases (keyboard, key)
2554- add pinch/zoom gestures
2555- add Java example for automating mobile safari
2556- automatically accept location services dialogs if we can access them
2557- accept text-based Info.plist files in addition to binary ones
2558- use reset.sh to download UICatalog rather than node/grunt
2559
2560
2561CHANGES IN VERSION 0.8.2 (from 0.8.1)
2562=====================================
2563
2564#### GENERAL
2565- make sure build/ is deleted by reset.sh
2566- re-publish without extraneous artifacts in build/
2567
2568
2569CHANGES IN VERSION 0.8.1 (from 0.8.0)
2570=====================================
2571
2572### GENERAL
2573- update java examples to show correct use of JavascriptExecutor
2574- fix parser bug that prevented launching on windows
2575- fix missing parameter generating exceptions in testsuite
2576- fix more stdout maxBuffer errors
2577- fix android tests to use new activity style
2578- return timeout in set timeout commands
2579
2580### IOS
2581- fix mobile safari alert-handling issues
2582- attempt to capture and resolve location services popup using desired cap
2583
2584### ANDROID
2585- require shortcut activities to start with ".", allowing fully-qualified
2586 activities with packages different from the main appPackage
2587- if appium fails to launch activity with ".", it will retry
2588- allow downloaded apps to end in .apk as well as .zip
2589- fix xpath parser error not allowing widget packages to be used
2590- add longClick command
2591- added JUnit and TestNG examples
2592- support ChromiumTestShell as well as Google Chrome for Chrome tests
2593
2594### SELENDROID
2595- fall back to `am start` if Selendroid doesn't successfully launch the app
2596
2597CHANGES IN VERSION 0.8.0 (from 0.7.3)
2598=====================================
2599### GENERAL
2600- bump maxBuffer for various subprocesses
2601- automatically re-register appium with grid if it disconnects
2602- augment style guide
2603- allow appium tests to read appium server port from $APPIUM_PORT
2604
2605### IOS
2606- add support for locking device for X seconds
2607- add support for backgrounding app for X seconds
2608- make finding node/instruments_client more robust for instruments context
2609- mobile methods for installing/uninstalling apps to device
2610- add shortcut for UIACollectionCell and UIATableCell
2611- ensure isEnabled returns a boolean value
2612
2613### ANDROID
2614- add mobile: searchId method to search for string by ID
2615- add mobile: resolveId method to resolve strings
2616- fix activity detection to be more allowing of different strings
2617- enable keystore for using different certs
2618- fix issue when large messages are transferred from bootstrap
2619- fix takesScreenshot capability
2620- add long tap method
2621- make screenshot work on windows
2622- fix scrollTo support
2623
2624### CHROME
2625- add support for automating Chrome on Android!
2626
2627### SELENDROID
2628- update selendroid to 90aef5d
2629
2630CHANGES IN VERSION 0.7.3 (from 0.7.2)
2631=====================================
2632### IOS
2633- bugfix: authorize_ios needed #!
2634
2635CHANGES IN VERSION 0.7.2 (from 0.7.1)
2636=====================================
2637### GENERAL
2638- make sure reset.sh checks for JAVA_HOME set for android/selendroid
2639- add mobile: reset docs
2640- alias POST /touch/click to POST /click
2641
2642### IOS
2643- fix discrepancy between isDisplayed() and isVisible() and isEnabled()
2644- use new Automation.tracetemplate
2645- fixes for checking alerts in webviews
2646- page source now gets all windows, not just main window
2647- allow custom node path by setting NODE_BIN in a settings file
2648- add authorize_ios binary to npm install so npm users can authorize their ios
2649 sim
2650
2651### ANDROID
2652- use path.resolve in a cross-platform way
2653
2654### SELENDROID
2655- fix use of adb from within selendroid
2656- keyevent support
2657- fix app-wait-activity
2658
2659CHANGES IN VERSION 0.7.1 (from 0.7.0)
2660=====================================
2661### SELENDROID
2662- update to new version with new build instructions
2663- make selendroid port configurable
2664
2665### WINDOWS
2666- fix use of exec and spawn so external commands work
2667
2668CHANGES IN VERSION 0.7.0 (from 0.6.1)
2669=====================================
2670### GENERAL
2671- allow new session requests to override current session; this can be disabled
2672 with the --no-session-override flag
2673- make sure reset.sh fails if android bootstrap can't build
2674- make --no-reset do what it's supposed to do, and fix description in docs
2675- check to make sure conflicting arguments aren't passed to the server before
2676 launching
2677- removed deprecated flags completely (hence the minor version bump)
2678- bringing some error messages into line across platforms
2679- fix some issues with grunt building functions
2680
2681### ANDROID
2682- add find element by ID (parses strings.xml)
2683- remove a sleep in bootstrap server that caused delays
2684- make sure app is uninstalled when not using fast reset
2685- make sure AndroidManifest.xml.apk is writable (for npm installed appium)
2686- make sure device wakes up / unlocks before running test
2687- add set geo location support
2688- clean up and fix issues relating to mid-session bootstrap.jar restart
2689- app-wait-activity now takes comma-separated list of valid activities
2690
2691### IOS
2692- fix some tests
2693- fix mobile: reset
2694
2695CHANGES IN VERSION 0.6.1 (from 0.6.0)
2696=====================================
2697### GENERAL
2698- started work on mobile_methods.md doc
2699- added hardcore mode to reset.sh that will refresh uicatalog inter alia
2700- ios-webkit-debug-proxy docs
2701- appium now registers correctly with selenium grid
2702- better bundle/package detection
2703
2704### IOS
2705- mobile: setLocation and POST /location for setting geolocation
2706- updated tests to work with new uicatalog version
2707- allow registering a websocket handler for alerts
2708- escape sendKeys values so you can send '
2709- fixed up tests a little bit
2710
2711### ANDROID
2712- fix fast reset race condition
2713- fix lack of AndroidManifest.xml.src in npm
2714- allow registering a websocket handler for alerts
2715- added method for getting location of element
2716- fixed package name for webviews
2717
2718CHANGES IN VERSION 0.6.0 (from 0.5.2)
2719=====================================
2720### GENERAL
2721- initial Windows appium support (Android-only)
2722- reset.sh no longer fails silently if it errors
2723- added reset.bat for windows
2724- get status now returns actual appium version
2725- make sure reset.sh uninstalls android test apps if emulator is running
2726- include the git revision in the status object and in the logs at startup
2727- misc bugfixes
2728
2729### IOS
2730- ability to talk to mobile Safari on a real device over USB
2731- added native back() method
2732- sendKeys now only taps on field if it doesn't already have focus
2733
2734### ANDROID
2735- find by name checks to see if it found the element
2736- find by xpath no longer returns duplicate elements
2737- add support for ADT 22
2738- add "mobile: waitForPageLoad" that waits for indicators to clear
2739- fix scrollTo
2740
2741### SELENDROID
2742- build selendroid modded servers in /tmp for npm
2743- fixed issue with running tests for multiple apps sequentially
2744
2745### ROBOT
2746- initial support for robot automation (robot intercepts tap etc)
2747
2748### APPIUM.EXE
2749- not strictly part of appium, but the Windows GUI has arrived in beta!
2750
2751CHANGES IN VERSION 0.5.2 (from 0.5.1)
2752=====================================
2753### IOS
2754- fixed regression in mobile safari pre-launch
2755
2756CHANGES IN VERSION 0.5.1 (from 0.5.0)
2757=====================================
2758### GENERAL
2759- updates to python examples
2760- refactored configuration code
2761- initial work making Appium's node code windows-compatible
2762- more lenient treatment of relationship between $HOME and system username
2763
2764### IOS
2765- fixing webview not waiting for page loading on url nav issue
2766- added node-idevice which streamlines installing .ipas on real devices
2767- implement scrollTo
2768- fixed bug in xpath code which returned last element first
2769
2770### ANDROID
2771- add some docs for installing HAXM
2772- add scroll_into_view for mobile: find
2773- completed android element class map
2774
2775### SELENDROID
2776- http timeout tweaks
2777
2778CHANGES IN VERSION 0.5.0 (from 0.4.1)
2779=====================================
2780### GENERAL
2781- significant change for command-line params for appium:
2782 - --without-delay is now on by default. to turn it off, use
2783 --native-instruments-lib if you don't want it
2784 - --fast-reset is now on by default. to turn it off, use --full-reset
2785 - --verbose is now on by default. to turn it off, use --quiet
2786
2787CHANGES IN VERSION 0.4.1 (from 0.4.0)
2788=====================================
2789### GENERAL
2790- added --dev flag to reset.sh to optionally include test apps / dev deps
2791- added --verbose flag to reset.sh to optionally spew info (was default)
2792- reset.sh now puts all binaries in /build so it can be packaged and reused by
2793 npm et al
2794
2795### IOS
2796- added more Java examples
2797
2798### SELENDROID
2799- updated selendroid to 56581e27b45c3a4483d89701fc893ac37b172e46
2800
2801CHANGES IN VERSION 0.4.0 (from 0.3.1)
2802=====================================
2803### GENERAL
2804- more python examples including for android
2805- node android code example
2806- migrated wiki to appium/docs
2807- added troubleshooting docs
2808- added auto-tagging of repo on npm publish
2809- add a config check to make sure reset.sh was run for a specific device
2810 before allowing appium to try to start a session with that device
2811
2812### IOS
2813- various efforts to fix/workaround the (null).tap() issue in UIAutomation
2814- added shake()
2815
2816### ANDROID
2817- partial match on content-desc
2818- find aapt in SDK or path
2819- better logging all around
2820- ensure app apk exists and fail if not
2821- added content-desc to all ApiDemos elements
2822- added --avd flag for launching emulator if not running
2823- added getName()
2824- fix mobile: find
2825
2826### SELENDROID
2827- updated selendroid to 0.4
2828- don't re-build selendroid for each app, just re-insert manifest and build
2829 selendroid in reset.sh instead
2830
2831### FIREFOXOS
2832- Initial Firefox OS support landed!
2833
2834CHANGES IN VERSION 0.3.1 (from 0.3.0)
2835=====================================
2836### GENERAL
2837- support for xpath indexes
2838- support for xpath last()
2839- docs specific to linux
2840- fix name of npm binary-plist dependency
2841
2842### IOS
2843- update instruments-without-delay (fix #432)
2844- fix #437 (implicit wait didn't work after ios reset)
2845- when searching for @text, fall back to @label and @value
2846- allow @name to refer to @text, @label, and @value
2847- have "textfield" searches return "secure" fields as well
2848- add "collection" tag name
2849- make sure to do a clean build before building sample apps
2850
2851### ANDROID
2852- fix xpath wildcard issue
2853- fix tag name selector
2854- alias "window" tag name to "frame"
2855- tweak flick timing
2856- have swipe/flick return errors if we know they didn't execute
2857- fix page source on real device
2858- use aapt rename to handle manifest stuff
2859- screenshot support
2860- support for the clear() method
2861
2862### SELENDROID
2863- fix proxy behavior
2864- added example/test for selendroid webview
2865- add WebViewDemo app with tasks for building it
2866
2867CHANGES IN VERSION 0.3.0 (from 0.2.3)
2868=====================================
2869### GENERAL
2870- Running tests with grunt will now not crash on first test failure
2871- Rewrote reset.sh to respect sudo and to run for individual platforms
2872- Changed markdown rendering engine and logic for generating appium.io from
2873 README.md
2874
2875### ANDROID
2876- Add "mobile: find" method for complex find combinations
2877- Check that clean.apk is signed
2878- Orientation support
2879- Update verify.jar to work on java 6
2880- Massive refactoring of adb.js
2881- Added Selendroid proxy support (!)
2882
2883CHANGES IN VERSION 0.2.3 (from 0.2.2)
2884=====================================
2885### GENERAL
2886- removed bloated appium.io submodule, replaced with no-binary one
2887- Fix plist resetting regression (#342)
2888- Fix to ensure GET /sessions doesn't return false information
2889
2890### IOS
2891- Allow instruments to find node binaries in MacPorts default location
2892- Allow instruments to find node binaries from Appium.app
2893- Rotate screenshots to match orientation of device
2894- Fix python examples
2895- Webview: add tests for implicit attributes
2896- Made sure window handles are always strings
2897- Reduced flakiness of swipe tests
2898- Added a Sauce Connect example
2899- C# example updates
2900- Fixed a few minor regressions
2901
2902### ANDROID
2903- Large refactoring of bootstrap code
2904- Moved ApiDemos code into a submodule which is included and built for tests
2905- Fix install command
2906- Support for element-based swiping
2907- Use selenium touch actions for flick()
2908- Some error message improvements
2909- Make sure we lint adb.js
2910
2911CHANGES IN VERSION 0.2.2 (from 0.2.1)
2912=====================================
2913### IOS
2914- safari: use js close() instead of clicking buttons to close windows
2915- webview: make title() always return title for default context
2916- webview: async javascript execute
2917- webview: fix when webelements are returned to client
2918- allow launching app via bundle id and not just app path
2919- webview: get/set/delete cookie(s)
2920- correctly rotate screenshot images if taken in landscape mode
2921
2922### ANDROID
2923- add eclipse formatting file for bootstrap
2924- stop when activity fails to show up
2925- make content-desc search case-insensitive and partial
2926- allow launching emulator according to device id
2927- only sign app for clean apk once
2928
2929CHANGES IN VERSION 0.2.1 (from 0.2.0)
2930=====================================
2931### GENERAL
2932- fix bug in npm dependencies (make swig a real dependency)
2933
2934### IOS
2935- fixed scoping bug in alert handling
2936- get rid of --warp flag, instruments-without-delay is better
2937- safari: clear cookies/history/windows in between test runs
2938
2939CHANGES IN VERSION 0.2.0 (from 0.1.3)
2940=====================================
2941### GENERAL
2942- updates to reset.sh
2943- host our own guinea pig html page for webview tests
2944- updated java examples and docs
2945
2946### IOS
2947- webview: isActive()
2948- webview: submit()
2949- webview: clear()
2950- webview: selected()
2951- webview: implicit waits
2952- webview: location()
2953- webview: getName()
2954- webview: moveTo() and generalized click()
2955- webview: getWindowSize()
2956- webview: close()
2957- webview: don't allow alerts to cause webview requests to hang forever
2958- webview: find element(s) from element
2959- webview: get alert text
2960- webview: set prompt value
2961- allow pre-launching local zips/apps/safari from cli
2962- webview: allow execution in arbitrary frames
2963- "mobile: leaveWebView" special command instead of frame(null)
2964- webview: equalsElement()
2965- webview: back() and forward()
2966- webview: refresh()
2967- "mobile: fireEvent" for webview
2968- enable setting of device orientation through desired caps
2969- fix to not allow native commands to execute if webview command in progress
2970- bugfix in ios.js that left multiple remote debugger objs hanging around
2971- bumped command timeout since webview commands don't reset it
2972
2973### ANDROID
2974- fix in swipe where steps weren't converted to integers
2975- "mobile: keyevent" for hitting arbitrary keys
2976- native back()
2977- xpath search by "*"
2978- skip uninstall if --fast-reset set
2979- better error handling if activity is not found
2980- match other kinds of button than android.widget.Button with "button"
2981- allow matching custom class name (partial class name matching)
2982- relaunch on failure (or on screen cap)
2983- begun work to get bootstrap in maven
2984- flick() as an alias of sorts for swipe()
2985
2986-- changes not tracked before v0.1.3 --