Commit based release not is release_notes.md
Release tags are https://github.com/appium/ruby_lib/releases .
- Fix non
app
capability 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::MultiTouch
andAppium::TouchAction
swipe
could 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_session
andexport_session_path
- Please get the session id via
driver.session_id
instead
- Removed deprecated
- Allow up to appium_lib_core 7.3
- Ruby 3.0+ is required
- Fix start_driver
- fixed the
default_wait
value as zero (regression)set_wait
will set0
if noappium_lib: {wait: 0}
is not given.
- Defaults to XCUITest modulefor iOS
- Minor internal update
- Fix
app
capability handling in parsing a toml file
- Fix undefined
.warning
method call
- Bump minimal ruby_lib_core version
- Deprecate
Appium::Driver.absolute_app_path
, instead, please set properapp
capability- 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.id
returns the element id instead ofelement.ref
element.ref
now returns an array
- Removed
forceMjsonwp
to send only MJSONWP capabilities since Selenium cleint v4 no longer supports MJSONWP - No longer set default
timeouts
as0
- ruby_lib_core will call
/timeouts
endpoint only whenappium_lib: { wait: 5 }
is provided explicitly
- ruby_lib_core will call
- Raises
::Appium::Core::Error::ArgumentError
instead ofArgumentError
for this library specific argument errors
- Migration from v4 to v5 in ruby_lib_core client
TouchAction
andMultiTouch
are deprecated- Please use W3C actions instead https://github.com/appium/ruby_lib/blob/master/docs/w3c.md
- Other examples
launch_app
,close_app
andreset
are deprecated. Please read issues#15807 for more details.activate_app
or a new session request can be alternatives oflaunch_app
terminate_app
or close the session request can be alternatives ofclose_app
- Close current session and creating a new session, or
terminate_app
andlaunch_app
can be alternatives ofreset
- Global driver (
$driver
) isfalse
by default. Please providetrue
asAppium::Driver.new(opts, true)
to enable it as previously logged as a deprecation warning message.
Support Ruby 3
- Rename
Appium::Ios::Xcuitest::Guesture#tap
toAppium::Ios::Xcuitest::Guesture#one_finger_tap
to prevent conflicts withtap
in Ruby
Bump supported Ruby version to 2.4+
related changes in ruby_lib_core.
- Remove auto
Pry.config.pager
off- Please turn it off if you needed. https://github.com/pry/pry/wiki/Customization-and-configuration#Config_pager
- Added
driver.log_event
to post an event - Added
driver.log_events
to get the events
- Fix iOS
page
in native context
- Add
execute_driver
support
- Fix wrong warning message in create session
- Fix
scroll_to
andscroll_to_exact
for Android #859
- Add
tvOS
support- Requires Appium 1.13
- Breaking changes
find_element/s_by_image
no 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:)
*_exact
methods handle value as case sensitive- This might break test cases if it calls
*_exact
as 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
wait
method to avoid the error explicitly - Or you also can configure
wait: 20
asappium_lib
capability to keep the behaviour
- The change potentially break your
- Set implicit wait zero by default following WebDriver spec in Selenium
- [Experimental]
- Add
direct_connect
capability- How to use:
{ caps: {...}, appium_lib: { direct_connect: true }}
- Read here for more details
- How to use:
- Add
- Enhance Espresso automation name adaptation
- Call
xpath
locator strategy instead ofuiautomator
locator strategy in various wrapper methods liketext/s
,button/s
, etc - #884
- Call
- Add
action
wrapping ruby_lib_core for W3C actions- Returns
TouchAction.new
if the driver works as MJSONWP
- Returns
:offset_x
and:offset_y
inTouchAction#swipe
is deprecated in favor of:end_x
and:end_y
- [internal] Remove
check_server_version_xcuitest
- Fix failing Appium version comparison #836
- Introduce
appium_thor
in order to automate release
:app
can 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::Driver
through 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_core
1.9.0+- Requires
selenium-webdriver 3.14+
- Support
find_element :image, image
appium-base-driver#235- Requires Appium1.8.2
- Read changelog for more details
- Requires
- Add
distance
option inscroll
for XCUITest #805. Thanks @saim80
- Add Tizen
- Use ruby_lib_core 1.8.0
- add
mobile: installCertificate
shortcut for XCUITest - add
mobile: getContexts
shortcut for XCUITest - Add
find_element_by_image
andfind_elements_by_image
to handleImageElement
- Fix an initialisation error for iOS with
appium_lib_core 1.7.0
#785
- Breaking changes for
press_keycode
andlong_press_keycode
- Requires
appium_lib_core
1.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_broadcast
andstop_logs_broadcast
for 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
wait
compatibility forruby_lib_core ~> 1.4.1
- Add
start_logs_broadcast
andstop_logs_broadcast
which 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 Test
for minitest5.11.0
+ PR
- Bump the core library to 1.2.5
- The changelog is here
- add
shell
command wrappedmobile: shell
for 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_source
insteadios_version
: useplatform_version
insteadcurrent_app
: usecurrent_activity
, for example to know current app.
- Add unlock command: PR
- Be able to call
source
command from anyautomationName
- Get source from XCUITest with
xcuitest_source format: :json
:espresso
support
- 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
core
directory 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
xpath
orfind_element/s(:xpath, "xpaths")
- Please use
- iOS
get_page
- Please use
source
instead
- Please use
- Android
- Deprecated
- iOS
ios_version
,source_window
,page_window
- Please use
source
instead
- Please use
- iOS
- Remove deprecated methods:
- Refactor
XCUItest
for iOS anduiautomator2
for Android a bit
- missing extending
button
methods 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_driver
as 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
driver
to workTouchAction
andMultiAction
without global driver-
TouchAction
driver = 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)
-
MultiAction
driver = 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_to
is 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-webdriver
3.0 ~ 3.4.0
since 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_status
inappium_server_version
#599
- reduce gemfile size #591
- Exclude
ios_tests
,android_tests
andgrid
from gem
- Exclude
- add
touch_and_hols
formobile:
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
:xpath
strategy 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
.ref
method 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_appium
to@driver.find_element/s
- rename
- fix documentations
@driver.find_element/s_with_appium
- use
@driver.find_element/s
instead
- 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_bars
get_display_density
is_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
@actions
in Appium::TouchAction ifperform
is 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_ENDPOINT
section.
- Read readme's
- Clarify disabling Sauce Labs. #471
- add getting performance #479
- require [email protected]
- 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_to
inswipe
method. in Appium v8.2.1 delta_x/delta_y
replace 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_y
replace 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_y
are replaced tooffset_*
for iOS andend_*
for Android.
- update set_wait / no_wait logic #249
no_wait
just setimplicit_wait = 0
set_wait
just set@default_wait
or arbitrary time asimplicit_wait
- remove
last_waits
attribute
- 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_timeout
orread_timeout
instead 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
XCUITest
strategy for iOS- Basically,
XCUITest
strategy is compatible withAppium
strategy in this library. - But users who use XPath should be check this document since XPath has performance issue
- Users who use
find_element/s
should work fine. - tests for elements are here
- Users who use
- Basically,
Special thanks to @montdidier
- fix arguments for
move_to
inswipe
method.- #405
- Please set
:delta_x
and:delta_y
as the distance from start to move.