Commit based release not is release_notes.md
Release tags are https://github.com/appium/ruby_lib/releases .
- Define device methods (
lock,unlock,hide_keyboard,push_file,pull_file,background_app,shake, etc.) natively onAppium::Driverviadef_delegators :driver, replacing the implicit delegation previously set up byextend ::Appium::Core::Device. Paves the way forruby_lib_coreto drop its static compatibility list (appium/ruby_lib_core#97).
- Add deprecated mark for start_logs_broadcast/stop_logs_broadcast to use BiDi instead
- Relaxed usable the appium_lib_core deps version to
> 11
- Update appium_lib_core deps version condition
- Use
http://127.0.0.1:4723as the default url destination instead ofhttp://127.0.0.1:4723/wd/hub--base-pathin appium server may need to drop the/wd/hubif configured
- Fix non
appcapability behavior
- Fix client side timeout in the default http client
- Bump appium_lib_core 9.2.1+ to apply the fix
- Raise defined errors instead of Ruby general errors by appium_lib's own errors
- Use appium_lib_core 9.0.0
- Bump release module (internal only)
- Breaking
- Use appium_lib_core 8.0.0 and up
- Please refer to the diff about the details.
- Remove
Appium::MultiTouchandAppium::TouchActionswipecould usemobile:swipe, or w3c actions. Multi-touch actions such as zoom/pinch can be written in w3c actions.- Please use w3c actions instead. Several resources such as test code in ruby_lib_core also would help to check the syntax.
- Use appium_lib_core 8.0.0 and up
- Use appium_lib_core 7.4.0 and up
- Removed deprecated
export_sessionandexport_session_path - Please get the session id via
driver.session_idinstead
- Removed deprecated
- Allow up to appium_lib_core 7.3
- Ruby 3.0+ is required
- Fix start_driver
- fixed the
default_waitvalue as zero (regression)set_waitwill set0if noappium_lib: {wait: 0}is not given.
- Defaults to XCUITest modulefor iOS
- Minor internal update
- Fix
appcapability handling in parsing a toml file
- Fix undefined
.warningmethod call
- Bump minimal ruby_lib_core version
- Deprecate
Appium::Driver.absolute_app_path, instead, please set properappcapability- This aims to reduce client side validation as same as other clients.
- Fixes
promote_appium_methods
- Update ruby_lib_core version from v4 to v5. The change affects this library.
- Migration from v4 to v5 in ruby_lib_core client
- Base Selenium Ruby binding is now v4
- Support only W3C WebDriver spec (and a few Appium specific commands)
- Support Ruby 2.6+
element.idreturns the element id instead ofelement.refelement.refnow returns an array
- Removed
forceMjsonwpto send only MJSONWP capabilities since Selenium cleint v4 no longer supports MJSONWP - No longer set default
timeoutsas0- ruby_lib_core will call
/timeoutsendpoint only whenappium_lib: { wait: 5 }is provided explicitly
- ruby_lib_core will call
- Raises
::Appium::Core::Error::ArgumentErrorinstead ofArgumentErrorfor this library specific argument errors
- Migration from v4 to v5 in ruby_lib_core client
TouchActionandMultiTouchare deprecated- Please use W3C actions instead https://github.com/appium/ruby_lib/blob/master/docs/w3c.md
- Other examples
launch_app,close_appandresetare deprecated. Please read issues#15807 for more details.activate_appor a new session request can be alternatives oflaunch_appterminate_appor close the session request can be alternatives ofclose_app- Close current session and creating a new session, or
terminate_appandlaunch_appcan be alternatives ofreset
- Global driver (
$driver) isfalseby default. Please providetrueasAppium::Driver.new(opts, true)to enable it as previously logged as a deprecation warning message.
Support Ruby 3
- Rename
Appium::Ios::Xcuitest::Guesture#taptoAppium::Ios::Xcuitest::Guesture#one_finger_tapto prevent conflicts withtapin Ruby
Bump supported Ruby version to 2.4+
related changes in ruby_lib_core.
- Remove auto
Pry.config.pageroff- Please turn it off if you needed. https://github.com/pry/pry/wiki/Customization-and-configuration#Config_pager
- Added
driver.log_eventto post an event - Added
driver.log_eventsto get the events
- Fix iOS
pagein native context
- Add
execute_driversupport
- Fix wrong warning message in create session
- Fix
scroll_toandscroll_to_exactfor Android #859
- Add
tvOSsupport- Requires Appium 1.13
- Breaking changes
find_element/s_by_imageno longer need arguments except for a file pathfind_element/s_by_image(file_to_image)instead offind_element/s_by_image(file_to_image, match_threshold:, visualize:)
*_exactmethods handle value as case sensitive- This might break test cases if it calls
*_exactas case insensitive
- This might break test cases if it calls
This change has a breaking change about implicit wait.
- Breaking changes
- Set implicit wait zero by default following WebDriver spec in Selenium
- The change potentially break your
find_element/s - You can wrap it with
waitmethod to avoid the error explicitly - Or you also can configure
wait: 20asappium_libcapability to keep the behaviour
- The change potentially break your
- Set implicit wait zero by default following WebDriver spec in Selenium
- [Experimental]
- Add
direct_connectcapability- How to use:
{ caps: {...}, appium_lib: { direct_connect: true }} - Read here for more details
- How to use:
- Add
- Enhance Espresso automation name adaptation
- Call
xpathlocator strategy instead ofuiautomatorlocator strategy in various wrapper methods liketext/s,button/s, etc - #884
- Call
- Add
actionwrapping ruby_lib_core for W3C actions- Returns
TouchAction.newif the driver works as MJSONWP
- Returns
:offset_xand:offset_yinTouchAction#swipeis deprecated in favor of:end_xand:end_y- [internal] Remove
check_server_version_xcuitest
- Fix failing Appium version comparison #836
- Introduce
appium_thorin order to automate release
:appcan be non-path capability like Windows{ caps: { platformName: :windows, app: 'Microsoft.WindowsCalculator_8wekyb3d8bbwe!App' } } # `:app` is bundle id. { caps: { platformName: :windows, app: 'relative/path/to/app' } } # `:app` will be alsolute path to the `:app` if the path exists
- Wrap selenium-webdriver apis via
Appium::Driverthrough Appium Core Bridge #827
- [Internal] Use ruby_lib_core 2.0
- The change shouldn't affect this version since the change influence
Core.new.
- The change shouldn't affect this version since the change influence
- Requires
appium_lib_core1.9.0+- Requires
selenium-webdriver 3.14+ - Support
find_element :image, imageappium-base-driver#235- Requires Appium1.8.2
- Read changelog for more details
- Requires
- Add
distanceoption inscrollfor XCUITest #805. Thanks @saim80
- Add Tizen
- Use ruby_lib_core 1.8.0
- add
mobile: installCertificateshortcut for XCUITest - add
mobile: getContextsshortcut for XCUITest - Add
find_element_by_imageandfind_elements_by_imageto handleImageElement
- Fix an initialisation error for iOS with
appium_lib_core 1.7.0#785
- Breaking changes for
press_keycodeandlong_press_keycode
- Requires
appium_lib_core1.6.0+- Breaking change for
app_state: https://github.com/appium/ruby_lib_core/blob/master/CHANGELOG.md#160---2018-05-08
- Breaking change for
- Support
start_logs_broadcastandstop_logs_broadcastfor iOS
- Back compatible for
wait(number) {}andwait_true(number) {}
- Changed the name of arguments
swipe(start_x:, start_y:, end_x:, end_y:)instead ofswipe(start_x:, start_y:, offset_x:, offset_y:)
- Apply
ruby_lib_core ~> 1.4.2- Support image comparison features
- Fix
waitcompatibility forruby_lib_core ~> 1.4.1
- Add
start_logs_broadcastandstop_logs_broadcastwhich use WebSocket to get logcat.
- Some changes for Appium 1.8.0
- Fix Security Vulnerability(Nokogiri)#761
- fix
Minitest's revert: URL
- Bump the core library to 1.3.0
- The change have one breaking change for
start_recording_screen(Android)
- The change have one breaking change for
- Fix Bug: NameError: uninitialized constant Minitest::VERSION #750
- Fix
TypeError: superclass mismatch for class Testfor minitest5.11.0+ PR
- Bump the core library to 1.2.5
- The changelog is here
- add
shellcommand wrappedmobile: shellfor Android #732 - add handling multiple apps for iOS #729
- Adapt W3C commands and make sure to work Appium 1.7.2+
- Which module, msjsonwp or w3c, used depends on server side's response.
- Fix creating session for the new W3C createSession
- Add start/stop recording screen #674
- replace core directory to core library #665, #718
- No change for users
ap_prefixed loggingsource_window: useget_sourceinsteadios_version: useplatform_versioninsteadcurrent_app: usecurrent_activity, for example to know current app.
- Add unlock command: PR
- Be able to call
sourcecommand from anyautomationName
- Get source from XCUITest with
xcuitest_source format: :json :espressosupport
- Raise error if capability is wrong
Bug: NoMethodError: undefined method 'write_session_id' for #<Appium::Core::Driver:0x00007fa69119ce88>#686- undefined local variable or method `patch_webdriver_element' #687
Hot-fix for v9.7.0: uninitialized constant Appium::VERSION #680
v9.7.0 has a bunch of refactoring but the behaviours must be the same as well as previous versions. I've checked the behaviour and confirmed test cases in this repository. So, please create issues if you have any issues against this version.
- Refactoring
lib/appium_lib # root directory
/core # Minumul driver files for the Appium server and dependencies for Selenium Driver.
/common # Appium related(some methods to make ruby_lib useful)
/android # for Android
/ios # for iOS
- The
coredirectory will separate as the other gem in separate core as core ruby gem #665 - Logs
get_available_log_types: To get a list of available log typesget_log(type): To get logs associated withtype
- refactor: Reduce patch_webdriver_element and some DEPRECATIONs #663
- Remove deprecated methods:
- Android
client_xpath/client_xpaths- Please use
xpathorfind_element/s(:xpath, "xpaths")
- Please use
- iOS
get_page- Please use
sourceinstead
- Please use
- Android
- Deprecated
- iOS
ios_version,source_window,page_window- Please use
sourceinstead
- Please use
- iOS
- Remove deprecated methods:
- Refactor
XCUItestfor iOS anduiautomator2for Android a bit
- missing extending
buttonmethods foruiautomator2, Android
- Reduce Global Driver
- We'll stop defining global scope driver by default. So, if you'd like to continue to define global scope, please call
start_driveras the following.Appium::Driver.new(opts, true).start_driver # $driver is defined. Appium::Driver.new(opts, false).start_driver # $driver isn't defined.
- We need to provide
driverto workTouchActionandMultiActionwithout global driver-
TouchActiondriver = Appium::Driver.new(opts, false).start_driver action = TouchAction.new.press(x: 45, y: 100).wait(5).release action.perform(driver) action = TouchAction.new.swipe(....) action.perform(driver)
-
MultiActiondriver = Appium::Driver.new(opts, false).start_driver pinch 200, true, driver
-
- We'll stop defining global scope driver by default. So, if you'd like to continue to define global scope, please call
- Add example to run multiple iOS Simulators doc
- Require Xcode 9 and Appium 1.6.6
scroll_tois failed on some Android 5.0 and 5.1 devices
- Fixing
acroll_to - Add alias
quit_driver
- Support
selenium-webdriver3.4.1+- Support new
createSession
- Support new
- Drop
selenium-webdriver3.0 ~ 3.4.0since some methods depends onselenium-webdriver3.4.1+
- some refactoring
- add some documentations
- fix handling a tap gesture in xcuitest #611
- within_context swallowing block return value #311
- get current_package for Android #604
- Show visibility on iOS page command #609
- related: allow showing all elements on ios page command #310
- fix raise 500 error by
driver.remote_statusinappium_server_version#599
- reduce gemfile size #591
- Exclude
ios_tests,android_testsandgridfrom gem
- Exclude
- add
touch_and_holsformobile:command in XCUITest #581 - Driver disables Pry pager without asking #582
- add grid environments in this repository.
- add mobile gesture,
mobile: alert - add travis example for ios #573
- remove some redundant code #572, #571
- update api-demos #569
- Use uiautomator for uiautomator2 #561
- improve stability for some methods
- don't use selenium-webdriver 3.5+ #559
- Auto link bug # from release notes #239
- Thanks for checking uiautomator2
- fix drag_from_to_for_duration gets server error #552
- fix 9.4.0 release sudden failures #546
- XPath strategy for find_element/s sudden fail than uiautomator strategy.
- Use
:xpathstrategy only for uiautomator2
- update mobile gesture APIs for XCUITest(WDA) #514
- For XCUITest(WebDriverAgent)
- Users can call some
mobile:methods withoutexecute_script('mobile: tap', args). - Users can write test code without
.refmethod for elements inexecute_script. - Example: #537
- Support UIAutomator2 strategy for Android#505
- Fix some find elemenet methods#544
- allow using TestObject server #538
- Remove appium suffix from find element #532
- rename
@driver.find_element/s_with_appiumto@driver.find_element/s
- rename
- fix documentations
@driver.find_element/s_with_appium- use
@driver.find_element/sinstead
- use
- Add toggle touch id enrollment #521
- add some commands for Android and class chain for iOS #513
- iOS
find_element :class_chain, 'XCUIElementTypeWindow/*/*/XCUIElementTypeStaticText'
- Android
get_system_barsget_display_densityis_keyboard_shown
- iOS
- add scrollable index parameter into scroll methods #506
scroll_to(text, scrollable_index = 0)scroll_to_exact(text, scrollable_index = 0)
- clear
@actionsin Appium::TouchAction ifperformis called #511
- remove workaround to pass CI
- document uiautomator events logging command #319
- use predicate for XCUITest to improve performance #493
text/s,button/s,textfield/s,tags_exact,tags_include- new:
find_ele/s_by_predicate,find_ele/s_by_predicate_include
- add tags_include/tags_exact to be able to find elements of arbitrary classes such as XCUIElementTypeTextView #488
- allow SAUCE_ENDPOINT env var to override sauce server url/path #485
- Read readme's
SAUCE_ENDPOINTsection.
- Read readme's
- Fix missed var rename #481
- wait / wait_true need global defaults #250
- You can set default value in
appium_lib - e.g.: lib/appium_lib/driver.rb
- You can set default value in
- Problem with delta_x/delta_y in swipe method #461
- Revert fix arguments for
move_toinswipemethod. in Appium v8.2.1 delta_x/delta_yreplace tooffset_*for iOS- e.g.:
swipe start_x: start_x, start_y: start_y, end_offset_x: 0, offset_y: -100
- e.g.:
delta_x/delta_yreplace toend_*for Android- e.g.:
swipe start_x: start_x, start_y: start_y, end_x: start_x, end_y: start_y - 100
- e.g.:
- The reason why there are two kind of arguments is the following issue.
- Revert fix arguments for
- Clarify disabling Sauce Labs. #471
- update documentations
- REQUIRED_VERSION_XCUITEST #463
- find elements except for name attributes in text/s, button/s #462
- Return only visible elements
- Previously, these methods return all elements.
- Return only visible elements
- Problem with delta_x/delta_y in swipe method #461
delta_x/delta_yare replaced tooffset_*for iOS andend_*for Android.
- update set_wait / no_wait logic #249
no_waitjust setimplicit_wait = 0set_waitjust set@default_waitor arbitrary time asimplicit_wait- remove
last_waitsattribute
- automationName always nil if set automationName in server side #450
Support selenium-webdriver 3.0.4+
- Improve performance for button/s and text/s #442
- Should use
open_timeoutorread_timeoutinstead oftimeout#436 - add documentation for alternative long_press method #440
- add
appium_client_version: #260 - add some tests and fix some rubocop syntax errors
- fix
set_immediate_value: #263
- fix Finds exact in ios does not return an array #423
Thanks @slipy12
- update dependencies
- Support selenium-webdriver 3.0.2+
- If you'd like to use
selenium-webdriver2.x, please useappium_lib9.0.0
- If you'd like to use
- Support selenium-webdriver 3.0.2+
- Drop Ruby 1.9.3, 2.0, 2.1 support
- Because these ruby versions have already stop updating.
- Support
XCUITeststrategy for iOS- Basically,
XCUITeststrategy is compatible withAppiumstrategy in this library. - But users who use XPath should be check this document since XPath has performance issue
- Users who use
find_element/sshould work fine. - tests for elements are here
- Users who use
- Basically,
Special thanks to @montdidier
- fix arguments for
move_toinswipemethod.- #405
- Please set
:delta_xand:delta_yas the distance from start to move.