appium_lib_core 4.1.0 → 9.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +352 -270
- data/README.md +68 -16
- data/Rakefile +8 -20
- data/Steepfile +11 -0
- data/appium_lib_core.gemspec +13 -15
- data/bin/console +0 -4
- data/lib/appium_lib_core/android/device/auth_finger_print.rb +4 -1
- data/lib/appium_lib_core/android/device/clipboard.rb +4 -2
- data/lib/appium_lib_core/android/device/emulator.rb +11 -5
- data/lib/appium_lib_core/android/device/network.rb +10 -0
- data/lib/appium_lib_core/android/device/performance.rb +3 -0
- data/lib/appium_lib_core/android/device/screen.rb +5 -1
- data/lib/appium_lib_core/android/device.rb +83 -20
- data/lib/appium_lib_core/common/base/bridge.rb +238 -95
- data/lib/appium_lib_core/common/base/capabilities.rb +21 -8
- data/lib/appium_lib_core/common/{command/mjsonwp.rb → base/device_ime.rb} +33 -12
- data/lib/appium_lib_core/common/base/driver.rb +263 -334
- data/lib/appium_lib_core/common/base/driver_settings.rb +51 -0
- data/lib/appium_lib_core/common/base/has_location.rb +80 -0
- data/lib/appium_lib_core/common/base/has_network_connection.rb +56 -0
- data/lib/appium_lib_core/common/base/http_default.rb +22 -38
- data/lib/appium_lib_core/{ios/uiautomation/bridge.rb → common/base/remote_status.rb} +9 -8
- data/lib/appium_lib_core/common/base/rotable.rb +62 -0
- data/lib/appium_lib_core/common/base/screenshot.rb +10 -10
- data/lib/appium_lib_core/common/base/search_context.rb +98 -172
- data/lib/appium_lib_core/common/base.rb +1 -5
- data/lib/appium_lib_core/common/command.rb +244 -4
- data/lib/appium_lib_core/common/device/app_management.rb +2 -26
- data/lib/appium_lib_core/common/device/context.rb +1 -5
- data/lib/appium_lib_core/common/device/image_comparison.rb +27 -10
- data/lib/appium_lib_core/common/device/keyevent.rb +4 -4
- data/lib/appium_lib_core/common/device/{touch_actions.rb → orientation.rb} +6 -10
- data/lib/appium_lib_core/common/device/screen_record.rb +8 -2
- data/lib/appium_lib_core/common/error.rb +5 -5
- data/lib/appium_lib_core/common/log.rb +5 -4
- data/lib/appium_lib_core/common/wait.rb +38 -6
- data/lib/appium_lib_core/device.rb +3 -9
- data/lib/appium_lib_core/driver.rb +207 -164
- data/lib/appium_lib_core/{patch.rb → element.rb} +64 -26
- data/lib/appium_lib_core/ios/device/clipboard.rb +4 -2
- data/lib/appium_lib_core/ios/xcuitest/device.rb +2 -0
- data/lib/appium_lib_core/{common/base/command.rb → mac2/bridge.rb} +9 -8
- data/lib/appium_lib_core/mac2/device/screen.rb +48 -0
- data/lib/appium_lib_core/mac2/device.rb +92 -0
- data/lib/appium_lib_core/{ios.rb → mac2.rb} +2 -5
- data/lib/appium_lib_core/support/event_firing_bridge.rb +57 -0
- data/lib/appium_lib_core/version.rb +2 -2
- data/lib/appium_lib_core.rb +23 -10
- data/rbs_collection.lock.yaml +252 -0
- data/rbs_collection.yaml +15 -0
- data/sig/gems/selenium/abstract_event_listener.rbs +8 -0
- data/sig/gems/selenium/capabilities.rbs +8 -0
- data/sig/gems/selenium/common.rbs +10 -0
- data/sig/gems/selenium/default.rbs +10 -0
- data/sig/gems/selenium/driver.rbs +7 -0
- data/sig/gems/selenium/has_session_id.rbs +8 -0
- data/sig/gems/selenium/has_web_storage.rbs +8 -0
- data/sig/gems/selenium/uploads_files.rbs +8 -0
- data/sig/lib/appium_lib_core/common/base/capabilities.rbs +9 -0
- data/sig/lib/appium_lib_core/common/base/driver.rbs +167 -0
- data/sig/lib/appium_lib_core/common/base/driver_settings.rbs +15 -0
- data/sig/lib/appium_lib_core/common/base/has_location.rbs +13 -0
- data/sig/lib/appium_lib_core/common/base/has_network_connection.rbs +19 -0
- data/sig/lib/appium_lib_core/common/base/http_default.rbs +38 -0
- data/sig/lib/appium_lib_core/common/base/platform.rbs +7 -0
- data/sig/lib/appium_lib_core/common/base/remote_status.rbs +9 -0
- data/sig/lib/appium_lib_core/common/base/rotable.rbs +17 -0
- data/sig/lib/appium_lib_core/common/base/screenshot.rbs +19 -0
- data/sig/lib/appium_lib_core/common/device/battery_status.rbs +13 -0
- data/sig/lib/appium_lib_core/common/wait.rbs +31 -0
- data/sig/lib/appium_lib_core/device.rbs +21 -0
- data/sig/lib/appium_lib_core/driver.rbs +200 -0
- data/sig/lib/appium_lib_core/ios/xcuitest/device/battery.rbs +15 -0
- data/sig/lib/appium_lib_core/version.rbs +7 -0
- data/sig/lib/appium_lib_core.rbs +8 -0
- metadata +88 -111
- data/.github/ISSUE_TEMPLATE/issue-report.md +0 -29
- data/.github/contributing.md +0 -26
- data/.github/issue_template.md +0 -20
- data/.github/workflows/unittest.yml +0 -68
- data/.gitignore +0 -18
- data/.rubocop.yml +0 -58
- data/azure-pipelines.yml +0 -15
- data/ci-jobs/functional/android_setup.yml +0 -3
- data/ci-jobs/functional/ios_setup.yml +0 -7
- data/ci-jobs/functional/publish_test_result.yml +0 -18
- data/ci-jobs/functional/run_appium.yml +0 -25
- data/ci-jobs/functional/start-emulator.sh +0 -26
- data/ci-jobs/functional_test.yml +0 -298
- data/docs/mobile_command.md +0 -34
- data/lib/appium_lib_core/common/base/bridge/mjsonwp.rb +0 -81
- data/lib/appium_lib_core/common/base/bridge/w3c.rb +0 -252
- data/lib/appium_lib_core/common/command/common.rb +0 -110
- data/lib/appium_lib_core/common/command/w3c.rb +0 -56
- data/lib/appium_lib_core/common/device/value.rb +0 -52
- data/lib/appium_lib_core/common/touch_action/multi_touch.rb +0 -56
- data/lib/appium_lib_core/common/touch_action/touch_actions.rb +0 -203
- data/lib/appium_lib_core/ios/uiautomation/device.rb +0 -44
- data/lib/appium_lib_core/ios/uiautomation/patch.rb +0 -34
- data/release_notes.md +0 -816
- data/script/commands.rb +0 -200
data/README.md
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/appium_lib_core)
|
4
4
|
|
5
|
-
[](https://github.com/appium/ruby_lib_core/actions/workflows/unittest.yml)
|
6
|
+
[](https://github.com/appium/ruby_lib_core/actions/workflows/functional-test.yml)
|
7
|
+
|
6
8
|
|
7
9
|
This library is a Ruby client for Appium. The gem is available via [appium_lib_core](https://rubygems.org/gems/appium_lib_core).
|
8
10
|
|
@@ -10,7 +12,14 @@ This library wraps [selenium-webdriver](https://github.com/SeleniumHQ/selenium/w
|
|
10
12
|
|
11
13
|
# Documentation
|
12
14
|
|
13
|
-
-
|
15
|
+
- https://www.rubydoc.info/gems/appium_lib_core
|
16
|
+
- You can find working API examples in test code, [test/functional](test/functional)
|
17
|
+
- Appium 2.0
|
18
|
+
- https://appium.github.io/appium/docs/en/2.0/ (Not completed yet)
|
19
|
+
|
20
|
+
# Migration from v4 to v5
|
21
|
+
|
22
|
+
Please read [`[5.0.0]`](CHANGELOG.md#500---2021-11-05) section in [CHANGELOG](CHANGELOG.md)
|
14
23
|
|
15
24
|
# Related library
|
16
25
|
- https://github.com/appium/ruby_lib
|
@@ -18,27 +27,36 @@ This library wraps [selenium-webdriver](https://github.com/SeleniumHQ/selenium/w
|
|
18
27
|
# How to start
|
19
28
|
## Run tests
|
20
29
|
### Unit Tests
|
21
|
-
Run unit tests which check each method and
|
30
|
+
Run unit tests which check each method and command, URL, using the webmock.
|
22
31
|
|
23
32
|
```bash
|
24
33
|
$ bundle install
|
25
34
|
$ bundle exec parallel_test test/unit/
|
26
35
|
```
|
27
36
|
|
37
|
+
or
|
38
|
+
|
39
|
+
```bash
|
40
|
+
$ bundle install
|
41
|
+
$ bundle exec rake test:unit
|
42
|
+
```
|
43
|
+
|
28
44
|
### Functional Tests
|
29
45
|
Run functional tests which require the Appium server and real device, Simulator/Emulator.
|
30
46
|
|
31
|
-
- Start Appium server
|
47
|
+
- Start Appium server (Appium 2.0 base)
|
32
48
|
```bash
|
33
|
-
$ npm install
|
34
|
-
$ appium
|
49
|
+
$ npm install --location=global appium
|
50
|
+
$ appium driver install xcuitest
|
51
|
+
$ appium driver install uiautomator2 # etc
|
52
|
+
$ appium --base-path=/wd/hub --relaxed-security # To run all tests in local
|
35
53
|
```
|
36
54
|
|
37
55
|
- Conduct tests
|
38
56
|
```bash
|
39
57
|
$ bundle install
|
40
58
|
$ rake test:func:android # Andorid, uiautomator2
|
41
|
-
$
|
59
|
+
$ APPIUM_DRIVER=espresso rake test:func:android # Andorid, uiautomator2
|
42
60
|
$ rake test:func:ios # iOS
|
43
61
|
```
|
44
62
|
|
@@ -78,7 +96,7 @@ $ PARALLEL=1 bundle exec parallel_test test/functional/ios -n 2
|
|
78
96
|
|
79
97
|
- Runs on CI environment (on Azure)
|
80
98
|
- Non `IGNORE_VERSION_SKIP` or `IGNORE_VERSION_SKIP=true` runs all tests ignoring `skip` them by Appium versions
|
81
|
-
- `IGNORE_VERSION_SKIP=false` skips the following tests if the Appium version is lower than the requirement
|
99
|
+
- `IGNORE_VERSION_SKIP=false` skips the following tests if the Appium version is lower than the requirement
|
82
100
|
|
83
101
|
```
|
84
102
|
$ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
|
@@ -92,14 +110,14 @@ $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
|
|
92
110
|
```ruby
|
93
111
|
require 'rubygems'
|
94
112
|
require 'appium_lib_core'
|
95
|
-
|
113
|
+
|
96
114
|
opts = {
|
97
|
-
|
98
|
-
platformName:
|
115
|
+
capabilities: { # Append capabilities
|
116
|
+
platformName: 'ios',
|
99
117
|
platformVersion: '11.0',
|
100
118
|
deviceName: 'iPhone Simulator',
|
101
|
-
|
102
|
-
|
119
|
+
# app: '/path/to/MyiOS.app', # Without 'app' capability, an appium session starts with the home screen
|
120
|
+
automationName: 'XCUITest'
|
103
121
|
},
|
104
122
|
appium_lib: {
|
105
123
|
wait: 30
|
@@ -107,7 +125,7 @@ $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
|
|
107
125
|
}
|
108
126
|
@core = Appium::Core.for(opts) # create a core driver with `opts`
|
109
127
|
@driver = @core.start_driver
|
110
|
-
|
128
|
+
|
111
129
|
# Launch iPhone Simulator and `MyiOS.app`
|
112
130
|
@driver.find_element(:accessibility_id, 'some accessibility') # find an element
|
113
131
|
```
|
@@ -115,18 +133,52 @@ $ IGNORE_VERSION_SKIP=true CI=true bundle exec rake test:func:android
|
|
115
133
|
```bash
|
116
134
|
# shell 1
|
117
135
|
$ appium --log-level warn:error # show only warning and error logs
|
118
|
-
|
136
|
+
|
119
137
|
# shell 2
|
120
138
|
$ ruby test.rb
|
121
139
|
```
|
122
140
|
|
123
|
-
|
141
|
+
[Appium::Core.for](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Driver#for-class_method) documentation has more example to build a new driver instance.
|
142
|
+
|
143
|
+
More examples are in [test/functional](test/functional)
|
144
|
+
|
145
|
+
As of version 5.8.0, the client can attach to an existing session. The main purpose is for debugging.
|
146
|
+
|
147
|
+
```ruby
|
148
|
+
# @driver is the driver instance of an existing session
|
149
|
+
attached_driver = ::Appium::Core::Driver.attach_to @driver.session_id, url: 'http://127.0.0.1:4723/wd/hub', automation_name: 'XCUITest', platform_name: 'ios'
|
150
|
+
assert attached_driver.session_id == @driver.session_id
|
151
|
+
attached_driver.page_source
|
152
|
+
```
|
124
153
|
|
125
154
|
### Capabilities
|
126
155
|
|
127
156
|
Read [Appium/Core/Driver](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Driver) to catch up with available capabilities.
|
128
157
|
Capabilities affect only ruby_lib is [Appium/Core/Options](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Options).
|
129
158
|
|
159
|
+
|
160
|
+
### Gives custom listener
|
161
|
+
|
162
|
+
An example to define a customer listener with [Selenium::WebDriver::Support::AbstractEventListener](https://www.selenium.dev/selenium/docs/api/rb/Selenium/WebDriver/Support/AbstractEventListener.html)
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
class CustomListener < ::Selenium::WebDriver::Support::AbstractEventListener
|
166
|
+
// something
|
167
|
+
end
|
168
|
+
capabilities: {
|
169
|
+
platformName: :ios,
|
170
|
+
platformVersion: '11.0',
|
171
|
+
deviceName: 'iPhone Simulator',
|
172
|
+
automationName: 'XCUITest',
|
173
|
+
app: '/path/to/MyiOS.app'
|
174
|
+
},
|
175
|
+
appium_lib: {
|
176
|
+
listener: CustomListener.new
|
177
|
+
}
|
178
|
+
@core = Appium::Core.for capabilities: capabilities, appium_lib: appium_lib
|
179
|
+
@core.start_driver
|
180
|
+
```
|
181
|
+
|
130
182
|
# Development
|
131
183
|
- Demo app
|
132
184
|
- https://android.googlesource.com/platform/development/+/master/samples/ApiDemos
|
data/Rakefile
CHANGED
@@ -38,6 +38,7 @@ namespace :test do
|
|
38
38
|
namespace :unit do
|
39
39
|
desc('Run all iOS related unit tests in test directory')
|
40
40
|
Rake::TestTask.new(:ios) do |t|
|
41
|
+
ENV['UNIT_TEST'] = '1'
|
41
42
|
t.libs << 'test'
|
42
43
|
t.libs << 'lib'
|
43
44
|
t.test_files = FileList['test/unit/ios/**/*_test.rb']
|
@@ -45,6 +46,7 @@ namespace :test do
|
|
45
46
|
|
46
47
|
desc('Run all Android related unit tests in test directory')
|
47
48
|
Rake::TestTask.new(:android) do |t|
|
49
|
+
ENV['UNIT_TEST'] = '1'
|
48
50
|
t.libs << 'test'
|
49
51
|
t.libs << 'lib'
|
50
52
|
t.test_files = FileList['test/unit/android/**/*_test.rb']
|
@@ -52,6 +54,7 @@ namespace :test do
|
|
52
54
|
|
53
55
|
desc('Run all common related unit tests in test directory')
|
54
56
|
Rake::TestTask.new(:common) do |t|
|
57
|
+
ENV['UNIT_TEST'] = '1'
|
55
58
|
t.libs << 'test'
|
56
59
|
t.libs << 'lib'
|
57
60
|
t.test_files = FileList['test/unit/common/**/*_test.rb']
|
@@ -59,6 +62,7 @@ namespace :test do
|
|
59
62
|
|
60
63
|
desc('Run all Windows related unit tests in test directory')
|
61
64
|
Rake::TestTask.new(:windows) do |t|
|
65
|
+
ENV['UNIT_TEST'] = '1'
|
62
66
|
t.libs << 'test'
|
63
67
|
t.libs << 'lib'
|
64
68
|
t.test_files = FileList['test/unit/windows/**/*_test.rb']
|
@@ -109,28 +113,12 @@ end
|
|
109
113
|
|
110
114
|
desc('Execute RuboCop static code analysis')
|
111
115
|
RuboCop::RakeTask.new(:rubocop) do |t|
|
112
|
-
t.patterns = %w(lib test
|
116
|
+
t.patterns = %w(lib test)
|
113
117
|
t.options = %w(-D)
|
114
118
|
t.fail_on_error = true
|
115
119
|
end
|
116
120
|
|
117
|
-
desc('
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
desc('Mobile JSON protocol')
|
122
|
-
task :mjsonwp do |_t, _args|
|
123
|
-
c = Script::CommandsChecker.new
|
124
|
-
c.get_mjsonwp_routes
|
125
|
-
c.get_all_command_path './mjsonwp_routes.js'
|
126
|
-
c.all_diff_commands_mjsonwp.each { |key, value| puts("command: #{key}, method: #{value}") }
|
127
|
-
end
|
128
|
-
|
129
|
-
desc('W3C protocol')
|
130
|
-
task :w3c do |_t, _args|
|
131
|
-
c = Script::CommandsChecker.new
|
132
|
-
c.get_mjsonwp_routes
|
133
|
-
c.get_all_command_path './mjsonwp_routes.js'
|
134
|
-
c.all_diff_commands_w3c.each { |key, value| puts("command: #{key}, method: #{value}") }
|
135
|
-
end
|
121
|
+
desc('Run Steep type check')
|
122
|
+
task :steep do
|
123
|
+
system('steep check')
|
136
124
|
end
|
data/Steepfile
ADDED
data/appium_lib_core.gemspec
CHANGED
@@ -1,40 +1,38 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'appium_lib_core/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.required_ruby_version = '>=
|
6
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 3.0')
|
8
7
|
|
9
8
|
spec.name = 'appium_lib_core'
|
10
9
|
spec.version = Appium::Core::VERSION
|
11
10
|
spec.authors = ['Kazuaki MATSUO']
|
12
11
|
spec.email = ['fly.49.89.over@gmail.com']
|
13
12
|
|
14
|
-
spec.summary =
|
15
|
-
spec.description =
|
13
|
+
spec.summary = 'Minimal Ruby library for Appium.'
|
14
|
+
spec.description = 'Minimal Ruby library for Appium.'
|
16
15
|
spec.homepage = 'https://github.com/appium/ruby_lib_core/'
|
17
16
|
spec.license = 'Apache-2.0'
|
18
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
-
f.match(%r{^(doc|test|spec|features)
|
18
|
+
f.match(%r{(^(doc|docs|test|spec|features|ci-jobs|.github|script)/|release_notes.md|.gitignore|azure-pipelines.yml|.rubocop.yml)})
|
20
19
|
end
|
21
20
|
spec.bindir = 'exe'
|
22
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
22
|
spec.require_paths = ['lib']
|
24
23
|
|
25
|
-
spec.add_runtime_dependency 'selenium-webdriver', '~> 3.14', '>= 3.14.1'
|
26
24
|
spec.add_runtime_dependency 'faye-websocket', '~> 0.11.0'
|
25
|
+
spec.add_runtime_dependency 'selenium-webdriver', '~> 4.21'
|
27
26
|
|
28
|
-
spec.add_development_dependency '
|
29
|
-
spec.add_development_dependency 'rake', '~> 13.0'
|
30
|
-
spec.add_development_dependency 'yard', '~> 0.9.11'
|
27
|
+
spec.add_development_dependency 'appium_thor', '~> 2.0'
|
31
28
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
32
29
|
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
33
|
-
spec.add_development_dependency 'webmock', '~> 3.11.0'
|
34
|
-
spec.add_development_dependency 'rubocop', '1.7.0'
|
35
|
-
spec.add_development_dependency 'appium_thor', '~> 1.0'
|
36
|
-
spec.add_development_dependency 'pry'
|
37
|
-
spec.add_development_dependency 'pry-byebug'
|
38
30
|
spec.add_development_dependency 'parallel_tests'
|
31
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
32
|
+
spec.add_development_dependency 'rubocop', '1.65.1'
|
39
33
|
spec.add_development_dependency 'simplecov'
|
34
|
+
spec.add_development_dependency 'steep', '~> 1.7.0'
|
35
|
+
spec.add_development_dependency 'webmock', '~> 3.23.0'
|
36
|
+
spec.add_development_dependency 'yard', '~> 0.9.11'
|
37
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
40
38
|
end
|
data/bin/console
CHANGED
@@ -6,9 +6,5 @@ require "appium_lib_core"
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
9
|
require "irb"
|
14
10
|
IRB.start(__FILE__)
|
@@ -20,8 +20,11 @@ module Appium
|
|
20
20
|
def self.add_methods
|
21
21
|
::Appium::Core::Device.add_endpoint_method(:finger_print) do
|
22
22
|
def finger_print(finger_id)
|
23
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: fingerprint' extension instead"
|
24
|
+
|
23
25
|
unless (1..10).cover? finger_id.to_i
|
24
|
-
raise ArgumentError,
|
26
|
+
raise ::Appium::Core::Error::ArgumentError,
|
27
|
+
"finger_id should be integer between 1 to 10. Not #{finger_id}"
|
25
28
|
end
|
26
29
|
|
27
30
|
execute(:finger_print, {}, { fingerprintId: finger_id.to_i })
|
@@ -23,7 +23,8 @@ module Appium
|
|
23
23
|
::Appium::Core::Device.add_endpoint_method(:get_clipboard) do
|
24
24
|
def get_clipboard(content_type: :plaintext)
|
25
25
|
unless ::Appium::Core::Base::Device::Clipboard::CONTENT_TYPE.member?(content_type)
|
26
|
-
raise
|
26
|
+
raise ::Appium::Core::Error::ArgumentError,
|
27
|
+
"content_type should be #{::Appium::Core::Base::Device::Clipboard::CONTENT_TYPE}"
|
27
28
|
end
|
28
29
|
|
29
30
|
params = { contentType: content_type }
|
@@ -36,7 +37,8 @@ module Appium
|
|
36
37
|
::Appium::Core::Device.add_endpoint_method(:set_clipboard) do
|
37
38
|
def set_clipboard(content:, content_type: :plaintext, label: nil)
|
38
39
|
unless ::Appium::Core::Base::Device::Clipboard::CONTENT_TYPE.member?(content_type)
|
39
|
-
raise
|
40
|
+
raise ::Appium::Core::Error::ArgumentError,
|
41
|
+
"content_type should be #{::Appium::Core::Base::Device::Clipboard::CONTENT_TYPE}"
|
40
42
|
end
|
41
43
|
|
42
44
|
params = {
|
@@ -122,7 +122,7 @@ module Appium
|
|
122
122
|
::Appium::Core::Device.add_endpoint_method(:gsm_call) do
|
123
123
|
def gsm_call(phone_number:, action:)
|
124
124
|
unless GSM_CALL_ACTIONS.member? action.to_sym
|
125
|
-
raise "action: should be member of #{GSM_CALL_ACTIONS}. Not #{action}."
|
125
|
+
raise ::Appium::Core::Error::ArgumentError, "action: should be member of #{GSM_CALL_ACTIONS}. Not #{action}."
|
126
126
|
end
|
127
127
|
|
128
128
|
execute(:gsm_call, {}, { phoneNumber: phone_number, action: action })
|
@@ -131,7 +131,10 @@ module Appium
|
|
131
131
|
|
132
132
|
::Appium::Core::Device.add_endpoint_method(:gsm_signal) do
|
133
133
|
def gsm_signal(signal_strength)
|
134
|
-
|
134
|
+
if GSM_SIGNALS[signal_strength.to_sym].nil?
|
135
|
+
raise ::Appium::Core::Error::ArgumentError,
|
136
|
+
"#{signal_strength} should be member of #{GSM_SIGNALS.keys} "
|
137
|
+
end
|
135
138
|
|
136
139
|
execute(:gsm_signal, {}, { signalStrength: GSM_SIGNALS[signal_strength],
|
137
140
|
signalStrengh: GSM_SIGNALS[signal_strength] })
|
@@ -141,7 +144,7 @@ module Appium
|
|
141
144
|
::Appium::Core::Device.add_endpoint_method(:gsm_voice) do
|
142
145
|
def gsm_voice(state)
|
143
146
|
unless GSM_VOICE_STATES.member? state.to_sym
|
144
|
-
raise "The state should be member of #{GSM_VOICE_STATES}. Not #{state}."
|
147
|
+
raise ::Appium::Core::Error::ArgumentError, "The state should be member of #{GSM_VOICE_STATES}. Not #{state}."
|
145
148
|
end
|
146
149
|
|
147
150
|
execute(:gsm_voice, {}, { state: state })
|
@@ -150,7 +153,10 @@ module Appium
|
|
150
153
|
|
151
154
|
::Appium::Core::Device.add_endpoint_method(:set_network_speed) do
|
152
155
|
def set_network_speed(netspeed)
|
153
|
-
|
156
|
+
unless NET_SPEED.member? netspeed.to_sym
|
157
|
+
raise ::Appium::Core::Error::ArgumentError,
|
158
|
+
"The netspeed should be member of #{NET_SPEED}. Not #{netspeed}."
|
159
|
+
end
|
154
160
|
|
155
161
|
execute(:set_network_speed, {}, { netspeed: netspeed })
|
156
162
|
end
|
@@ -169,7 +175,7 @@ module Appium
|
|
169
175
|
::Appium::Core::Device.add_endpoint_method(:set_power_ac) do
|
170
176
|
def set_power_ac(state)
|
171
177
|
unless POWER_AC_STATE.member? state.to_sym
|
172
|
-
raise "The state should be member of #{POWER_AC_STATE}. Not #{state}."
|
178
|
+
raise ::Appium::Core::Error::ArgumentError, "The state should be member of #{POWER_AC_STATE}. Not #{state}."
|
173
179
|
end
|
174
180
|
|
175
181
|
execute(:set_power_ac, {}, { state: state })
|
@@ -20,24 +20,32 @@ module Appium
|
|
20
20
|
def self.add_methods
|
21
21
|
::Appium::Core::Device.add_endpoint_method(:get_network_connection) do
|
22
22
|
def get_network_connection
|
23
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: getConnectivity' extension instead"
|
24
|
+
|
23
25
|
execute :get_network_connection
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
29
|
::Appium::Core::Device.add_endpoint_method(:toggle_wifi) do
|
28
30
|
def toggle_wifi
|
31
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: setConnectivity' extension instead"
|
32
|
+
|
29
33
|
execute :toggle_wifi
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
33
37
|
::Appium::Core::Device.add_endpoint_method(:toggle_data) do
|
34
38
|
def toggle_data
|
39
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: setConnectivity' extension instead"
|
40
|
+
|
35
41
|
execute :toggle_data
|
36
42
|
end
|
37
43
|
end
|
38
44
|
|
39
45
|
::Appium::Core::Device.add_endpoint_method(:set_network_connection) do
|
40
46
|
def set_network_connection(mode)
|
47
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: setConnectivity' extension instead"
|
48
|
+
|
41
49
|
# same as ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection
|
42
50
|
# But this method accept number
|
43
51
|
connection_type = { airplane_mode: 1, wifi: 2, data: 4, all: 6, none: 0 }
|
@@ -49,6 +57,8 @@ module Appium
|
|
49
57
|
|
50
58
|
::Appium::Core::Device.add_endpoint_method(:toggle_airplane_mode) do
|
51
59
|
def toggle_airplane_mode
|
60
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: setConnectivity' extension instead"
|
61
|
+
|
52
62
|
execute :toggle_airplane_mode
|
53
63
|
end
|
54
64
|
alias_method :toggle_flight_mode, :toggle_airplane_mode
|
@@ -20,12 +20,15 @@ module Appium
|
|
20
20
|
def self.add_methods
|
21
21
|
::Appium::Core::Device.add_endpoint_method(:get_performance_data_types) do
|
22
22
|
def get_performance_data_types
|
23
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: getPerformanceDataTypes' extension instead"
|
23
24
|
execute :get_performance_data_types
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
28
|
::Appium::Core::Device.add_endpoint_method(:get_performance_data) do
|
28
29
|
def get_performance_data(package_name:, data_type:, data_read_timeout: 1000)
|
30
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: getPerformanceData' extension instead"
|
31
|
+
|
29
32
|
execute(:get_performance_data, {},
|
30
33
|
packageName: package_name, dataType: data_type, dataReadTimeout: data_read_timeout)
|
31
34
|
end
|
@@ -20,6 +20,8 @@ module Appium
|
|
20
20
|
def self.add_methods
|
21
21
|
::Appium::Core::Device.add_endpoint_method(:get_display_density) do
|
22
22
|
def get_display_density
|
23
|
+
::Appium::Logger.warn "[DEPRECATION] Please use 'mobile: getDisplayDensity' extension instead"
|
24
|
+
|
23
25
|
execute :get_display_density
|
24
26
|
end
|
25
27
|
end
|
@@ -39,7 +41,9 @@ module Appium
|
|
39
41
|
option[:bitRate] = bit_rate unless bit_rate.nil?
|
40
42
|
|
41
43
|
unless bug_report.nil?
|
42
|
-
|
44
|
+
unless [true, false].member?(bug_report)
|
45
|
+
raise ::Appium::Core::Error::ArgumentError, 'bug_report should be true or false'
|
46
|
+
end
|
43
47
|
|
44
48
|
option[:bugReport] = bug_report
|
45
49
|
end
|