appium_lib 8.0.2 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  [caps]
2
2
  platformName = "ios"
3
- platformVersion = "9.2"
3
+ platformVersion = "9.3"
4
4
  deviceName ="iPhone Simulator"
5
5
  app = "./UICatalog.app"
6
6
 
@@ -75,7 +75,7 @@ describe 'device/device' do
75
75
  end
76
76
 
77
77
  t 'swipe' do
78
- swipe start_x: 75, start_y: 500, end_x: 75, end_y: 0, duration: 800
78
+ swipe start_x: 75, start_y: 500, delta_x: 75, delta_y: 0, duration: 800
79
79
  end
80
80
 
81
81
  t 'pinch & zoom' do
@@ -1,5 +1,19 @@
1
1
  describe 'device/touch_actions' do
2
- t {} # place holder test
2
+ t 'swipe_default_duration' do
3
+ wait_true do
4
+ text('pickers').click
5
+ screen == 'Pickers'
6
+ end
7
+
8
+ ele_index('UIAStaticText', 2).text.must_equal 'John Appleseed - 0'
9
+ picker = ele_index('UIAPicker', 1)
10
+ loc = picker.location.to_h
11
+ size = picker.size.to_h
12
+ start_x = loc[:x] + size[:width] / 2
13
+ start_y = loc[:y] + size[:height] / 2
14
+ swipe start_x: start_x, start_y: start_y, delta_x: start_x, delta_y: - 50
15
+ ele_index('UIAStaticText', 2).text.must_equal 'Chris Armstrong - 0'
16
+ end
3
17
  end
4
18
 
5
19
  # TODO: write tests
@@ -36,7 +36,7 @@ describe 'driver' do
36
36
  actual = driver_attributes
37
37
  actual[:caps][:app] = File.basename actual[:caps][:app]
38
38
  expected = { caps: { platformName: 'ios',
39
- platformVersion: '8.3',
39
+ platformVersion: '9.3',
40
40
  deviceName: 'iPhone Simulator',
41
41
  app: 'UICatalog.app' },
42
42
  custom_url: false,
@@ -47,7 +47,8 @@ describe 'driver' do
47
47
  sauce_access_key: nil,
48
48
  port: 4723,
49
49
  device: :ios,
50
- debug: true }
50
+ debug: true,
51
+ listener: nil }
51
52
 
52
53
  if actual != expected
53
54
  diff = HashDiff.diff expected, actual
@@ -12,7 +12,7 @@ ruby_lib's iOS tests. Requires `Ruby 1.9.3` or better.
12
12
 
13
13
  `UICatalog6.1` is from [appium/appium](https://github.com/appium/appium/blob/master/assets/UICatalog6.1.app.zip)
14
14
 
15
- The tests are now run against `iPhone 6 Simulator 8.3 (12F69)`
15
+ The tests are now run against `iPhone 6 Simulator 9.3 (12F69)`
16
16
 
17
17
  #### Documentation
18
18
 
@@ -1,5 +1,5 @@
1
1
  module Appium
2
2
  # Version and Date are defined on the 'Appium' module, not 'Appium::Common'
3
- VERSION = '8.0.2' unless defined? ::Appium::VERSION
4
- DATE = '2016-01-29' unless defined? ::Appium::DATE
3
+ VERSION = '8.1.0' unless defined? ::Appium::VERSION
4
+ DATE = '2016-11-18' unless defined? ::Appium::DATE
5
5
  end
@@ -93,6 +93,15 @@ module Appium
93
93
  # pull_folder '/data/local/tmp' #=> Get the folder at that path
94
94
  # ```
95
95
 
96
+ # @!method touch_id
97
+ # iOS only; Simulate Touch ID with either valid (match == true) or invalid (match == false) fingerprint.
98
+ # @param match (Boolean) fingerprint validity
99
+ # Defaults to true.
100
+ # ```ruby
101
+ # touch_id true #=> Simulate valid fingerprint
102
+ # touch_id false #=> Simulate invalid fingerprint
103
+ # ```
104
+
96
105
  # @!method end_coverage
97
106
  # Android only; Ends the test coverage and writes the results to the given path on device.
98
107
  # @param path (String) Path on the device to write too.
@@ -252,6 +261,13 @@ module Appium
252
261
  end
253
262
  end
254
263
 
264
+ # TODO: TEST ME
265
+ add_endpoint_method(:touch_id, 'session/:session_id/appium/simulator/touch_id') do
266
+ def touch_id(match = true)
267
+ execute :touch_id, {}, match: match
268
+ end
269
+ end
270
+
255
271
  # TODO: TEST ME
256
272
  add_endpoint_method(:end_coverage, 'session/:session_id/appium/app/end_test_coverage') do
257
273
  def end_coverage(path, intent)
@@ -343,7 +359,9 @@ module Appium
343
359
  end
344
360
  end
345
361
 
346
- # @!method accessiblity_id_find
362
+ # @!method find_element
363
+ # @!method find_elements
364
+ #
347
365
  # find_element/s with their accessibility_id
348
366
  #
349
367
  # ```ruby
@@ -32,10 +32,10 @@ module Appium
32
32
  i = 1 - p
33
33
 
34
34
  top = TouchAction.new
35
- top.swipe start_x: 1.0, start_y: 0.0, end_x: i, end_y: i, duration: 1
35
+ top.swipe start_x: 1.0, start_y: 0.0, delta_x: i, delta_y: i, duration: 1
36
36
 
37
37
  bottom = TouchAction.new
38
- bottom.swipe(start_x: 0.0, start_y: 1.0, end_x: p, end_y: p, duration: 1)
38
+ bottom.swipe(start_x: 0.0, start_y: 1.0, delta_x: p, delta_y: p, duration: 1)
39
39
 
40
40
  pinch = MultiTouch.new
41
41
  pinch.add top
@@ -60,10 +60,10 @@ module Appium
60
60
  i = 1 - p
61
61
 
62
62
  top = TouchAction.new
63
- top.swipe start_x: i, start_y: i, end_x: 1, end_y: 1, duration: 1
63
+ top.swipe start_x: i, start_y: i, delta_x: 1, delta_y: 1, duration: 1
64
64
 
65
65
  bottom = TouchAction.new
66
- bottom.swipe start_x: p, start_y: p, end_x: 1, end_y: 1, duration: 1
66
+ bottom.swipe start_x: p, start_y: p, delta_x: 1, delta_y: 1, duration: 1
67
67
 
68
68
  zoom = MultiTouch.new
69
69
  zoom.add top
@@ -8,7 +8,7 @@ module Appium
8
8
  # action = TouchAction.new.press(x: 45, y: 100).wait(5).release
9
9
  # action.perform
10
10
  class TouchAction
11
- ACTIONS = [:move_to, :long_press, :press, :release, :tap, :wait, :perform]
11
+ ACTIONS = [:move_to, :long_press, :double_tap, :two_finger_tap, :press, :release, :tap, :wait, :perform]
12
12
  COMPLEX_ACTIONS = [:swipe]
13
13
 
14
14
  class << self
@@ -84,6 +84,29 @@ module Appium
84
84
  chain_method(:tap, args)
85
85
  end
86
86
 
87
+ # Double tap an element on the screen
88
+ #
89
+ # @option opts [WebDriver::Element] :element (Optional) Element to restrict scope too.
90
+ # @option opts [integer] :x x co-ordinate to tap
91
+ # @option opts [integer] :y y co-ordinate to tap
92
+
93
+ def double_tap(opts)
94
+ args = opts.select { |k, _v| [:element, :x, :y].include? k }
95
+ args = args_with_ele_ref(args)
96
+ chain_method(:doubleTap, args) # doubleTap is what the appium server expects
97
+ end
98
+
99
+ # Two finger tap an element on the screen
100
+ #
101
+ # @option opts [WebDriver::Element] :element (Optional) Element to restrict scope too.
102
+ # @option opts [integer] :x x co-ordinate to tap
103
+ # @option opts [integer] :y y co-ordinate to tap
104
+ def two_finger_tap(opts)
105
+ args = opts.select { |k, _v| [:element, :x, :y].include? k }
106
+ args = args_with_ele_ref(args)
107
+ chain_method(:twoFingerTap, args) # twoFingerTap is what the appium server expects
108
+ end
109
+
87
110
  # Pause for a number of milliseconds before the next action
88
111
  # @param milliseconds [integer] Number of milliseconds to pause for
89
112
  def wait(milliseconds)
@@ -97,19 +120,33 @@ module Appium
97
120
  #
98
121
  # @option opts [int] :start_x Where to start swiping, on the x axis. Default 0.
99
122
  # @option opts [int] :start_y Where to start swiping, on the y axis. Default 0.
100
- # @option opts [int] :end_x Where to end swiping, on the x axis. Default 0.
101
- # @option opts [int] :end_y Where to end swiping, on the y axis. Default 0.
102
- # @option opts [int] :duration How long the actual swipe takes to complete in milliseconds.
123
+ # @option opts [int] :delta_x The distance from start to move, on the x axis. Default 0.
124
+ # @option opts [int] :delta_y The distance from start to move, on the y axis. Default 0.
125
+ # @option opts [int] :duration How long the actual swipe takes to complete in milliseconds. Default 200.
126
+ # @deprecated Please do not use end_x, end_y anymore
103
127
  def swipe(opts)
104
128
  start_x = opts.fetch :start_x, 0
105
129
  start_y = opts.fetch :start_y, 0
106
- end_x = opts.fetch :end_x, 0
107
- end_y = opts.fetch :end_y, 0
108
- duration = opts[:duration]
130
+ delta_x = opts.fetch :delta_x, nil
131
+ delta_y = opts.fetch :delta_y, nil
132
+ end_x = opts.fetch :end_x, nil
133
+ end_y = opts.fetch :end_y, nil
134
+
135
+ if end_x || end_y
136
+ warn '[DEPRECATION] `end_x` and `end_y` are deprecated. Please use `delta_x` and `delta_y` instead.'
137
+ end
138
+
139
+ delta_x ||= end_x
140
+ delta_y ||= end_y
141
+
142
+ delta_x ||= 0
143
+ delta_y ||= 0
144
+
145
+ duration = opts.fetch :duration, 200
109
146
 
110
147
  press x: start_x, y: start_y
111
148
  wait(duration) if duration
112
- move_to x: end_x, y: end_y
149
+ move_to x: delta_x, y: delta_y
113
150
  release
114
151
  self
115
152
  end
@@ -263,6 +263,8 @@ module Appium
263
263
  attr_accessor :appium_device
264
264
  # Boolean debug mode for the Appium Ruby bindings
265
265
  attr_accessor :appium_debug
266
+ # instance of AbstractEventListener for logging support
267
+ attr_accessor :listener
266
268
 
267
269
  # Returns the driver
268
270
  # @return [Driver] the driver
@@ -309,6 +311,10 @@ module Appium
309
311
  @sauce_access_key = nil if !@sauce_access_key || (@sauce_access_key.is_a?(String) && @sauce_access_key.empty?)
310
312
  @appium_port = appium_lib_opts.fetch :port, 4723
311
313
 
314
+ # to pass it in Selenium.new.
315
+ # `listener = opts.delete(:listener)` is called in Selenium::Driver.new
316
+ @listener = appium_lib_opts.fetch :listener, nil
317
+
312
318
  # Path to the .apk, .app or .app.zip.
313
319
  # The path can be local or remote for Sauce.
314
320
  if @caps && @caps[:app] && ! @caps[:app].empty?
@@ -361,7 +367,8 @@ module Appium
361
367
  sauce_access_key: @sauce_access_key,
362
368
  port: @appium_port,
363
369
  device: @appium_device,
364
- debug: @appium_debug
370
+ debug: @appium_debug,
371
+ listener: @listener
365
372
  }
366
373
 
367
374
  # Return duplicates so attributes are immutable
@@ -435,7 +442,7 @@ module Appium
435
442
  def server_url
436
443
  return @custom_url if @custom_url
437
444
  if !@sauce_username.nil? && !@sauce_access_key.nil?
438
- "http://#{@sauce_username}:#{@sauce_access_key}@ondemand.saucelabs.com:80/wd/hub"
445
+ "https://#{@sauce_username}:#{@sauce_access_key}@ondemand.saucelabs.com:443/wd/hub"
439
446
  else
440
447
  "http://127.0.0.1:#{@appium_port}/wd/hub"
441
448
  end
@@ -476,7 +483,12 @@ module Appium
476
483
 
477
484
  begin
478
485
  driver_quit
479
- @driver = Selenium::WebDriver.for :remote, http_client: @client, desired_capabilities: @caps, url: server_url
486
+ @driver = Selenium::WebDriver.for(:remote,
487
+ http_client: @client,
488
+ desired_capabilities: @caps,
489
+ url: server_url,
490
+ listener: @listener)
491
+
480
492
  # Load touch methods.
481
493
  @driver.extend Selenium::WebDriver::DriverExtensions::HasTouchScreen
482
494
  @driver.extend Selenium::WebDriver::DriverExtensions::HasLocation
@@ -489,7 +501,7 @@ module Appium
489
501
  end rescue nil
490
502
  end
491
503
  rescue Errno::ECONNREFUSED
492
- raise 'ERROR: Unable to connect to Appium. Is the server running?'
504
+ raise "ERROR: Unable to connect to Appium. Is the server running on #{server_url}?"
493
505
  end
494
506
 
495
507
  @driver.manage.timeouts.implicit_wait = @default_wait
@@ -1,3 +1,21 @@
1
+ #### v8.1.0 2016-11-18
2
+
3
+ - [0b476e7](https://github.com/appium/ruby_lib/commit/0b476e7c78f8cb829a909de55a402c6585ac5159) Release 8.1.0
4
+ - [6c38ca5](https://github.com/appium/ruby_lib/commit/6c38ca5276342ade6168eb9080424a03608a1b3e) replace end_ to delta_ because end_ is deprecated in #380 (#392)
5
+ - [09654ab](https://github.com/appium/ruby_lib/commit/09654ab9dbc69a31eff7e7bd426db985da09e3b8) Add EventListener to Driver (#389)
6
+ - [2d8fc5f](https://github.com/appium/ruby_lib/commit/2d8fc5ff7acce9417847e66772b59fc691c1dbaa) Added touch id endpoint (#384)
7
+ - [11b80e3](https://github.com/appium/ruby_lib/commit/11b80e398e98fbc71e580f659764ba54f87da4f3) Added double_tap and two_finger_tap to Appium::TouchAction (#377)
8
+ - [2a9f79c](https://github.com/appium/ruby_lib/commit/2a9f79caae337e8770aa56c47d0bd9c17cf1569f) swipe proffers use of delta_x, delta_y instead of end_x, end_y which … (#380)
9
+ - [6705226](https://github.com/appium/ruby_lib/commit/67052266b601270d2432c18b47739c9681af5563) Use secure sauce endpoint (https://ondemand.saucelabs.com:443) (#378)
10
+ - [acdcff0](https://github.com/appium/ruby_lib/commit/acdcff06ae10f1ff4461ed94486346b4514a6e3a) Merge pull request #376 from sergey-plevako-badoo/add_double_tap_and_two_finger_tap
11
+ - [eea3a6f](https://github.com/appium/ruby_lib/commit/eea3a6feaccd317b8a8ac4e2f83cc867613cdd02) Added double_tap and two_finger_tap to Appium::TouchAction
12
+ - [ac03116](https://github.com/appium/ruby_lib/commit/ac03116756a72fbd624fa32ea886123b955d7089) Include url in raised connection error (#374)
13
+ - [924c28b](https://github.com/appium/ruby_lib/commit/924c28bfa675b23b2519565dbcb0ee3531f05cd9) Fix docs of find elements (#372)
14
+ - [8b71cdc](https://github.com/appium/ruby_lib/commit/8b71cdc81be8f50f5f97f0131aee5f3dc67c3eb7) Add default value for duration in swipe (#368)
15
+ - [f58c8aa](https://github.com/appium/ruby_lib/commit/f58c8aa5a9eb349a7224c5c460c5a866444ff5dd) Merge pull request #363 from SrinivasanTarget/master
16
+ - [f8cff26](https://github.com/appium/ruby_lib/commit/f8cff2659992962b6ab5bf49fa075b02d2d110ef) updated webdriver dependency
17
+
18
+
1
19
  #### v8.0.2 2016-01-29
2
20
 
3
21
  - [d67cbba](https://github.com/appium/ruby_lib/commit/d67cbbac43f511515f6e6f53197cfae2bb7671e0) Release 8.0.2
@@ -1254,4 +1272,4 @@
1254
1272
 
1255
1273
  - [01f2d15](https://github.com/appium/ruby_lib/commit/01f2d150ae3d8e88970b361a8330c6ccc174097d) Release 0.0.19
1256
1274
  - [10eec2f](https://github.com/appium/ruby_lib/commit/10eec2f197899395978b73de049aed08ceda55cc) AppLib => AppiumLib
1257
- - [c1e3b4f](https://github.com/appium/ruby_lib/commit/c1e3b4f0a08be3a0aef65218220f09f4198683bf) AppLib => AppiumLib
1275
+ - [c1e3b4f](https://github.com/appium/ruby_lib/commit/c1e3b4f0a08be3a0aef65218220f09f4198683bf) AppLib => AppiumLib
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.2
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - code@bootstraponline.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-29 00:00:00.000000000 Z
11
+ date: 2016-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.49'
19
+ version: '2.50'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.49'
26
+ version: '2.50'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: awesome_print
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -211,6 +211,7 @@ files:
211
211
  - android_tests/lib/android/specs/common/patch.rb
212
212
  - android_tests/lib/android/specs/common/version.rb
213
213
  - android_tests/lib/android/specs/common/web_context.rb
214
+ - android_tests/lib/android/specs/device/touch_actions.rb
214
215
  - android_tests/lib/android/specs/driver.rb
215
216
  - android_tests/lib/android/specs/install.rb
216
217
  - android_tests/lib/format.rb
@@ -349,9 +350,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
349
350
  version: '0'
350
351
  requirements: []
351
352
  rubyforge_project:
352
- rubygems_version: 2.5.1
353
+ rubygems_version: 2.6.6
353
354
  signing_key:
354
355
  specification_version: 4
355
356
  summary: Ruby library for Appium
356
357
  test_files: []
357
- has_rdoc: