Skip to content

Latest commit

 

History

History
728 lines (543 loc) · 27 KB

CHANGELOG.md

File metadata and controls

728 lines (543 loc) · 27 KB

Changelog

All notable changes to this project will be documented in this file. Read release_notes.md for commit level details.

[Unreleased]

Enhancements

Bug fixes

Deprecations

[5.2.2] - 2022-06-26

Enhancements

  • Relax the selenium webdriver version restriction of 4.2.0

Bug fixes

  • Remove undefined module in selenium webdriver version 4.3.0

[5.2.1] - 2022-06-24

Bug fixes

  • Restrict the selenium webdriver version to 4.2.0

[5.2.0] - 2022-06-19

Enhancements

  • Update base Selenium Ruby client to 4.2+
    • Please call key_action or set [::Selenium::WebDriver::Interactions.key('keyboard')] as the deviecs parameter to build driver.send_keys().perform W3C action.
      • driver.key_action.send_keys('xxx').perform instead of driver.action.send_keys('xxx').perform, or driver.action(devices: [::Selenium::WebDriver::Interactions.key('keyboard')]).send_keys('xxx').perform.
      • This PR change will help to update your some actions.

[5.1.2] - 2022-06-02

Enhancements

  • Limit selenium webdriver version less than 4.2

[5.1.1] - 2022-04-18

Enhancements

  • Remove unneccessry files from gem package to reduce the size.

[5.1.0] - 2021-12-25

Enhancements

  • Make default pointerType touch for the pointer in W3C actions instead of mouse for Appium
    • This change should not affect W3C actions

[5.0.3] - 2021-12-13

Enhancements

  • Can add more arguments in install_app
    • e.g. Add timeoutMs for XCUITest driver as @driver.install_app("/path/to/test.ipa", timeoutMs: 20000)

Bug fixes

  • (internal) Allow to access to bridge attribute in driver instance for appium_flutter_finder

[5.0.2] - 2021-12-01

Bug fixes

  • (internal) Fix firstMatch format in a new session creation

[5.0.1] - 2021-11-23

Enhancements

  • Relaxed version restriction of selenium-webdriver

[5.0.0] - 2021-11-05

Enhancements

  • Update base selenium webdriver version to v4
    • Base Selenium Ruby binding is now v4
    • Support only W3C WebDriver spec (and a few Appium specific commands)
    • Support Ruby 2.6+
  • Add driver#wait, driver#wait_until, driver#wait_true, driver#wait_until_true syntaxes
    • Can give driver instance as its block variable
  • element.id returns the element id instead of element.ref.
    • element.ref now returns an array.
  • Removed desired_capabilities as capabilities for Appium::Core#for. Please use capabilities key name instead.
    • e.g. Appium::Core.for capabilities: {...} instead of Appium::Core.for desired_capabilities: {...}
  • Removed methods that had Deprecated mark
    • Removed driver#screenshot. Please use driver#save_screenshot instead
    • Removed driver#send_keys to send keys to an active element. Please use driver.action.send_keys('happy testing').perform instead
    • Removed forceMjsonwp to send only MJSONWP capabilities since Selenium cleint v4 no longer supports MJSONWP
  • No longer set default timeouts as 0
    • ruby_lib_core calls /timeouts endpoint only when appium_lib: { wait: 5 } is provided explicitly
  • Raises ::Appium::Core::Error::ArgumentError instead of ArgumentError for this library specific argument errors
  • Removed Selendroid related methods

Deprecations

[4.7.1] - 2021-09-26

Enhancements

  • Allow to override an existing method by Appium::Core::Base::Driver#add_command since Appium drivers/plugins allow to override them

[4.7.0] - 2021-07-17

Enhancements

  • Add satellites option in Appium::Core::Base::Driver#set_location

[4.6.0] - 2021-06-03

Enhancements

  • Add Appium::Core::Base::Driver#add_command to allow you to add your own command

[4.5.0] - 2021-03-14

Enhancements

  • Add speed argument for Appium::Core::Base::Driver#set_location since Appium 1.21.0
  • Add multiple and match_neighbour_threshold arguments for Appium::Core::Base::Driver#find_image_occurrence

[4.4.1(4.4.0)] - 2021-02-15(2021-02-13)

Enhancements

  • Returns {} any errors in Core#appium_server_version to prevent errors in some cases

[4.3.1(4.3.0)] - 2021-02-07(2021-02-05)

Enhancements

  • Add start_recording_screen for Mac2 driver

[4.2.1] - 2021-01-10

Enhancements

  • Refactor routable

[4.2.0] - 2021-01-02

Enhancements

  • Add Element#screenshot, Element#screenshot_as and Element#save_screenshot in Element module
    • Element#screenshot_as and Element#save_screenshot are same as Driver#element_screenshot_as and Driver#save_element_screenshot
    • Element#screenshot is same as Element#screenshot_as(:base64)

[4.1.1] - 2020-12-25

Enhancements

  • Ruby 3.0 support
    • Arguments in @driver.execute_cdp
      • It should be like @driver.execute_cdp 'Page.captureScreenshot', quality: 50, format: 'jpeg' as keyword arguments instead of @driver.execute_cdp 'Page.captureScreenshot', { quality: 50, format: 'jpeg' } in Ruby 3

[4.0.0] - 2020-12-19

Supported Ruby version is 2.4+

Deprecations

  • No longer work with forceMjsonwp capability to force the session MJSONWP

[3.11.1] - 2020-11-20

Bug fixes

  • Fix install_app to be able to set no args for options

[3.11.0] - 2020-08-01

Enhancements

[3.10.1] - 2020-06-29

Bug fixes

  • Fix duplication warning of execute_cdp

[3.10.0] - 2020-06-09

Enhancements

  • Remove deprecated Selenium::WebDriver::Error::TimeOutError

[3.9.0] - 2020-05-31

Enhancements

  • capabilities: is available in addition to desired_capabilities: and caps: as a capability
    # case 1
    opts = { caps: { }, appium_lib: { } }
    @driver = Appium::Core.for(opts).start_driver
    
    # case 2
    opts = { capabilities: { }, appium_lib: { } }
    @driver = Appium::Core.for(opts).start_driver
    
    # case 3
    opts = { desired_capabilities: { }, appium_lib: { } }
    @driver = Appium::Core.for(opts).start_driver

[3.8.0] - 2020-05-17

Enhancements

  • Add options for start_recording_screen
    • file_field_name, form_fields and headers are available since Appium 1.18.0

Bug fixes

  • Fix x-idempotency-key header to add it only in new session request (appium#262)

[3.7.0] - 2020-04-18

Enhancements

  • Add x-idempotency-key header support (appium/appium-base-driver#400)
    • Can disable the header with enable_idempotency_header: false in appium_lib capability. Defaults to true.
  • Add chrome devtools endpoint which is available chrome module in Selenium Ruby binding

[3.6.1, 3.6.0] - 2020-03-15

Enhancements

[3.5.0] - 2020-01-11

Enhancements

  • Add :viewmatcher selector like @driver.find_elements :view_matcher, { name: 'withText', args: %w(Accessibility), class: 'androidx.test.espresso.matcher.ViewMatchers' }

[3.4.2] - 2019-12-29

Enhancements

[3.4.0, 3.4.1] - 2019-12-26, 2019-12-27

Enhancements

  • Fix Ruby 2.7 warnings

[3.3.0] - 2019-11-08

Enhancements

  • Add Logs#event to post a custom log by @driver.logs.event vendor: 'appium', event: 'funEvent'
  • Add Logs#events to get events by @driver.logs.events. It is equal to @driver.session_capabilities['events']

[3.2.3] - 2019-09-30

Enhancements

  • Add system_bars as an alias to get_system_bars

[3.2.2] - 2019-08-04

Bug fixes

  • Fixed parameters of remove_app

[3.2.1] - 2019-07-19

Enhancements

  • Add video_filters argument for start_recording_screen iOS
    • It is available over Appium 1.15.0

Bug fixes

  • Fix wrong warning message in driver detection

Deprecations

  • Driver#set_immediate_value(element, *value)
    • Use Element#immediate_value(*value) instead
  • Driver#replace_value(element, *value)
    • Use Element#replace_value(*value) instead

[3.2.0] - 2019-06-27

Enhancements

  • Add execute_driver to run a batch script
    • It requires Appium version which has execute_driver support

[3.1.3] - 2019-06-18

Enhancements

  • Add arguments for start_activity
    • intentAction, intentCategory, intentFlags, dontStopAppOnReset

[3.1.2] - 2019-05-10

Enhancements

  • Add sessions command to get all available sessions on the Appium server
  • [internal] Tweak error messages in emulator module

[3.1.1] - 2019-04-26

Enhancements

  • [internal] Catch Selenium::WebDriver::Error::TimeoutError which will be used instead of Selenium::WebDriver::Error::TimeOutError

[3.1.0] - 2019-03-31

Enhancements

  • tvOS platform support
    • platformName: :tvos, automationName: :xcuitest can work for iOS tvOS
    • It requires Appium 1.13

[3.0.4] - 2019-03-24

Enhancements

  • Add pixelFormat argument in screen record for iOS

[3.0.3] - 2019-03-11

Enhancements

  • [internal] Bump Rubocop target Ruby version to Ruby 2.3

[3.0.2] - 2019-03-07

Enhancements

  • Append more examples for use case in test/functional as functional test cases

Bug fixes

[3.0.1] - 2019-02-25

Enhancements

[3.0.0] - 2019-02-06

This release has a breaking change about an implicit wait. Ruby client sets 0 seconds as implicit wait by default instead of 20 seconds. The behaviour follows the default spec in WebDriver.

Enhancements

  • Breaking changes
    • Set implicit wait zero by default #186
      • Can configure wait: 20 as appium_lib capability to keep the behaviour
  • [Experimental] Add direct_connect capability for the Ruby client in order to handle directConnect capability in a create session response by Appium server #189
    • Update http client following directConnectProtocol, directConnectHost, directConnectPort and directConnectPath if direct_connect capability for ruby_lib_core is true
    • This will resolve a performance issue if a user has a proxy server to handle requests from client to Appium server. With this feature, the user can send requests directly to the Appium server after create session skipping the proxy server.
      # create session
      client <---> proxy server <---> appium server <> devices
      # Following requests after the create session
      client <----------------------> appium server <> devices
      

Bug fixes

  • Fix potential override of AppManagement#background_app #188

[2.3.4] - 2019-01-31

Enhancements

Bug fixes

  • Stop sending blank value in start_activity

[2.3.3] - 2019-01-22

Bug fixes

  • Add *args, &block in method missing in Selenium::WebDriver::Element #184

[2.3.2] - 2019-01-20

Enhancements

  • Add alias for some method calls
    1. IME: e.g. @driver.ime.activate in addition to @driver.ime_activate rubydoc
    2. Settings: e.g. @driver.settings = { ... } and @driver.settings.update(...) in addition to @driver.update_settings(...) rubydoc
    3. Locked: @driver.locked? in addition to @driver.device_locked?

Bug fixes

  • ServerError inherits CoreError in order to handle it as an exception

[2.3.1] - 2019-01-13

Enhancements

  • set_network_connection accepts keys as same as network_connection_type in addition to numbers
    • { :airplane_mode: 1, wifi: 2, data: 4, all: 6, none: 0 }
    • Read documentation more

[2.3.0] - 2019-01-07

Enhancements

  • Use Base64.strict_encode64 when this client sends Base64 encoded data to server
    • Follows RFC 4648 format. It should not affect server side which is front Appium node server
    • Continues to decode base 64 data following decode64 to accept RFC 2045 format
  • Add query_app_state as an alias of app_state to get application status

[2.2.2] - 2018-12-22

Enhancements

  • Append appium in header: appium/ruby_lib_core/2.2.1 (selenium/3.141.0 (ruby macosx))

[2.2.1] - 2018-12-08

Bug fixes

  • Reduce warnings for method definitions

[2.2.0] - 2018-12-01

Enhancements

  • Add ::Appium::Core::Base.platform to call ::Selenium::WebDriver::Platform
    • Can identify platform using ::Appium::Core::Base.platform.windows? for example

Deprecations

  • :offset_x and :offset_y in TouchAction#swipe is deprecated in favor of :end_x and :end_y

[2.1.1] - 2018-11-23

Enhancements

  • desired_capabilities: is available in addition to caps: as a capability
    # case 1
    opts = { caps: { }, appium_lib: { } }
    @driver = Appium::Core.for(opts).start_driver
    
    # case 2
    opts = { desired_capabilities: { }, appium_lib: { } }
    @driver = Appium::Core.for(opts).start_driver
  • Update start_recording_screen for iOS, Appium 1.10.0
    • Add :video_scale and update :video_type

[2.1.0] - 2018-11-14

Enhancements

  • Support below style 1, has url parameter, in addition to style 2
    # 1
    Appium::Core.for url: "http://127.0.0.1:8080/wd/hub", caps: {...}, appium_lib: {...}
    
    # 2
    Appium::Core.for caps: {...}, appium_lib: {...}
    
  • Add :video_fps param for screen recording in iOS(XCUITest) to sync with Appium 1.10.0

[2.0.6] - 2018-11-08

Enhancements

  • Allow selenium update following Pi versioning like 3.141.0
  • [internal] Update dev libraries

[2.0.5] - 2018-10-30

Enhancements

  • [internal] No longer send strategy: :tapOutside as default value in Android

[2.0.4] - 2018-10-19

Enhancements

[2.0.3] - 2018-10-11

Enhancements

  • Set 'selenium-webdriver', '~> 3.14.1'

[2.0.2] - 2018-10-02

Enhancements

  • Add finger print feature for Android emulators #13
  • Add keyboard_shown? and context= as aliases of is_keyboard_shown and set_contex

[2.0.1] - 2018-09-01

Enhancements

  • Add Appium::Core::Base::Driver#perform_actions to send multiple actions. See test_multiple_actions as an example.

Bug fixes

  • Fix desired capability for W3C protocol under selenium grid environment #137

[2.0.0] - 2018-08-25

This release has a breaking change for creating core. Thus, I've bumped the major version.

Enhancements

  • use autoload to load Android/iOS modules

Deprecations

  • @core = Appium::Core.for(self, opts) is deprecated in favor of @core = Appium::Core.for(opts)
    • Call extend Appium::Core::Device if you'd like to extend methods defined in Appium::Core
      • Read #816 as an example

[1.9.2] - 2018-08-23

Bug fixes

  • fix unexpected method missing against :to_hash in Element

[1.9.1] - 2018-08-20

Enhancements

Bug fixes

  • [internal] Fix raising error in set_implicit_wait_by_default #130

[1.9.0] - 2018-08-05

Enhancements

  • Update documentation about start_recording_screen
  • Port send_keys/type for active element #122
  • Support find_element/s :image, partial_image #119
  • Requires selenium-webdriver 3.14+ because of W3C actions #115

Deprecations

  • [Internal] Deprecate experimental ImageElement in favor of Element

[1.8.4] - 2018-07-28

Enhancements

  • silence warning for pointeractions #113
  • Use method missing to get attributes like e.resource_id instead of e.attribute 'resource-id' #116
  • Set '~> 3.5', '< 3.14'

[1.8.3] - 2018-07-20

Enhancements

  • Relax the logic of :app capability

Bug fixes

  • Fix within_context

[1.8.2] - 2018-07-17

Bug fixes

  • Available packages over HTTP #106

Deprecations

  • Remove warning of camelCase capability for W3C format

[1.8.1] - 2018-07-13

Bug fixes

  • Fix including search context in ::Selenium::WebDriver::Elemenet
    • include ::Appium::Core::Base::SearchContext instead of ::Selenium::WebDriver::SearchContext

[1.8.0] - 2018-07-07

Enhancements

  • Add Tizen case
  • [Internal] reduce method definition by add_endpoint_method

[1.7.2] - 2018-06-23

Enhancements

  • Add find_element_by_image and find_elements_by_image to handle ImageElement
    • Read here for more details
  • Add a ImageElement to handle images as elements by matchTemplate
    • Experimental feature
  • [Internal] Define screenshot methods in appium_lib_core instead of Selenium's one

[1.7.1] - 2018-06-15

Enhancements

  • Add a format argument for device_time #94

Bug fixes

  • Return empty array [] for find_elements

[1.7.0] - 2018-05-28

Enhancements

  • Has one Breaking Change
    • Add flags in press_keycode and long_press_keycode
      • New: @driver.press_keycode 66, metastate: [1], flags: [0x20, 0x2000]
        • metastate should set as a keyword argument
        • long_press_keycode as well
      • Before: @driver.press_keycode 66, 1 (Can set only metastate)
        • How to change: add metastate: for the metastate argument
  • [Internal] Change directory and file structure
  • [Internal] Set default content-type

[1.6.0] - 2018-05-08

Enhancements

  • Breaking Change
    • Change the results of app_state.
      • Before: A number or const.
        • 0, 1, 2, 3, 4 or NOT_INSTALLED, NOT_RUNNING, RUNNING_IN_BACKGROUND_SUSPENDED, RUNNING_IN_BACKGROUND, RUNNING_IN_FOREGROUND
      • After: Symbol.
        • :not_installed, :not_running, :running_in_background_suspended, :running_in_background, :running_in_foreground
  • add battery_info to get battery information
  • add is_keyboard_shown for iOS ( see also https://github.com/appium/appium-xcuitest-driver/pull/664/files )

[1.5.1] - 2018-04-25

Bug fixes

  • Revert timeout logic in 1.4.1

[1.5.0] - 2018-04-25

Enhancements

  • [internal] Remove hot fix for XCUITest action

Deprecations

  • Changed the name of arguments
    • swipe(start_x:, start_y:, end_x:, end_y:) instead of swipe(start_x:, start_y:, offset_x:, offset_y:)

[1.4.2] - 2018-04-22

Bug fixes

  • Revert delegate_from_appium_driver for ruby_lib compatibility

[1.4.1] - 2018-04-22

Enhancements

  • add base image comparison
    • match_images_features, find_image_occurrence, get_images_similarity, compare_images
  • [internal] No longer have dependency for Selenium's wait
    • Raise ::Appium::Core::Wait::TimeoutError instead of ::Selenium::WebDriver::Error::TimeOutError
  • [internal] Separate mjsonwp commands module and w3c commands module from one command module

[1.4.0] - 2018-04-15

Enhancements

  • Add a support for WebSocket client based on Faye::WebSocket::Client #74

[1.3.8] - 2018-04-12

Enhancements

  • Make no-argument commands friendly for IDE

[1.3.7] - 2018-04-02

Enhancements

  • Only for ruby_lib_core internal process
    • Remove touch action by default and following selenium-webdriver in W3C action.
      • Since XCUITest and UA2 drivers force handling the pointer as touch.

[1.3.6] - 2018-04-01

Enhancements

[1.3.5] - 2018-03-30

Enhancements

  • Add a bug_report option in start_recording_screen, Android
  • Add clipboard apis #69

[1.3.4] - 2018-03-21

Enhancements

Bug fixes

  • Fix create_session attempt to throw non-existent error type Appium::Core::Error::WebDriverError #66

[1.3.3] - 2018-03-03

Enhancements

[1.3.2] - 2018-02-18

Enhancements

  • Add Android emulator commands
    • send_sms, gsm_call, gsm_signal, gsm_voice, set_network_speed, set_power_capacity, set_power_ac
  • Add toggles
    • toggle_location_services, toggle_wifi, toggle_data

[1.3.1] - 2018-02-14

Enhancements

  • add some app management commands #58
    • Require Appium 1.8.0+
  • Both platforms work absolute based axis for move_to and swipe
    • Breaking Changes
      • Android was relevant, previously.
      • e.g.:
        # Do not move because of the start and end point is the same
        # Tap (75, 500) and move the point to (75, 500) with duration 500ms.
        Appium::Core::TouchAction.new(@driver)
          .swipe(start_x: 75, start_y: 500, offset_x: 75, offset_y: 500, duration: 500)
          .perform
        
        # Tap (75, 500) and move the point to (75, 1000) with duration 500ms.
        Appium::Core::TouchAction.new(@driver)
          .swipe(start_x: 75, start_y: 500, offset_x: 75, offset_y: 1000, duration: 500)
          .perform

[1.3.0] - 2018-01-28

Enhancements

  • start_recording_screen/stop_recording_screen support iOS from Appium 1.8.0 #48
    • Breaking Changes
      • start_recording_screen
        • The argument, file_path, was removed.

[1.2.7] - 2018-01-25

Enhancements

  • Print warning messages to use camelCase if capability key names are snake_case
    • For W3C adaption for Appium Server

Bug fixes

  • Make @driver.automation_name downcase #50

[1.2.6] - 2018-01-21

Enhancements

  • Add window_rect

Bug fixes

  • Make @driver.automation_name symbol when someone define the automationName with the server argument. #50

[1.2.5] - 2018-01-13

Enhancements

  • Enhance W3C support
    • Timeout related methods

[1.2.4] - 2018-01-03

Enhancements

  • Refactor create_session in Appium::Core::Base::Bridge
  • Be able to communicate with Appium by W3C based webdriver protocol if the Appium supports W3C protocol.
    • If forceMjsonwp: true exists in the capability, the client try to communicate mjsonwp based protocol
      • By default, it depends on the response from the server
    • Read API doc for Appium::Core::Base::Bridge#create_session to read the example of forceMjsonwp
  • Backport some commands from OSS module to W3C module
    • Read lib/appium_lib_core/common/base/w3c_bridge.rb for more details
  • Can get logs like driver.logs.available_types and driver.logs.get

[1.2.3] - 2017-12-27

Bug fixes

  • Fix some w3c methods to work with Appium part 2 #38

[1.2.2] - 2017-12-25

Bug fixes

  • Fix some w3c methods to work with Appium #37

[1.2.1] - 2017-12-23

Enhancements

  • override default duration to make some action fast #36

[1.2.0] - 2017-12-23

Enhancements

  • Append appium: prefix for capabilities automatically due to W3C format.
  • add take element screenshot for oss module #33
  • add w3c touch action tests and some supports for w3c #35
    • IME related
    • Touch actions based on W3C spec

[1.1.0] - 2017-12-16

Enhancements

  • Add guidelines in .github
  • session/:session_id/appium/device/keyevent #21

Bug fixes

  • fix creating sessions #31 for W3C creating sessions

[1.0.0] - 2017-11-12

Initial release