appium_lib 9.7.5 → 9.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/appium_lib.gemspec +1 -3
  4. data/contributing.md +2 -0
  5. data/docs/android_docs.md +186 -180
  6. data/docs/ios_docs.md +238 -234
  7. data/docs/ios_xcuitest.md +1 -1
  8. data/lib/appium_lib/android/common/helper.rb +0 -30
  9. data/lib/appium_lib/appium.rb +3 -4
  10. data/lib/appium_lib/common/helper.rb +0 -1
  11. data/lib/appium_lib/common/http_client.rb +1 -1
  12. data/lib/appium_lib/common/touch_actions.rb +4 -4
  13. data/lib/appium_lib/common/wait.rb +1 -1
  14. data/lib/appium_lib/driver.rb +7 -8
  15. data/lib/appium_lib/ios/common/helper.rb +1 -8
  16. data/lib/appium_lib/version.rb +2 -2
  17. data/readme.md +29 -8
  18. data/release_notes.md +6 -0
  19. metadata +5 -77
  20. data/lib/appium_lib/core/android.rb +0 -5
  21. data/lib/appium_lib/core/android/device.rb +0 -142
  22. data/lib/appium_lib/core/android/espresso/bridge.rb +0 -18
  23. data/lib/appium_lib/core/android/search_context.rb +0 -17
  24. data/lib/appium_lib/core/android/touch.rb +0 -15
  25. data/lib/appium_lib/core/android/uiautomator1/bridge.rb +0 -18
  26. data/lib/appium_lib/core/android/uiautomator2/bridge.rb +0 -18
  27. data/lib/appium_lib/core/android_espresso.rb +0 -5
  28. data/lib/appium_lib/core/android_uiautomator2.rb +0 -5
  29. data/lib/appium_lib/core/common.rb +0 -6
  30. data/lib/appium_lib/core/common/base.rb +0 -8
  31. data/lib/appium_lib/core/common/base/bridge.rb +0 -47
  32. data/lib/appium_lib/core/common/base/capabilities.rb +0 -16
  33. data/lib/appium_lib/core/common/base/command.rb +0 -10
  34. data/lib/appium_lib/core/common/base/driver.rb +0 -40
  35. data/lib/appium_lib/core/common/base/http_default.rb +0 -12
  36. data/lib/appium_lib/core/common/base/search_context.rb +0 -89
  37. data/lib/appium_lib/core/common/base/wait.rb +0 -56
  38. data/lib/appium_lib/core/common/command.rb +0 -75
  39. data/lib/appium_lib/core/common/device.rb +0 -462
  40. data/lib/appium_lib/core/common/error.rb +0 -18
  41. data/lib/appium_lib/core/common/log.rb +0 -30
  42. data/lib/appium_lib/core/common/logger.rb +0 -35
  43. data/lib/appium_lib/core/core.rb +0 -67
  44. data/lib/appium_lib/core/device/multi_touch.rb +0 -48
  45. data/lib/appium_lib/core/device/touch_actions.rb +0 -191
  46. data/lib/appium_lib/core/driver.rb +0 -417
  47. data/lib/appium_lib/core/ios.rb +0 -7
  48. data/lib/appium_lib/core/ios/device.rb +0 -44
  49. data/lib/appium_lib/core/ios/search_context.rb +0 -27
  50. data/lib/appium_lib/core/ios/touch.rb +0 -16
  51. data/lib/appium_lib/core/ios/uiautomation/bridge.rb +0 -20
  52. data/lib/appium_lib/core/ios/uiautomation/patch.rb +0 -20
  53. data/lib/appium_lib/core/ios/xcuitest/bridge.rb +0 -20
  54. data/lib/appium_lib/core/ios/xcuitest/device.rb +0 -59
  55. data/lib/appium_lib/core/ios/xcuitest/search_context.rb +0 -40
  56. data/lib/appium_lib/core/ios_xcuitest.rb +0 -8
  57. data/lib/appium_lib/core/patch.rb +0 -56
@@ -82,7 +82,7 @@ xpaths("//some xpaths")
82
82
  ## Gesture
83
83
  - `mobile:` commands are provided by WDA.
84
84
  - Documentations
85
- - https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios-xctest-mobile-gestures.md
85
+ - https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios/ios-xctest-mobile-gestures.md
86
86
  - Specs by test code
87
87
  - https://github.com/appium/appium-xcuitest-driver/blob/master/test/functional/basic/gesture-e2e-specs.js
88
88
 
@@ -109,36 +109,6 @@ module Appium
109
109
  nil
110
110
  end
111
111
 
112
- # Lists package, activity, and adb shell am start -n value for current app.
113
- # Works on local host only (not remote).
114
-
115
- # example line:
116
- # "mFocusedApp=AppWindowToken{b1420058 token=Token{b128add0
117
- # ActivityRecord{b1264d10 u0 com.example.android.apis/.ApiDemos t23}}}"
118
- def current_app
119
- warn '[DEPRECATION] current_app will be removed since it work only local.' \
120
- 'Please use current_activity and current_app to know package and activity for current app'
121
-
122
- line = `adb shell dumpsys window windows`.each_line.grep(/mFocusedApp/).first.strip
123
-
124
- _parse_current_app_line line
125
- end
126
-
127
- # @private
128
- # noinspection RubyArgCount
129
- def _parse_current_app_line(line)
130
- match = line.match(/ ([^\/ ]+\/[^ }]+)[ }]/)
131
- return nil unless match && match[1]
132
-
133
- pair = match[1].split '/'
134
- pkg = pair.first
135
- act = pair.last
136
- OpenStruct.new(line: line,
137
- package: pkg,
138
- activity: act,
139
- am_start: pkg + '/' + act)
140
- end
141
-
142
112
  # Find the first matching element by id
143
113
  # @param id [String] the id to search for
144
114
  # @return [Element]
@@ -2,6 +2,8 @@ require 'rubygems'
2
2
  require 'selenium-webdriver'
3
3
  require 'nokogiri'
4
4
 
5
+ require 'appium_lib_core'
6
+
5
7
  # base
6
8
  require_relative 'driver'
7
9
  require_relative 'sauce_labs'
@@ -15,9 +17,6 @@ require_relative 'common/touch_actions'
15
17
  require_relative 'common/http_client'
16
18
  require_relative 'common/device'
17
19
 
18
- # core
19
- require_relative 'core/core'
20
-
21
20
  # ios
22
21
  require_relative 'ios/ios'
23
22
 
@@ -62,7 +61,7 @@ module Appium
62
61
 
63
62
  data = Tomlrb.load_file(toml, symbolize_keys: true)
64
63
  if verbose
65
- Appium::Logger.ap_info data unless data.empty?
64
+ Appium::Logger.info data unless data.empty?
66
65
  end
67
66
 
68
67
  if data && data[:caps] && data[:caps][:app] && !data[:caps][:app].empty?
@@ -53,7 +53,6 @@ module Appium
53
53
 
54
54
  # json and ap are required for the source method.
55
55
  require 'json'
56
- require 'ap' # awesome print
57
56
 
58
57
  # @private
59
58
  # http://nokogiri.org/Nokogiri/XML/SAX.html
@@ -1,4 +1,4 @@
1
- require_relative '../core/core'
1
+ require 'appium_lib_core'
2
2
  require_relative '../version'
3
3
 
4
4
  module Appium
@@ -24,10 +24,10 @@ module Appium
24
24
  # @example
25
25
  #
26
26
  # driver = Appium::Driver.new(opts, false).start_driver
27
- # action = TouchAction.new.press(x: 45, y: 100).wait(5).release
28
- # action.perform(@driver)
29
- # action = TouchAction.new.swipe(....)
30
- # action.perform(@driver)
27
+ # action = TouchAction.new(driver).press(x: 45, y: 100).wait(5).release
28
+ # action.perform
29
+ # action = TouchAction.new(driver).swipe(....)
30
+ # action.perform
31
31
  #
32
32
  class TouchAction < ::Appium::Core::TouchAction
33
33
  COMPLEX_ACTIONS = ::Appium::Core::TouchAction::COMPLEX_ACTIONS
@@ -1,4 +1,4 @@
1
- require_relative '../core/common/base/wait'
1
+ require 'appium_lib_core'
2
2
 
3
3
  module Appium
4
4
  module Common
@@ -9,7 +9,7 @@ module Minitest
9
9
  end
10
10
  end
11
11
 
12
- require_relative 'core/core'
12
+ require 'appium_lib_core'
13
13
 
14
14
  module Appium
15
15
  REQUIRED_VERSION_XCUITEST = '1.6.0'.freeze
@@ -36,6 +36,7 @@ module Appium
36
36
  attr_reader :sauce_endpoint
37
37
 
38
38
  # from Core
39
+ # read http://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Driver
39
40
  attr_reader :caps
40
41
  attr_reader :custom_url
41
42
  attr_reader :export_session
@@ -172,7 +173,7 @@ module Appium
172
173
  # for command
173
174
 
174
175
  if @appium_debug
175
- Appium::Logger.ap_debug opts unless opts.empty?
176
+ Appium::Logger.debug opts unless opts.empty?
176
177
  Appium::Logger.debug "Debug is: #{@appium_debug}"
177
178
  Appium::Logger.debug "Device is: #{@core.device}"
178
179
  end
@@ -312,6 +313,7 @@ module Appium
312
313
  # server (TestObject for instance) does not respond to status call
313
314
  {}
314
315
  end
316
+ alias remote_status appium_server_version
315
317
 
316
318
  # Return the platform version as an array of integers
317
319
  # @return [Array<Integer>]
@@ -319,12 +321,6 @@ module Appium
319
321
  @core.platform_version
320
322
  end
321
323
 
322
- # @private
323
- def ios_version
324
- warn '[DEPRECATION] ios_version will be removed. Please use platform_version instead.'
325
- platform_version
326
- end
327
-
328
324
  # Returns the client's version info
329
325
  #
330
326
  # @example
@@ -428,6 +424,9 @@ module Appium
428
424
  # Creates a new global driver and quits the old one if it exists.
429
425
  # You can customise http_client as the following
430
426
  #
427
+ # Read http://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device to understand more what the driver
428
+ # can call instance methods.
429
+ #
431
430
  # @example
432
431
  #
433
432
  # require 'rubygems'
@@ -69,7 +69,7 @@ module Appium
69
69
  parser.parse s
70
70
  parser.document.result
71
71
  else
72
- s = source_window
72
+ s = get_source
73
73
  parser = Nokogiri::XML::SAX::Parser.new(UITestElementsPrinter.new)
74
74
  if class_name
75
75
  parser.document.filter = class_name.is_a?(Symbol) ? class_name.to_s : class_name
@@ -79,13 +79,6 @@ module Appium
79
79
  end
80
80
  end
81
81
 
82
- # Gets the JSON source of window number
83
- # @return [JSON]
84
- def source_window(_window_number = nil)
85
- warn '[DEPRECATION] source_window will be removed. Please use source instead.'
86
- get_source
87
- end
88
-
89
82
  # Find by id
90
83
  # @param id [String] the id to search for
91
84
  # @return [Element]
@@ -1,5 +1,5 @@
1
1
  module Appium
2
2
  # Version and Date are defined on the 'Appium' module, not 'Appium::Common'
3
- VERSION = '9.7.5'.freeze unless defined? ::Appium::VERSION
4
- DATE = '2017-11-04'.freeze unless defined? ::Appium::DATE
3
+ VERSION = '9.8.1'.freeze unless defined? ::Appium::VERSION
4
+ DATE = '2017-12-16'.freeze unless defined? ::Appium::DATE
5
5
  end
data/readme.md CHANGED
@@ -1,4 +1,4 @@
1
- #### appium_lib
1
+ # appium_lib
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/appium_lib.svg)](http://badge.fury.io/rb/appium_lib)
4
4
  [![Dependency Status](https://gemnasium.com/appium/ruby_lib.svg)](https://gemnasium.com/appium/ruby_lib)
@@ -10,22 +10,29 @@
10
10
 
11
11
  - [appium_lib on RubyGems](https://rubygems.org/gems/appium_lib)
12
12
  - [Documentation for appium_lib](https://github.com/appium/ruby_lib/tree/master/docs)
13
- - [Appium Ruby Console](https://github.com/appium/ruby_console)
13
+ - [Documentation for core lib](http://www.rubydoc.info/github/appium/ruby_lib_core)
14
+ - Especially [driver method for Appium](http://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Device)
14
15
  - [Getting Started](https://github.com/appium/appium/blob/master/docs/en/about-appium/getting-started.md)
15
16
  - [code examples](https://github.com/appium/sample-code/tree/master/sample-code/examples/ruby)
16
17
 
17
18
  Helper methods for writing cross platform (iOS, Android) tests in Ruby using Appium. Note that user waits should not exceed 120 seconds if they're going to run on Sauce Labs.
18
19
 
19
- Make sure you're using Appium 1.0.0 or newer and Ruby 2.2+ with upgraded rubygems and bundler.
20
+ [Ruby_lib_core](https://github.com/appium/ruby_lib_core) is the core driver library which provide `selenium-webdriver` related features and driver methods for Appium.
21
+ The `ruby_lib` wrap the driver and serve many helpful methods for users.
20
22
 
21
- #### Start appium server
23
+ # Setup
24
+ ## Requirement
25
+ - [Appium](https://github.com/appium/appium#requirements)
26
+ - Ruby: 2.2+
27
+
28
+ ## Start appium server
22
29
 
23
30
  ```bash
24
31
  $ npm install -g appium
25
32
  $ appium
26
33
  ```
27
34
 
28
- #### Install / Upgrade
35
+ ## Install / Upgrade
29
36
  - Update rubygems and bundler
30
37
  ```bash
31
38
  $ gem update --system
@@ -38,7 +45,7 @@ gem uninstall -aIx appium_lib
38
45
  gem install --no-rdoc --no-ri appium_lib
39
46
  ```
40
47
 
41
- #### [Sauce Labs env vars](https://github.com/appium/ruby_lib/blob/master/lib/appium_lib/sauce_labs.rb)
48
+ ## [Sauce Labs env vars](https://github.com/appium/ruby_lib/blob/master/lib/appium_lib/sauce_labs.rb)
42
49
 
43
50
  - `SAUCE_USERNAME` Sauce username
44
51
  - `SAUCE_ACCESS_KEY` Sauce API key
@@ -46,7 +53,7 @@ gem install --no-rdoc --no-ri appium_lib
46
53
 
47
54
  (Note: If these variables are set, all tests will use Sauce Labs unless over-ridden in configuration.)
48
55
 
49
- #### Documentation
56
+ # Documentation
50
57
 
51
58
  - [Installing Appium on OS X](https://github.com/appium/ruby_console/blob/master/osx.md)
52
59
  - [Overview](https://github.com/appium/ruby_lib/blob/master/docs/docs.md)
@@ -55,5 +62,19 @@ gem install --no-rdoc --no-ri appium_lib
55
62
  - [Tips for XCUITest for iOS](https://github.com/appium/ruby_lib/blob/master/docs/ios_xcuitest.md)
56
63
  - [Appium Server docs](https://github.com/appium/appium/tree/master/docs)
57
64
 
58
- #### Load Pry
65
+ # Related libraries
66
+ - [ruby_lib_core](https://github.com/appium/ruby_lib_core): Bridged commands, WebDriver dependencies
67
+ - We add new endpoints for Appium in the core library, and `ruby_lib` call the methods.
68
+ - [ruby_console](https://github.com/appium/ruby_console): Appium Ruby Console
69
+ - [appium_capybara](https://github.com/appium/appium_capybara): Gem enabling appium support in capybara
70
+
71
+ # Load Pry
59
72
  `Pry.config.pager = false` is set if you have no `.pryrc` files and `Pry` is defined.
73
+
74
+
75
+ # Contribute
76
+ ## How to add new commands for `driver`
77
+ - Add the new commands in [ruby_lib_core](https://github.com/appium/ruby_lib_core). [An example](https://github.com/appium/ruby_lib_core/commit/cdb02c29c8663d22d643b52fd65c8b2d1373bebb)
78
+
79
+ ## How to add new helpful methods
80
+ - Add the new methods in this library
@@ -1,3 +1,9 @@
1
+ #### v9.7.5 2017-11-04
2
+
3
+ - [1e1bb7e](https://github.com/appium/ruby_lib/commit/1e1bb7e3f1f500fa0dffe361b875b6b16941e290) [Release 9 7 5 (#717)](https://github.com/appium/ruby_lib/issues/717)
4
+ - [6a6d07e](https://github.com/appium/ruby_lib/commit/6a6d07e80686a171f76ea4fa013996e7f81f6fb9) [fix: take care capybara case (#716)](https://github.com/appium/ruby_lib/issues/716)
5
+
6
+
1
7
  #### v9.7.4 2017-10-28
2
8
 
3
9
  - [8522f49](https://github.com/appium/ruby_lib/commit/8522f496eff2a72648a563af8ce06cb8c7270256) [Release 9 7 4 (#715)](https://github.com/appium/ruby_lib/issues/715)
metadata CHANGED
@@ -1,63 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.7.5
4
+ version: 9.8.1
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: 2017-11-04 00:00:00.000000000 Z
11
+ date: 2017-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: selenium-webdriver
14
+ name: appium_lib_core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.4'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 3.4.1
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '3.4'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 3.4.1
33
- - !ruby/object:Gem::Dependency
34
- name: awesome_print
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1.8'
19
+ version: '1.1'
40
20
  type: :runtime
41
21
  prerelease: false
42
22
  version_requirements: !ruby/object:Gem::Requirement
43
23
  requirements:
44
24
  - - "~>"
45
25
  - !ruby/object:Gem::Version
46
- version: '1.8'
47
- - !ruby/object:Gem::Dependency
48
- name: json
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '1.8'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '1.8'
26
+ version: '1.1'
61
27
  - !ruby/object:Gem::Dependency
62
28
  name: tomlrb
63
29
  requirement: !ruby/object:Gem::Requirement
@@ -276,44 +242,6 @@ files:
276
242
  - lib/appium_lib/common/multi_touch.rb
277
243
  - lib/appium_lib/common/touch_actions.rb
278
244
  - lib/appium_lib/common/wait.rb
279
- - lib/appium_lib/core/android.rb
280
- - lib/appium_lib/core/android/device.rb
281
- - lib/appium_lib/core/android/espresso/bridge.rb
282
- - lib/appium_lib/core/android/search_context.rb
283
- - lib/appium_lib/core/android/touch.rb
284
- - lib/appium_lib/core/android/uiautomator1/bridge.rb
285
- - lib/appium_lib/core/android/uiautomator2/bridge.rb
286
- - lib/appium_lib/core/android_espresso.rb
287
- - lib/appium_lib/core/android_uiautomator2.rb
288
- - lib/appium_lib/core/common.rb
289
- - lib/appium_lib/core/common/base.rb
290
- - lib/appium_lib/core/common/base/bridge.rb
291
- - lib/appium_lib/core/common/base/capabilities.rb
292
- - lib/appium_lib/core/common/base/command.rb
293
- - lib/appium_lib/core/common/base/driver.rb
294
- - lib/appium_lib/core/common/base/http_default.rb
295
- - lib/appium_lib/core/common/base/search_context.rb
296
- - lib/appium_lib/core/common/base/wait.rb
297
- - lib/appium_lib/core/common/command.rb
298
- - lib/appium_lib/core/common/device.rb
299
- - lib/appium_lib/core/common/error.rb
300
- - lib/appium_lib/core/common/log.rb
301
- - lib/appium_lib/core/common/logger.rb
302
- - lib/appium_lib/core/core.rb
303
- - lib/appium_lib/core/device/multi_touch.rb
304
- - lib/appium_lib/core/device/touch_actions.rb
305
- - lib/appium_lib/core/driver.rb
306
- - lib/appium_lib/core/ios.rb
307
- - lib/appium_lib/core/ios/device.rb
308
- - lib/appium_lib/core/ios/search_context.rb
309
- - lib/appium_lib/core/ios/touch.rb
310
- - lib/appium_lib/core/ios/uiautomation/bridge.rb
311
- - lib/appium_lib/core/ios/uiautomation/patch.rb
312
- - lib/appium_lib/core/ios/xcuitest/bridge.rb
313
- - lib/appium_lib/core/ios/xcuitest/device.rb
314
- - lib/appium_lib/core/ios/xcuitest/search_context.rb
315
- - lib/appium_lib/core/ios_xcuitest.rb
316
- - lib/appium_lib/core/patch.rb
317
245
  - lib/appium_lib/driver.rb
318
246
  - lib/appium_lib/ios/common/errors.rb
319
247
  - lib/appium_lib/ios/common/helper.rb
@@ -1,5 +0,0 @@
1
- # loaded in common/driver.rb
2
- require_relative 'android/search_context'
3
- require_relative 'android/device'
4
- require_relative 'android/touch'
5
- require_relative 'android/uiautomator1/bridge'
@@ -1,142 +0,0 @@
1
- module Appium
2
- module Android
3
- module Device
4
- extend Forwardable
5
-
6
- # @!method background_app
7
- # Backgrounds the app for a set number of seconds.
8
- # This is a blocking application
9
- # @param [Integer] seconds How many seconds to background the app for.
10
- #
11
- # ```ruby
12
- # background_app
13
- # background_app(5)
14
- # background_app(-1) #=> the app never come back. https://github.com/appium/appium/issues/7741
15
- # ```
16
-
17
- # @!method hide_keyboard
18
- # Hide the onscreen keyboard
19
- # @param [String] close_key The name of the key which closes the keyboard.
20
- # Defaults to 'Done' for iOS(except for XCUITest).
21
- # @param [Symbol] strategy The symbol of the strategy which closes the keyboard.
22
- # XCUITest ignore this argument.
23
- # Default for iOS is `:pressKey`. Default for Android is `:tapOutside`.
24
- # ```ruby
25
- # hide_keyboard # Close a keyboard with the 'Done' button
26
- # hide_keyboard('Finished') # Close a keyboard with the 'Finished' button
27
- # hide_keyboard(nil, :tapOutside) # Close a keyboard with tapping out side of keyboard
28
- # ```
29
-
30
- # @!method end_coverage
31
- # Android only; Ends the test coverage and writes the results to the given path on device.
32
- # @param [String] path Path on the device to write too.
33
- # @param [String] intent Intent to broadcast when ending coverage.
34
-
35
- # @!method start_activity
36
- # Start a new activity within the current app or launch a new app and start the target activity.
37
- #
38
- # Android only.
39
- # @option [String] The package owning the activity [required]
40
- # @option [String] The target activity [required]
41
- # @option opts [String] The package to start before the target package [optional]
42
- # @option opts [String] The activity to start before the target activity [optional]
43
- #
44
- # ```ruby
45
- # start_activity app_package: 'io.appium.android.apis',
46
- # app_activity: '.accessibility.AccessibilityNodeProviderActivity'
47
- # ```
48
-
49
- # @!method set_network_connection
50
- # Set the device network connection mode
51
- # @param [String] path Bit mask that represent the network mode
52
- #
53
- # Value (Alias) | Data | Wifi | Airplane Mode
54
- # -------------------------------------------------
55
- # 1 (Airplane Mode) | 0 | 0 | 1
56
- # 6 (All network on) | 1 | 1 | 0
57
- # 4 (Data only) | 1 | 0 | 0
58
- # 2 (Wifi only) | 0 | 1 | 0
59
- # 0 (None) | 0 | 0 | 0
60
- #
61
-
62
- # @!method get_performance_data_types
63
- # Get the information type of the system state which is supported to read such as
64
- # cpu, memory, network, battery via adb commands.
65
- # https://github.com/appium/appium-base-driver/blob/be29aec2318316d12b5c3295e924a5ba8f09b0fb/lib/mjsonwp/routes.js#L300
66
- #
67
- # ```ruby
68
- # get_performance_data_types #=> ["cpuinfo", "batteryinfo", "networkinfo", "memoryinfo"]
69
- # ```
70
-
71
- # @!method get_performance_data
72
- # Get the resource usage information of the application.
73
- # https://github.com/appium/appium-base-driver/blob/be29aec2318316d12b5c3295e924a5ba8f09b0fb/lib/mjsonwp/routes.js#L303
74
- # @param [String] package_name Package name
75
- # @param [String] data_type Data type get with `get_performance_data_types`
76
- # @param [String] data_read_timeout Command timeout. Default is 2.
77
- #
78
- # ```ruby
79
- # get_performance_data package_name: package_name, data_type: data_type, data_read_timeout: 2
80
- # ```
81
- class << self
82
- def extended(_mod)
83
- Appium::Core::Device.extend_webdriver_with_forwardable
84
-
85
- # Android
86
- Appium::Core::Device.add_endpoint_method(:start_activity) do
87
- def start_activity(opts)
88
- raise 'opts must be a hash' unless opts.is_a? Hash
89
- app_package = opts[:app_package]
90
- raise 'app_package is required' unless app_package
91
- app_activity = opts[:app_activity]
92
- raise 'app_activity is required' unless app_activity
93
- app_wait_package = opts.fetch(:app_wait_package, '')
94
- app_wait_activity = opts.fetch(:app_wait_activity, '')
95
-
96
- unknown_opts = opts.keys - [:app_package, :app_activity, :app_wait_package, :app_wait_activity]
97
- raise "Unknown options #{unknown_opts}" unless unknown_opts.empty?
98
-
99
- execute :start_activity, {}, appPackage: app_package,
100
- appActivity: app_activity,
101
- appWaitPackage: app_wait_package,
102
- appWaitActivity: app_wait_activity
103
- end
104
- end
105
-
106
- # Android, Override
107
- Appium::Core::Device.add_endpoint_method(:hide_keyboard) do
108
- def hide_keyboard(close_key = nil, strategy = nil)
109
- option = {}
110
-
111
- option[:key] = close_key if close_key
112
- option[:strategy] = strategy || :tapOutside # default to pressKey
113
-
114
- execute :hide_keyboard, {}, option
115
- end
116
- end
117
-
118
- # TODO: TEST ME
119
- Appium::Core::Device.add_endpoint_method(:end_coverage) do
120
- def end_coverage(path, intent)
121
- execute :end_coverage, {}, path: path, intent: intent
122
- end
123
- end
124
-
125
- Appium::Core::Device.add_endpoint_method(:set_network_connection) do
126
- def set_network_connection(mode)
127
- execute :set_network_connection, {}, type: mode
128
- end
129
- end
130
-
131
- Appium::Core::Device.add_endpoint_method(:get_performance_data) do
132
- def get_performance_data(package_name:, data_type:, data_read_timeout: 1000)
133
- execute :get_performance_data, {}, packageName: package_name,
134
- dataType: data_type,
135
- dataReadTimeout: data_read_timeout
136
- end
137
- end
138
- end
139
- end
140
- end # module Device
141
- end # module Android
142
- end # module Appium