appium_lib_core 1.0.0 → 1.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.
- checksums.yaml +4 -4
- data/.github/contributing.md +23 -0
- data/.github/issue_template.md +20 -0
- data/CHANGELOG.md +3 -0
- data/Rakefile +9 -1
- data/lib/appium_lib_core/android/touch.rb +2 -0
- data/lib/appium_lib_core/common/base/bridge.rb +13 -0
- data/lib/appium_lib_core/common/command.rb +2 -0
- data/lib/appium_lib_core/common/device.rb +101 -26
- data/lib/appium_lib_core/ios/touch.rb +2 -0
- data/lib/appium_lib_core/version.rb +2 -2
- data/release_notes.md +14 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb8a3502ee734114622e3474545af77b125ec43d
|
4
|
+
data.tar.gz: fe71c68a3d9006e06381d5d04219bbbaa777d35b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29224ca9a8bde5e159eb7e9bb0d37c73a73ed595aeb21849a4da3b47bf2f09c50bd2f0906d419b824e32f57c15a43e9bb6ea4a1b0d17799b307987a00f0b816d
|
7
|
+
data.tar.gz: 58fc2392b7963aff9b934d746196438889af995f2a902327ded1b79c9e4abf23088fea5ddca7eeb0628ab1a538b6b9b4931686defabe172f6ecf64fc97187e1c
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
For features or bug fixes, please submit a pull request. Ideally there would be a test as well. The remainder of this doc details how to run the tests.
|
4
|
+
|
5
|
+
## Tests
|
6
|
+
### Unit Tests
|
7
|
+
- `rake test:unit` run on Travis automatically
|
8
|
+
|
9
|
+
### Functional Tests
|
10
|
+
- iOS
|
11
|
+
- `rake test:func:ios`
|
12
|
+
- Android
|
13
|
+
- `rake test:func:android`
|
14
|
+
|
15
|
+
## Publishing on rubygems
|
16
|
+
|
17
|
+
0. Ensure you have `~/.gem/credentials` If not run [the following command](http://guides.rubygems.org/make-your-own-gem/) (replace username with your rubygems user)
|
18
|
+
> $ curl -u username https://rubygems.org/api/v1/api_key.yaml >
|
19
|
+
~/.gem/credentials; chmod 0600 ~/.gem/credentials
|
20
|
+
|
21
|
+
1. Bump the version number `thor bump`
|
22
|
+
2. Generate release note, build and publish gem with `thor release`
|
23
|
+
3. Update `changelog.md`
|
@@ -0,0 +1,20 @@
|
|
1
|
+
## This is a
|
2
|
+
* [ ] Bug report
|
3
|
+
* [ ] Question
|
4
|
+
* [ ] Feature Request
|
5
|
+
|
6
|
+
## Summary
|
7
|
+
|
8
|
+
## Environment
|
9
|
+
* `ruby_lib_core` version:
|
10
|
+
* Mobile platform/version/device under test:
|
11
|
+
|
12
|
+
## Actual behaviour and steps to reproduce
|
13
|
+
|
14
|
+
## Expected behaviour
|
15
|
+
|
16
|
+
## Link to Appium/Ruby logs
|
17
|
+
|
18
|
+
Create a [GIST](https://gist.github.com) which is a paste of your _full_ Appium logs, and link them here.
|
19
|
+
|
20
|
+
## Any additional comments
|
data/CHANGELOG.md
CHANGED
@@ -3,8 +3,11 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
|
4
4
|
## [Unreleased]
|
5
5
|
### Enhancements
|
6
|
+
- Add guidelines in `.github`
|
7
|
+
- session/:session_id/appium/device/keyevent [#21](https://github.com/appium/ruby_lib_core/issues/21)
|
6
8
|
|
7
9
|
### Bug fixes
|
10
|
+
- fix creating sessions [#31](https://github.com/appium/ruby_lib_core/pull/31) for W3C creating sessions
|
8
11
|
|
9
12
|
### Deprecations
|
10
13
|
|
data/Rakefile
CHANGED
@@ -63,11 +63,19 @@ end
|
|
63
63
|
|
64
64
|
desc("print commands which haven't implemented yet.")
|
65
65
|
namespace :commands do
|
66
|
+
require './script/commands'
|
67
|
+
|
66
68
|
task :mjsonwp do |_t, _args|
|
67
|
-
require './script/commands'
|
68
69
|
c = Script::CommandsChecker.new
|
69
70
|
c.get_mjsonwp_routes
|
70
71
|
c.get_all_command_path './mjsonwp_routes.js'
|
71
72
|
c.all_diff_commands_mjsonwp.each { |key, value| puts("command: #{key}, method: #{value}") }
|
72
73
|
end
|
74
|
+
|
75
|
+
task :w3c do |_t, _args|
|
76
|
+
c = Script::CommandsChecker.new
|
77
|
+
c.get_mjsonwp_routes
|
78
|
+
c.get_all_command_path './mjsonwp_routes.js'
|
79
|
+
c.all_diff_commands_w3c.each { |key, value| puts("command: #{key}, method: #{value}") }
|
80
|
+
end
|
73
81
|
end
|
@@ -4,6 +4,8 @@ module Appium
|
|
4
4
|
module Touch
|
5
5
|
def self.extend_touch_actions
|
6
6
|
::Appium::Core::TouchAction.class_eval do
|
7
|
+
# Visible for testing
|
8
|
+
# @private
|
7
9
|
def swipe_coordinates(start_x: 0, start_y: 0, offset_x: 0, offset_y: 0)
|
8
10
|
Appium::Logger.info "extended Appium::Core::Android::Touch, start_x: #{start_x},"\
|
9
11
|
" start_y: #{start_y}, offset_x: #{offset_x}, offset_y: #{offset_y}"
|
@@ -24,6 +24,19 @@ module Appium
|
|
24
24
|
raise CoreError, 'cannot understand dialect'
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# Use capabilities directory because Appium's capability is based on W3C one.
|
31
|
+
# Called in bridge.create_session(desired_capabilities)
|
32
|
+
def merged_capabilities(desired_capabilities)
|
33
|
+
{
|
34
|
+
desiredCapabilities: desired_capabilities,
|
35
|
+
capabilities: {
|
36
|
+
firstMatch: [desired_capabilities]
|
37
|
+
}
|
38
|
+
}
|
39
|
+
end
|
27
40
|
end # class Bridge
|
28
41
|
|
29
42
|
class CoreBridgeMJSONWP < ::Selenium::WebDriver::Remote::OSS::Bridge
|
@@ -43,6 +43,8 @@ module Appium
|
|
43
43
|
hide_keyboard: [:post, 'session/:session_id/appium/device/hide_keyboard'.freeze],
|
44
44
|
press_keycode: [:post, 'session/:session_id/appium/device/press_keycode'.freeze],
|
45
45
|
long_press_keycode: [:post, 'session/:session_id/appium/device/long_press_keycode'.freeze],
|
46
|
+
# keyevent is only for Selendroid
|
47
|
+
keyevent: [:post, 'session/:session_id/appium/device/keyevent'.freeze],
|
46
48
|
set_immediate_value: [:post, 'session/:session_id/appium/element/:id/value'.freeze],
|
47
49
|
replace_value: [:post, 'session/:session_id/appium/element/:id/replace_value'.freeze],
|
48
50
|
push_file: [:post, 'session/:session_id/appium/device/push_file'.freeze],
|
@@ -61,6 +61,14 @@ module Appium
|
|
61
61
|
# @driver.launch_app
|
62
62
|
#
|
63
63
|
|
64
|
+
# @!method close_app
|
65
|
+
# Close an app on device
|
66
|
+
#
|
67
|
+
# @example
|
68
|
+
#
|
69
|
+
# @driver.close_app
|
70
|
+
#
|
71
|
+
|
64
72
|
# @!method reset
|
65
73
|
# Reset the device, relaunching the application.
|
66
74
|
#
|
@@ -85,6 +93,14 @@ module Appium
|
|
85
93
|
# @driver.toggle_flight_mode
|
86
94
|
#
|
87
95
|
|
96
|
+
# @!method unlock
|
97
|
+
# Unlock the device
|
98
|
+
#
|
99
|
+
# @example
|
100
|
+
#
|
101
|
+
# @driver.unlock
|
102
|
+
#
|
103
|
+
|
88
104
|
# @!method device_locked?
|
89
105
|
# Check current device status is weather locked or not
|
90
106
|
#
|
@@ -97,10 +113,52 @@ module Appium
|
|
97
113
|
# Get the device network connection current status
|
98
114
|
# See set_network_connection method for return value
|
99
115
|
|
116
|
+
# @!method open_notifications
|
117
|
+
# Open Android notifications
|
118
|
+
#
|
119
|
+
# @example
|
120
|
+
#
|
121
|
+
# @driver.open_notifications
|
122
|
+
#
|
123
|
+
|
124
|
+
# @!method device_time
|
125
|
+
# Get the time on the device
|
126
|
+
# @return [String]
|
127
|
+
#
|
128
|
+
# @example
|
129
|
+
#
|
130
|
+
# @driver.device_time
|
131
|
+
#
|
132
|
+
|
100
133
|
####
|
101
134
|
## With arguments
|
102
135
|
####
|
103
136
|
|
137
|
+
# @!method install_app(path)
|
138
|
+
# Install the given app onto the device
|
139
|
+
#
|
140
|
+
# @example
|
141
|
+
#
|
142
|
+
# @driver.install_app("/path/to/test.apk")
|
143
|
+
#
|
144
|
+
|
145
|
+
# @!method remove_app(app_id)
|
146
|
+
# Install the given app onto the device
|
147
|
+
#
|
148
|
+
# @example
|
149
|
+
#
|
150
|
+
# @driver.remove_app("io.appium.bundle")
|
151
|
+
#
|
152
|
+
|
153
|
+
# @!method app_installed?(app_id)
|
154
|
+
# Check whether the specified app is installed on the device
|
155
|
+
# @return [bool]
|
156
|
+
#
|
157
|
+
# @example
|
158
|
+
#
|
159
|
+
# @driver.app_installed?("io.appium.bundle")
|
160
|
+
#
|
161
|
+
|
104
162
|
# @!method app_strings(language = nil)
|
105
163
|
# Return the hash of all localization strings.
|
106
164
|
# @return [Hash]
|
@@ -138,6 +196,17 @@ module Appium
|
|
138
196
|
# @driver.hide_keyboard(nil, :tapOutside) # Close a keyboard with tapping out side of keyboard
|
139
197
|
#
|
140
198
|
|
199
|
+
# @!method keyevent(key, metastate = nil)
|
200
|
+
# Send keyevent on the device.(Only for Selendroid)
|
201
|
+
# http://developer.android.com/reference/android/view/KeyEvent.html
|
202
|
+
# @param [integer] key The key to press.
|
203
|
+
# @param [String] metastate The state the metakeys should be in when pressing the key.
|
204
|
+
#
|
205
|
+
# @example
|
206
|
+
#
|
207
|
+
# @driver.keyevent 82
|
208
|
+
#
|
209
|
+
|
141
210
|
# @!method press_keycode(key, metastate = nil)
|
142
211
|
# Press keycode on the device.
|
143
212
|
# http://developer.android.com/reference/android/view/KeyEvent.html
|
@@ -167,7 +236,7 @@ module Appium
|
|
167
236
|
#
|
168
237
|
# @example
|
169
238
|
#
|
170
|
-
# @driver.push_file "/file/to/path", data
|
239
|
+
# @driver.push_file "/file/to/path", "data"
|
171
240
|
#
|
172
241
|
|
173
242
|
# @!method pull_file(path)
|
@@ -318,13 +387,6 @@ module Appium
|
|
318
387
|
add_endpoint_method method
|
319
388
|
end
|
320
389
|
|
321
|
-
# call http://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/DriverExtensions/HasRemoteStatus#remote_status-instance_method
|
322
|
-
add_endpoint_method(:remote_status) do
|
323
|
-
def remote_status
|
324
|
-
execute(:status, {}) || []
|
325
|
-
end
|
326
|
-
end
|
327
|
-
|
328
390
|
# Don't define selenium-side methods. We pick up from them.
|
329
391
|
# ::Appium::Core::Base::Commands::MJSONWP.each_key do |method|
|
330
392
|
# add_endpoint_method method
|
@@ -345,8 +407,9 @@ module Appium
|
|
345
407
|
end
|
346
408
|
|
347
409
|
add_endpoint_method(:lock) do
|
348
|
-
def lock(duration)
|
349
|
-
|
410
|
+
def lock(duration = nil)
|
411
|
+
opts = duration ? { seconds: duration } : {}
|
412
|
+
execute :lock, {}, opts
|
350
413
|
end
|
351
414
|
end
|
352
415
|
|
@@ -391,22 +454,6 @@ module Appium
|
|
391
454
|
end
|
392
455
|
end
|
393
456
|
|
394
|
-
add_endpoint_method(:press_keycode) do
|
395
|
-
def press_keycode(key, metastate = nil)
|
396
|
-
args = { keycode: key }
|
397
|
-
args[:metastate] = metastate if metastate
|
398
|
-
execute :press_keycode, {}, args
|
399
|
-
end
|
400
|
-
end
|
401
|
-
|
402
|
-
add_endpoint_method(:long_press_keycode) do
|
403
|
-
def long_press_keycode(key, metastate = nil)
|
404
|
-
args = { keycode: key }
|
405
|
-
args[:metastate] = metastate if metastate
|
406
|
-
execute :long_press_keycode, {}, args
|
407
|
-
end
|
408
|
-
end
|
409
|
-
|
410
457
|
add_endpoint_method(:set_immediate_value) do
|
411
458
|
def set_immediate_value(element, *value)
|
412
459
|
keys = ::Selenium::WebDriver::Keys.encode(value)
|
@@ -454,6 +501,7 @@ module Appium
|
|
454
501
|
end
|
455
502
|
end
|
456
503
|
|
504
|
+
add_keyevent
|
457
505
|
add_touch_actions
|
458
506
|
add_ime_actions
|
459
507
|
add_handling_context
|
@@ -498,6 +546,33 @@ module Appium
|
|
498
546
|
end
|
499
547
|
end
|
500
548
|
|
549
|
+
def add_keyevent
|
550
|
+
# Only for Selendroid
|
551
|
+
add_endpoint_method(:keyevent) do
|
552
|
+
def keyevent(key, metastate = nil)
|
553
|
+
args = { keycode: key }
|
554
|
+
args[:metastate] = metastate if metastate
|
555
|
+
execute :keyevent, {}, args
|
556
|
+
end
|
557
|
+
end
|
558
|
+
|
559
|
+
add_endpoint_method(:press_keycode) do
|
560
|
+
def press_keycode(key, metastate = nil)
|
561
|
+
args = { keycode: key }
|
562
|
+
args[:metastate] = metastate if metastate
|
563
|
+
execute :press_keycode, {}, args
|
564
|
+
end
|
565
|
+
end
|
566
|
+
|
567
|
+
add_endpoint_method(:long_press_keycode) do
|
568
|
+
def long_press_keycode(key, metastate = nil)
|
569
|
+
args = { keycode: key }
|
570
|
+
args[:metastate] = metastate if metastate
|
571
|
+
execute :long_press_keycode, {}, args
|
572
|
+
end
|
573
|
+
end
|
574
|
+
end
|
575
|
+
|
501
576
|
def add_touch_actions
|
502
577
|
add_endpoint_method(:touch_actions) do
|
503
578
|
def touch_actions(actions)
|
@@ -4,6 +4,8 @@ module Appium
|
|
4
4
|
module Touch
|
5
5
|
def self.extend_touch_actions
|
6
6
|
::Appium::Core::TouchAction.class_eval do
|
7
|
+
# Visible for testing
|
8
|
+
# @private
|
7
9
|
def swipe_coordinates(start_x: 0, start_y: 0, offset_x: 0, offset_y: 0)
|
8
10
|
Appium::Logger.info "extended Appium::Core::Ios::Touch, start_x: #{start_x},"\
|
9
11
|
" start_y: #{start_y}, offset_x: #{offset_x}, offset_y: #{offset_y}"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Appium
|
2
2
|
module Core
|
3
|
-
VERSION = '1.
|
4
|
-
DATE = '2017-
|
3
|
+
VERSION = '1.1.0'.freeze unless defined? ::Appium::Core::VERSION
|
4
|
+
DATE = '2017-12-16'.freeze unless defined? ::Appium::Core::DATE
|
5
5
|
end
|
6
6
|
end
|
data/release_notes.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
#### v1.1.0 2017-12-16
|
2
|
+
|
3
|
+
- [29b36af](https://github.com/appium/ruby_lib_core/commit/29b36af7af280308f7cfc2ee7ffa1738085e0306) Release 1.1.0
|
4
|
+
- [f7eefc3](https://github.com/appium/ruby_lib_core/commit/f7eefc376f0d00fb9bc3e8324c652544cb363a9b) fix creating sessions (#31)
|
5
|
+
- [08c826f](https://github.com/appium/ruby_lib_core/commit/08c826f78ce861e8bd35b7bced54c9bd91d2fabc) for test code: add taking screens if tests failed (#30)
|
6
|
+
- [f14c924](https://github.com/appium/ruby_lib_core/commit/f14c92435388e16598921685963cc7879eb7ba3a) insert @private
|
7
|
+
- [5eb125a](https://github.com/appium/ruby_lib_core/commit/5eb125a06e3bc5dfd59a749183d6ff46fd9c5a28) make setting tests robust
|
8
|
+
- [8bc97ce](https://github.com/appium/ruby_lib_core/commit/8bc97ce1258da79975fc347dc02dfdb14d06a8df) update comments for some commands (#29)
|
9
|
+
- [7de2e89](https://github.com/appium/ruby_lib_core/commit/7de2e89349c5dce775e91c15e0c8a5486b8cbc5e) Remove duplicated remote status (#28)
|
10
|
+
- [fcb64b7](https://github.com/appium/ruby_lib_core/commit/fcb64b7992c17d21b82b34cfd714d5dc150ae9a5) add keyevent (#27)
|
11
|
+
- [a54b315](https://github.com/appium/ruby_lib_core/commit/a54b315155ee68b79d6051046b7f7899d7d0dda9) add some guidelines
|
12
|
+
- [65d00cb](https://github.com/appium/ruby_lib_core/commit/65d00cb14bfbf6a3bdc3eded05d69037a3c06645) add a rake task for w3c
|
13
|
+
|
14
|
+
|
1
15
|
#### v1.0.0 2017-11-12
|
2
16
|
|
3
17
|
- [de176fe](https://github.com/appium/ruby_lib_core/commit/de176fe2fbcfaa341392e7f37ee537158ed2e23e) Release 1.0.0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appium_lib_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuaki MATSUO
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -183,6 +183,8 @@ executables: []
|
|
183
183
|
extensions: []
|
184
184
|
extra_rdoc_files: []
|
185
185
|
files:
|
186
|
+
- ".github/contributing.md"
|
187
|
+
- ".github/issue_template.md"
|
186
188
|
- ".gitignore"
|
187
189
|
- ".rubocop.yml"
|
188
190
|
- ".travis.yml"
|