RDee 0.8 → 0.9
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/.travis.yml +2 -2
- data/ChangeLog +5 -0
- data/README.md +37 -14
- data/features/mobile_remote.feature +7 -0
- data/features/step_definitions/rdee_steps.rb +12 -0
- data/lib/rdee/additional_options.rb +5 -0
- data/lib/rdee/browser_factory.rb +2 -2
- data/lib/rdee/desired_capabilities.rb +0 -1
- data/lib/rdee/mobile_capabilities.rb +1 -0
- data/lib/rdee/mobile_devices.rb +4 -2
- data/lib/rdee/target_parser.rb +2 -1
- data/lib/rdee/version.rb +1 -1
- data/spec/lib/moble_targets_spec.rb +36 -1
- data/spec/lib/rd_spec.rb +21 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '04889259fae611a4e82a6452441d2985b7aea701'
|
4
|
+
data.tar.gz: fff9ed349e53e614e59dcceb2bb3a3e274717c91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b612a6e7c7e96b669ce1089597c4a9f85cadb33de03b89496d7e83d00657c4dd44522964847314b04603ed249e3088c9fd9556f9d6b37d95e8a9bc160056b30
|
7
|
+
data.tar.gz: 61a8f13b4115cf55269c1b954a50099c8970de69da848cc0bba85e0869bc0a863c9b7af4bc2ddd488b1b35391d0230f8b5e621b1f3c0f909022835a0208751a9
|
data/.travis.yml
CHANGED
data/ChangeLog
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== Release 0.9 / 23 September 2017
|
2
|
+
* Enhancements
|
3
|
+
* Full support for all Android devices
|
4
|
+
* Ability to set additional android capabilities via configuration
|
5
|
+
|
1
6
|
=== Release 0.8 / 3 August 2017
|
2
7
|
* Enhancements
|
3
8
|
* Forced net-http-persistent to be less than 3.0 to fix issue with older Windows systems
|
data/README.md
CHANGED
@@ -57,9 +57,9 @@ it will select whatever version is available. It is up to you to make sure that
|
|
57
57
|
and version combination are valid.
|
58
58
|
|
59
59
|
For mobile the version is the version of the OS you require replacing the
|
60
|
-
dot with an underscore. For example, `:ios10_2` will use iOS 10.2
|
61
|
-
provide the additional information like the device type as
|
62
|
-
values. See below.
|
60
|
+
dot with an underscore. For example, `:ios10_2` will use iOS 10.2 and `:android4_4`
|
61
|
+
will use Android 4.4. You will provide the additional information like the device type as
|
62
|
+
additional values. See below.
|
63
63
|
|
64
64
|
Following the version there is an underscore followed by the host os. This value is also
|
65
65
|
optional. Currently the following host os values are available:
|
@@ -79,6 +79,7 @@ optional. Currently the following host os values are available:
|
|
79
79
|
| sierra | macOS 10.12 |
|
80
80
|
| linux | Linux |
|
81
81
|
| ios | 'iOS' |
|
82
|
+
| android | 'Android' |
|
82
83
|
|
83
84
|
The host os value is typically used when running the tests on a Selenium Grid. It is up to
|
84
85
|
you to ensure that the host and requested browser combination exist on your grid.
|
@@ -95,11 +96,12 @@ sent to a specific type of browser when it is used. Here are examples:
|
|
95
96
|
RDee.configure do | config |
|
96
97
|
config.url = 'http://path.to.selenium.grid/wd/hub'
|
97
98
|
config.persistent_http = true
|
98
|
-
config.chrome_options = { :switches => %w[--disable-extensions]}
|
99
|
-
config.firefox_options = { :switches => %w[--disable-popups]}
|
100
|
-
config.ie_options = { :switches => %w[--disable-popups]}
|
101
|
-
config.safari_options = { :switches => %w[--disable-popups]}
|
102
|
-
config.ios_options = { :switches => %w[--disable-popups]}
|
99
|
+
config.chrome_options = { :switches => %w[--disable-extensions] }
|
100
|
+
config.firefox_options = { :switches => %w[--disable-popups] }
|
101
|
+
config.ie_options = { :switches => %w[--disable-popups] }
|
102
|
+
config.safari_options = { :switches => %w[--disable-popups] }
|
103
|
+
config.ios_options = { :switches => %w[--disable-popups] }
|
104
|
+
config.android_options = { :switches => %w[--disable-popups] }
|
103
105
|
end
|
104
106
|
````
|
105
107
|
|
@@ -110,13 +112,25 @@ Here is an example:
|
|
110
112
|
|
111
113
|
````ruby
|
112
114
|
mobile_capabilities = {
|
113
|
-
appiumVersion: '1.6.
|
115
|
+
appiumVersion: '1.6.4',
|
114
116
|
deviceName: 'iPhone Simulator',
|
115
117
|
deviceOrientation: 'portrait'
|
116
118
|
}
|
117
119
|
RDee.watir_browser(target = :ios10_2, desired_capabilities: mobile_capabilities)
|
118
120
|
````
|
119
121
|
|
122
|
+
For Android it is extremely simular:
|
123
|
+
|
124
|
+
````ruby
|
125
|
+
mobile_capabilities = {
|
126
|
+
appiumVersion: '1.6.4',
|
127
|
+
deviceName: 'Google Nexus 7 HD Emulator',
|
128
|
+
deviceOrientation: 'portrait'
|
129
|
+
}
|
130
|
+
RDee.watir_browser(target = :android4_4, desired_capabilities: mobile_capabilities)
|
131
|
+
````
|
132
|
+
|
133
|
+
|
120
134
|
Another way to specify these additional capabilities is to specify them in the configure
|
121
135
|
block like this:
|
122
136
|
|
@@ -124,10 +138,15 @@ block like this:
|
|
124
138
|
RDee.configure do | config |
|
125
139
|
config.url = 'http://path.to.selenium.grid/wd/hub'
|
126
140
|
config.ios_capabilities = {
|
127
|
-
appiumVersion: '1.6.
|
141
|
+
appiumVersion: '1.6.4',
|
128
142
|
deviceName: 'iPhone Simulator',
|
129
143
|
deviceOrientation: 'portrait'
|
130
144
|
}
|
145
|
+
config.android_capabilities = {
|
146
|
+
appiumVersion: '1.6.4',
|
147
|
+
deviceName: 'Google Nexus 7 HD Emulator',
|
148
|
+
deviceOrientation: 'portrait'
|
149
|
+
}
|
131
150
|
end
|
132
151
|
````
|
133
152
|
|
@@ -137,14 +156,18 @@ Using the config allows us to set the values via environment variables without c
|
|
137
156
|
RDee.configure do | config |
|
138
157
|
config.url = 'http://path.to.selenium.grid/wd/hub'
|
139
158
|
config.ios_capabilities = {
|
140
|
-
appiumVersion: ENV['
|
141
|
-
deviceName: ENV['
|
142
|
-
deviceOrientation: ENV['
|
159
|
+
appiumVersion: ENV['ios_appiumVersion'],
|
160
|
+
deviceName: ENV['ios_deviceName'],
|
161
|
+
deviceOrientation: ENV['ios_deviceOrientation']
|
162
|
+
}
|
163
|
+
config.android_capabilities = {
|
164
|
+
appiumVersion: ENV['android_appiumVersion'],
|
165
|
+
deviceName: ENV['android_deviceName'],
|
166
|
+
deviceOrientation: ENV['android_deviceOrientation']
|
143
167
|
}
|
144
168
|
end
|
145
169
|
````
|
146
170
|
|
147
|
-
|
148
171
|
To see what options you should use please look at the
|
149
172
|
[Sauce Labs Configurator](https://wiki.saucelabs.com/display/DOCS/Platform+Configurator#/).
|
150
173
|
|
@@ -41,3 +41,10 @@ Feature: RDee should work well with mobile devices on a remote selenium grid
|
|
41
41
|
And I go to the cheezyworld site
|
42
42
|
And I select the first title link
|
43
43
|
Then I should see the text from the first heading
|
44
|
+
|
45
|
+
@mobile
|
46
|
+
Scenario: Creating an Android browser on android 4.4
|
47
|
+
When I establish a mobile android browser for android4_4 on the remote machine using Watir
|
48
|
+
And I go to the cheezyworld site
|
49
|
+
And I select the first title link
|
50
|
+
Then I should see the text from the first heading
|
@@ -38,6 +38,18 @@ When(/^I establish an? mobile browser for (.+) on the remote machine using (.+)$
|
|
38
38
|
url: 'http://rdee:730071ad-7331-4d65-bd56-ec3ebfdd8232@ondemand.saucelabs.com:80/wd/hub'
|
39
39
|
end
|
40
40
|
|
41
|
+
When(/^I establish an? mobile android browser for (.+) on the remote machine using (.+)$/) do |browser, platform|
|
42
|
+
mobile_options = {
|
43
|
+
appiumVersion: '1.6.4',
|
44
|
+
deviceName: 'Google Nexus 7 HD Emulator',
|
45
|
+
deviceOrientation: 'portrait'
|
46
|
+
}
|
47
|
+
@browser = RDee.send "#{platform.downcase}_browser",
|
48
|
+
browser.to_sym,
|
49
|
+
desired_capabilities: mobile_options,
|
50
|
+
url: 'http://rdee:730071ad-7331-4d65-bd56-ec3ebfdd8232@ondemand.saucelabs.com:80/wd/hub'
|
51
|
+
end
|
52
|
+
|
41
53
|
Then(/^I should be able to perform a google search for cheezyworld$/) do
|
42
54
|
visit(GoogleSearch) do |page|
|
43
55
|
page.perform_search
|
@@ -8,6 +8,7 @@ module RDee
|
|
8
8
|
options.merge!(ie_options) if need_ie_options? target
|
9
9
|
options.merge!(safari_options) if need_safari_options? target
|
10
10
|
options.merge!(ios_options) if need_ios_options? target
|
11
|
+
options.merge!(android_options) if need_android_options? target
|
11
12
|
options
|
12
13
|
end
|
13
14
|
|
@@ -31,5 +32,9 @@ module RDee
|
|
31
32
|
not ios_options.nil? and target.to_s.include? 'ios'
|
32
33
|
end
|
33
34
|
|
35
|
+
def need_android_options?(target)
|
36
|
+
not android_options.nil? and target.to_s.include? 'android'
|
37
|
+
end
|
38
|
+
|
34
39
|
end
|
35
40
|
end
|
data/lib/rdee/browser_factory.rb
CHANGED
@@ -14,8 +14,8 @@ module RDee
|
|
14
14
|
|
15
15
|
attr_accessor :url, :persistent_http
|
16
16
|
attr_accessor :chrome_options, :firefox_options, :ie_options,
|
17
|
-
:safari_options, :ios_options
|
18
|
-
attr_accessor :ios_capabilities
|
17
|
+
:safari_options, :ios_options, :android_options
|
18
|
+
attr_accessor :ios_capabilities, :android_capabilities
|
19
19
|
|
20
20
|
def watir_browser(target, options)
|
21
21
|
platform, options = platform_and_options(target, options)
|
@@ -7,6 +7,7 @@ module RDee
|
|
7
7
|
def additional_capabilities_for(target)
|
8
8
|
caps = {}
|
9
9
|
caps.merge!(ios_capabilities) if mobile_platform[target].eql?('iOS') and ios_capabilities
|
10
|
+
caps.merge!(android_capabilities) if mobile_platform[target].eql?('Android') and android_capabilities
|
10
11
|
caps
|
11
12
|
end
|
12
13
|
|
data/lib/rdee/mobile_devices.rb
CHANGED
@@ -13,13 +13,15 @@ module RDee
|
|
13
13
|
|
14
14
|
def mobile_browsers
|
15
15
|
@mobile_browsers ||= {
|
16
|
-
ios: 'Safari'
|
16
|
+
ios: 'Safari',
|
17
|
+
android: 'Browser'
|
17
18
|
}
|
18
19
|
end
|
19
20
|
|
20
21
|
def mobile_platform
|
21
22
|
@mobile_platform ||= {
|
22
|
-
ios: 'iOS'
|
23
|
+
ios: 'iOS',
|
24
|
+
android: 'Android'
|
23
25
|
}
|
24
26
|
end
|
25
27
|
|
data/lib/rdee/target_parser.rb
CHANGED
data/lib/rdee/version.rb
CHANGED
@@ -15,7 +15,6 @@ describe 'Mobile targets' do
|
|
15
15
|
platformVersion: '1.0',
|
16
16
|
platformName: 'iOS',
|
17
17
|
browserName: 'Safari',
|
18
|
-
platform: :mac,
|
19
18
|
javascript_enabled: true
|
20
19
|
}
|
21
20
|
}
|
@@ -51,5 +50,41 @@ describe 'Mobile targets' do
|
|
51
50
|
end
|
52
51
|
end
|
53
52
|
end
|
53
|
+
|
54
|
+
context 'when using Android' do
|
55
|
+
let(:caps) {
|
56
|
+
{
|
57
|
+
platformVersion: '1.0',
|
58
|
+
platformName: 'Android',
|
59
|
+
browserName: 'Browser',
|
60
|
+
javascript_enabled: true
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
it 'includes Android 4.4' do
|
65
|
+
caps[:platformVersion] = '4.4'
|
66
|
+
expect(capabilities).to receive(:new).with(caps)
|
67
|
+
RDee.watir_browser :android4_4, url: 'http://blah'
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should allow additional capabilities to be pass in via configuration' do
|
71
|
+
android_capabilities = {
|
72
|
+
appiumVersion: '1.6.4',
|
73
|
+
deviceName: 'Google Nexus 7 HD Emulator',
|
74
|
+
deviceOrientation: 'portrait'
|
75
|
+
}
|
76
|
+
RDee.configure do |config|
|
77
|
+
config.url = 'http://blah'
|
78
|
+
config.android_capabilities = android_capabilities
|
79
|
+
end
|
80
|
+
caps[:platformVersion] = '4.4'
|
81
|
+
expect(capabilities).to receive(:new).with(caps.merge(android_capabilities))
|
82
|
+
RDee.watir_browser :android4_4
|
83
|
+
RDee.configure do |config|
|
84
|
+
config.url = nil
|
85
|
+
config.android_capabilities = nil
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
54
89
|
end
|
55
90
|
|
data/spec/lib/rd_spec.rb
CHANGED
@@ -194,5 +194,26 @@ describe RDee do
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
197
|
+
it "should allow users to add additional options for android by configuration" do
|
198
|
+
RDee.configure do |config|
|
199
|
+
config.android_options = {android_options: 'option'}
|
200
|
+
end
|
201
|
+
expect(watir_browser).to receive(:new).with(:android, android_options: 'option')
|
202
|
+
RDee.watir_browser(:android4_4)
|
203
|
+
RDee.configure do |config|
|
204
|
+
config.android_options = nil
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should not add android_options when not using android" do
|
209
|
+
RDee.configure do |config|
|
210
|
+
config.android_options = {android_options: 'option'}
|
211
|
+
end
|
212
|
+
expect(watir_browser).to receive(:new).with(:firefox)
|
213
|
+
RDee.watir_browser(:firefox)
|
214
|
+
RDee.configure do |config|
|
215
|
+
config.android_options = nil
|
216
|
+
end
|
217
|
+
end
|
197
218
|
end
|
198
219
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RDee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.9'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeffrey S. Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: watir
|