quke 0.6.0 → 0.7.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 +5 -5
- data/README.md +4 -4
- data/Rakefile +9 -7
- data/exe/quke +6 -2
- data/lib/features/support/after_hook.rb +11 -6
- data/lib/features/support/after_step_hook.rb +3 -1
- data/lib/features/support/before_hook.rb +6 -4
- data/lib/features/support/env.rb +17 -20
- data/lib/quke.rb +12 -7
- data/lib/quke/browserstack_configuration.rb +19 -18
- data/lib/quke/browserstack_status_reporter.rb +6 -4
- data/lib/quke/configuration.rb +30 -26
- data/lib/quke/cuke_runner.rb +6 -4
- data/lib/quke/driver_configuration.rb +12 -14
- data/lib/quke/driver_registration.rb +8 -6
- data/lib/quke/version.rb +3 -1
- data/spec/quke/browserstack_configuration_spec.rb +262 -0
- data/spec/quke/browserstack_status_reporter_spec.rb +129 -0
- data/spec/quke/configuration_spec.rb +270 -0
- data/spec/quke/cuke_runner_spec.rb +36 -0
- data/spec/quke/driver_configuration_spec.rb +279 -0
- data/spec/quke/driver_registration_spec.rb +33 -0
- data/spec/quke/quke_spec.rb +18 -0
- data/spec/spec_helper.rb +40 -0
- data/spec/support/helpers.rb +48 -0
- data/spec/support/simplecov.rb +29 -0
- data/spec/support/webmock.rb +3 -0
- metadata +97 -58
- data/.browserstack.yml +0 -11
- data/.codeclimate.yml +0 -19
- data/.config.example.yml +0 -198
- data/.gitignore +0 -60
- data/.rspec +0 -2
- data/.rubocop.yml +0 -61
- data/.travis.yml +0 -55
- data/CHANGELOG.md +0 -170
- data/Gemfile +0 -4
- data/quke.gemspec +0 -105
- data/quke.png +0 -0
@@ -0,0 +1,270 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
RSpec.describe Quke::Configuration do
|
6
|
+
describe "#features_folder" do
|
7
|
+
context "when specified NOT specified in config file" do
|
8
|
+
it "defaults to 'features'" do
|
9
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
10
|
+
expect(subject.features_folder).to eq("features")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "when specified in config file" do
|
15
|
+
it "matches the config file" do
|
16
|
+
Quke::Configuration.file_location = data_path(".simple.yml")
|
17
|
+
expect(subject.features_folder).to eq("spec")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#app_host" do
|
23
|
+
context "when NOT specified in the config file" do
|
24
|
+
it "defaults to ''" do
|
25
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
26
|
+
expect(subject.app_host).to eq("")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when specified in config file" do
|
31
|
+
it "matches the config file" do
|
32
|
+
Quke::Configuration.file_location = data_path(".simple.yml")
|
33
|
+
expect(subject.app_host).to eq("http://localhost:4567")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#driver" do
|
39
|
+
context "when NOT specified in the config file" do
|
40
|
+
it "defaults to 'phantomjs'" do
|
41
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
42
|
+
expect(subject.driver).to eq("phantomjs")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when specified in the config file" do
|
47
|
+
it "matches the config file" do
|
48
|
+
Quke::Configuration.file_location = data_path(".simple.yml")
|
49
|
+
expect(subject.driver).to eq("chrome")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#pause" do
|
55
|
+
context "when NOT specified in the config file" do
|
56
|
+
it "defaults to 0" do
|
57
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
58
|
+
expect(subject.pause).to eq(0)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context "when specified in config file" do
|
63
|
+
it "matches the config file" do
|
64
|
+
Quke::Configuration.file_location = data_path(".simple.yml")
|
65
|
+
expect(subject.pause).to eq(1)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when in the config file as a string" do
|
70
|
+
it "matches the config file" do
|
71
|
+
Quke::Configuration.file_location = data_path(".as_string.yml")
|
72
|
+
expect(subject.pause).to eq(1)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#stop_on_error" do
|
78
|
+
context "when NOT specified in the config file" do
|
79
|
+
it "defaults to false" do
|
80
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
81
|
+
expect(subject.stop_on_error).to eq(false)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "when specified in config file" do
|
86
|
+
it "matches the config file" do
|
87
|
+
Quke::Configuration.file_location = data_path(".simple.yml")
|
88
|
+
expect(subject.stop_on_error).to eq(true)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when in the config file as a string" do
|
93
|
+
it "matches the config file" do
|
94
|
+
Quke::Configuration.file_location = data_path(".as_string.yml")
|
95
|
+
expect(subject.stop_on_error).to eq(true)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "#max_wait_time" do
|
101
|
+
context "when NOT specified in the config file" do
|
102
|
+
it "defaults to whatever the Capybara default is" do
|
103
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
104
|
+
expect(subject.max_wait_time).to eq(Capybara.default_max_wait_time)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "when specified in config file" do
|
109
|
+
it "matches the config file" do
|
110
|
+
Quke::Configuration.file_location = data_path(".simple.yml")
|
111
|
+
expect(subject.max_wait_time).to eq(3)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context "when in the config file as a string" do
|
116
|
+
it "matches the config file" do
|
117
|
+
Quke::Configuration.file_location = data_path(".as_string.yml")
|
118
|
+
expect(subject.max_wait_time).to eq(3)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "#user_agent" do
|
124
|
+
context "when NOT specified in the config file" do
|
125
|
+
it "defaults to ''" do
|
126
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
127
|
+
expect(subject.user_agent).to eq("")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
context "when specified in the config file" do
|
132
|
+
it "matches the config file" do
|
133
|
+
Quke::Configuration.file_location = data_path(".user_agent.yml")
|
134
|
+
expect(subject.user_agent).to eq("Mozilla/5.0 (MSIE 10.0; Windows NT 6.1; Trident/5.0)")
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
describe "#javascrip_errors" do
|
140
|
+
context "when NOT specified in the config file" do
|
141
|
+
it "defaults to true" do
|
142
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
143
|
+
expect(subject.javascript_errors).to eq(true)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
context "when specified in config file" do
|
148
|
+
it "matches the config file" do
|
149
|
+
Quke::Configuration.file_location = data_path(".javascript_errors.yml")
|
150
|
+
expect(subject.javascript_errors).to eq(false)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
context "when in the config file as a string" do
|
155
|
+
it "matches the config file" do
|
156
|
+
Quke::Configuration.file_location = data_path(".as_string.yml")
|
157
|
+
expect(subject.javascript_errors).to eq(false)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "#proxy" do
|
163
|
+
context "when NOT specified in the config file" do
|
164
|
+
it "defaults to blank values" do
|
165
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
166
|
+
expect(subject.proxy).to eq("host" => "", "port" => 0, "no_proxy" => "")
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
context "when specified in the config file" do
|
171
|
+
it "matches the config file" do
|
172
|
+
Quke::Configuration.file_location = data_path(".proxy.yml")
|
173
|
+
expect(subject.proxy).to eq(
|
174
|
+
"host" => "10.10.2.70",
|
175
|
+
"port" => 8080,
|
176
|
+
"no_proxy" => "127.0.0.1,192.168.0.1"
|
177
|
+
)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
context "when port is specified in the config file as a string" do
|
182
|
+
it "matches the config file" do
|
183
|
+
Quke::Configuration.file_location = data_path(".as_string.yml")
|
184
|
+
expect(subject.proxy).to eq(
|
185
|
+
"host" => "",
|
186
|
+
"port" => 8080,
|
187
|
+
"no_proxy" => ""
|
188
|
+
)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
describe "#use_proxy?" do
|
194
|
+
context "when proxy host details are NOT specified in the config file" do
|
195
|
+
it "returns false" do
|
196
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
197
|
+
expect(subject.use_proxy?).to eq(false)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
context "when proxy host details are specified in the config file" do
|
202
|
+
it "returns true" do
|
203
|
+
Quke::Configuration.file_location = data_path(".proxy_basic.yml")
|
204
|
+
expect(subject.use_proxy?).to eq(true)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
describe "#custom" do
|
210
|
+
context "when NOT specified in the config file" do
|
211
|
+
it "defaults to nothing" do
|
212
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
213
|
+
expect(subject.custom).to be(nil)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
context "when 'custom' in the config file holds simple key value pairs" do
|
218
|
+
it "returns the key value pair if there is just one" do
|
219
|
+
Quke::Configuration.file_location = data_path(".custom_key_value_pair.yml")
|
220
|
+
expect(subject.custom).to eq("my_key" => "my_value")
|
221
|
+
end
|
222
|
+
|
223
|
+
it "returns all key value pairs if there are multiples" do
|
224
|
+
Quke::Configuration.file_location = data_path(".custom_key_value_pairs.yml")
|
225
|
+
expect(subject.custom).to eq(
|
226
|
+
"my_key1" => "my_value1",
|
227
|
+
"my_key2" => "my_value2",
|
228
|
+
"my_key3" => "my_value3",
|
229
|
+
"my_key4" => "my_value4",
|
230
|
+
"my_key5" => "my_value5"
|
231
|
+
)
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
context "when 'custom' in the config file holds a hierachical object" do
|
236
|
+
it "returns a representation of the object" do
|
237
|
+
Quke::Configuration.file_location = data_path(".custom_complex_object.yml")
|
238
|
+
expect(subject.custom).to eq(
|
239
|
+
"my_key" => "my_value",
|
240
|
+
"accounts" => {
|
241
|
+
"account1" => {
|
242
|
+
"username" => "yoda",
|
243
|
+
"password" => "greenisgood"
|
244
|
+
},
|
245
|
+
"account2" => {
|
246
|
+
"username" => "vadar",
|
247
|
+
"password" => "redrules"
|
248
|
+
},
|
249
|
+
"account3" => {
|
250
|
+
"username" => "luke",
|
251
|
+
"password" => "fatherissues"
|
252
|
+
}
|
253
|
+
},
|
254
|
+
"troop_numbers" => {
|
255
|
+
"dark_side_count" => 1_000_000,
|
256
|
+
"light_side_count" => 5
|
257
|
+
}
|
258
|
+
)
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
describe ".file_name" do
|
264
|
+
context "environment variable not set" do
|
265
|
+
it "returns the default value '.config.yml'" do
|
266
|
+
expect(Quke::Configuration.file_name).to eq(".config.yml")
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
RSpec.describe Quke::CukeRunner do
|
6
|
+
let(:default_args) do
|
7
|
+
features_folder = __dir__.sub!("spec/quke", "lib/features")
|
8
|
+
["spec", "-r", features_folder, "-r", "spec"]
|
9
|
+
end
|
10
|
+
describe "#initialize" do
|
11
|
+
context "no additional Cucumber arguments passed" do
|
12
|
+
let(:subject) { Quke::CukeRunner.new("spec") }
|
13
|
+
it "returns just the default args used by Quke" do
|
14
|
+
expect(subject.args).to eq(default_args)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
context "additional Cucumber arguments passed" do
|
18
|
+
let(:args) { ["--tags", "test"] }
|
19
|
+
let(:subject) { Quke::CukeRunner.new("spec", args) }
|
20
|
+
it "returns the default args plus those passed in" do
|
21
|
+
expect(subject.args).to eq(default_args + args)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#run" do
|
27
|
+
before(:example) do
|
28
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
29
|
+
Quke::Quke.config = Quke::Configuration.new
|
30
|
+
end
|
31
|
+
let(:subject) { Quke::CukeRunner.new("spec") }
|
32
|
+
it "does not raise an error when called" do
|
33
|
+
expect { subject.run }.not_to raise_error
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,279 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
RSpec.describe Quke::DriverConfiguration do
|
6
|
+
|
7
|
+
describe "#poltergeist" do
|
8
|
+
|
9
|
+
context "proxy details have NOT been set in the .config.yml" do
|
10
|
+
it "returns a hash containing only the default options" do
|
11
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
12
|
+
config = Quke::Configuration.new
|
13
|
+
expect(Quke::DriverConfiguration.new(config).poltergeist).to eq(
|
14
|
+
js_errors: true,
|
15
|
+
timeout: 30,
|
16
|
+
debug: false,
|
17
|
+
phantomjs_options: [
|
18
|
+
"--load-images=no",
|
19
|
+
"--disk-cache=false",
|
20
|
+
"--ignore-ssl-errors=yes"
|
21
|
+
],
|
22
|
+
inspector: true
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "proxy details have been set in the .config.yml" do
|
28
|
+
it "returns a hash containing both default options and proxy settings" do
|
29
|
+
Quke::Configuration.file_location = data_path(".proxy_basic.yml")
|
30
|
+
config = Quke::Configuration.new
|
31
|
+
expect(Quke::DriverConfiguration.new(config).poltergeist).to eq(
|
32
|
+
js_errors: true,
|
33
|
+
timeout: 30,
|
34
|
+
debug: false,
|
35
|
+
phantomjs_options: [
|
36
|
+
"--load-images=no",
|
37
|
+
"--disk-cache=false",
|
38
|
+
"--ignore-ssl-errors=yes",
|
39
|
+
"--proxy=#{config.proxy['host']}:#{config.proxy['port']}"
|
40
|
+
],
|
41
|
+
inspector: true
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "user has set javascript_errors to false in the .config.yml" do
|
47
|
+
it "returns a hash where js_errors is set to 'false'" do
|
48
|
+
Quke::Configuration.file_location = data_path(".javascript_errors.yml")
|
49
|
+
config = Quke::Configuration.new
|
50
|
+
expect(Quke::DriverConfiguration.new(config).poltergeist).to eq(
|
51
|
+
js_errors: false,
|
52
|
+
timeout: 30,
|
53
|
+
debug: false,
|
54
|
+
phantomjs_options: [
|
55
|
+
"--load-images=no",
|
56
|
+
"--disk-cache=false",
|
57
|
+
"--ignore-ssl-errors=yes"
|
58
|
+
],
|
59
|
+
inspector: true
|
60
|
+
)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#phantomjs" do
|
67
|
+
|
68
|
+
context "proxy details have NOT been set in the .config.yml" do
|
69
|
+
it "returns an array containing only the default options" do
|
70
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
71
|
+
config = Quke::Configuration.new
|
72
|
+
expect(Quke::DriverConfiguration.new(config).phantomjs).to eq(
|
73
|
+
[
|
74
|
+
"--load-images=no",
|
75
|
+
"--disk-cache=false",
|
76
|
+
"--ignore-ssl-errors=yes"
|
77
|
+
]
|
78
|
+
)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "proxy details have been set in the .config.yml" do
|
83
|
+
it "returns an array containing both default options and proxy settings" do
|
84
|
+
Quke::Configuration.file_location = data_path(".proxy_basic.yml")
|
85
|
+
config = Quke::Configuration.new
|
86
|
+
expect(Quke::DriverConfiguration.new(config).phantomjs).to eq(
|
87
|
+
[
|
88
|
+
"--load-images=no",
|
89
|
+
"--disk-cache=false",
|
90
|
+
"--ignore-ssl-errors=yes",
|
91
|
+
"--proxy=#{config.proxy['host']}:#{config.proxy['port']}"
|
92
|
+
]
|
93
|
+
)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context "a user agent has been set in the .config.yml" do
|
98
|
+
it "is not in the array returned. Unlike the other drivers we can only override the user agent when registering the driver" do
|
99
|
+
Quke::Configuration.file_location = data_path(".user_agent.yml")
|
100
|
+
config = Quke::Configuration.new
|
101
|
+
expect(Quke::DriverConfiguration.new(config).phantomjs).to eq(
|
102
|
+
[
|
103
|
+
"--load-images=no",
|
104
|
+
"--disk-cache=false",
|
105
|
+
"--ignore-ssl-errors=yes"
|
106
|
+
]
|
107
|
+
)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "#chrome" do
|
114
|
+
|
115
|
+
context "proxy details have NOT been set in the .config.yml" do
|
116
|
+
it "returns an empty array if no proxy has been set" do
|
117
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
118
|
+
config = Quke::Configuration.new
|
119
|
+
expect(Quke::DriverConfiguration.new(config).chrome).to eq([])
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context "basic proxy details have been set in the .config.yml" do
|
124
|
+
it "returns an array containing basic proxy settings" do
|
125
|
+
Quke::Configuration.file_location = data_path(".proxy_basic.yml")
|
126
|
+
config = Quke::Configuration.new
|
127
|
+
expect(Quke::DriverConfiguration.new(config).chrome).to eq(
|
128
|
+
[
|
129
|
+
"--proxy-server=#{config.proxy['host']}:#{config.proxy['port']}"
|
130
|
+
]
|
131
|
+
)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context "proxy details including addresses not to connect via the proxy server have been set in the .config.yml" do
|
136
|
+
it "returns an array containing proxy settings including no-proxy details" do
|
137
|
+
Quke::Configuration.file_location = data_path(".proxy.yml")
|
138
|
+
config = Quke::Configuration.new
|
139
|
+
expect(Quke::DriverConfiguration.new(config).chrome).to eq(
|
140
|
+
[
|
141
|
+
"--proxy-server=#{config.proxy['host']}:#{config.proxy['port']}",
|
142
|
+
"--proxy-bypass-list=127.0.0.1;192.168.0.1"
|
143
|
+
]
|
144
|
+
)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context "a user agent has been set in the .config.yml" do
|
149
|
+
it "returns an array containing the specified user-agent" do
|
150
|
+
Quke::Configuration.file_location = data_path(".user_agent.yml")
|
151
|
+
config = Quke::Configuration.new
|
152
|
+
expect(Quke::DriverConfiguration.new(config).chrome).to eq(
|
153
|
+
[
|
154
|
+
"--user-agent=#{config.user_agent}"
|
155
|
+
]
|
156
|
+
)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "#firefox" do
|
163
|
+
|
164
|
+
context "proxy details have NOT been set in the .config.yml" do
|
165
|
+
it "returns a profile where the proxy details are NOT set" do
|
166
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
167
|
+
config = Quke::Configuration.new
|
168
|
+
profile = Quke::DriverConfiguration.new(config).firefox
|
169
|
+
|
170
|
+
# See spec/helpers.rb#read_profile_preferences for details of why we
|
171
|
+
# need to test the profile's properties in this way
|
172
|
+
preferences = read_profile_preferences(profile)
|
173
|
+
|
174
|
+
expect(preferences).not_to include('user_pref("network.proxy.http", "")')
|
175
|
+
expect(preferences).not_to include('user_pref("network.proxy.http_port", 8080)')
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
context "basic proxy details have been set in the .config.yml" do
|
180
|
+
it "returns a profile where the basic proxy details are set" do
|
181
|
+
Quke::Configuration.file_location = data_path(".proxy_basic.yml")
|
182
|
+
config = Quke::Configuration.new
|
183
|
+
profile = Quke::DriverConfiguration.new(config).firefox
|
184
|
+
|
185
|
+
# See spec/helpers.rb#read_profile_preferences for details of why we
|
186
|
+
# need to test the profile's properties in this way
|
187
|
+
preferences = read_profile_preferences(profile)
|
188
|
+
|
189
|
+
expect(preferences).to include('user_pref("network.proxy.http", "10.10.2.70")')
|
190
|
+
expect(preferences).to include('user_pref("network.proxy.http_port", 8080)')
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
context "proxy details including addresses not to connect via the proxy server have been set in the .config.yml" do
|
195
|
+
it "returns a profile where the proxy details are set including no-proxy details" do
|
196
|
+
Quke::Configuration.file_location = data_path(".proxy.yml")
|
197
|
+
config = Quke::Configuration.new
|
198
|
+
profile = Quke::DriverConfiguration.new(config).firefox
|
199
|
+
|
200
|
+
# See spec/helpers.rb#read_profile_preferences for details of why we
|
201
|
+
# need to test the profile's properties in this way
|
202
|
+
preferences = read_profile_preferences(profile)
|
203
|
+
|
204
|
+
expect(preferences).to include('user_pref("network.proxy.http", "10.10.2.70")')
|
205
|
+
expect(preferences).to include('user_pref("network.proxy.http_port", 8080)')
|
206
|
+
expect(preferences).to include('user_pref("network.proxy.no_proxies_on", "127.0.0.1,192.168.0.1")')
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
context "a user agent has been set in the .config.yml" do
|
211
|
+
it "returns an array containing the specified user-agent" do
|
212
|
+
Quke::Configuration.file_location = data_path(".user_agent.yml")
|
213
|
+
config = Quke::Configuration.new
|
214
|
+
profile = Quke::DriverConfiguration.new(config).firefox
|
215
|
+
|
216
|
+
# See spec/helpers.rb#read_profile_preferences for details of why we
|
217
|
+
# need to test the profile's properties in this way
|
218
|
+
preferences = read_profile_preferences(profile)
|
219
|
+
|
220
|
+
expect(preferences).to include(
|
221
|
+
'user_pref("general.useragent.override", "Mozilla/5.0 (MSIE 10.0; Windows NT 6.1; Trident/5.0)")'
|
222
|
+
)
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
end
|
227
|
+
|
228
|
+
describe "#browserstack" do
|
229
|
+
|
230
|
+
context "browserstack details have NOT been set in the .config.yml" do
|
231
|
+
it "returns capabilities set to Selenium::WebDriver::Remote::Capabilities defaults" do
|
232
|
+
Quke::Configuration.file_location = data_path(".no_file.yml")
|
233
|
+
config = Quke::Configuration.new
|
234
|
+
capabilities = Quke::DriverConfiguration.new(config).browserstack
|
235
|
+
|
236
|
+
expect(capabilities.as_json.keys.count).to eq(8)
|
237
|
+
expect(capabilities["browserName"]).to eq(nil)
|
238
|
+
expect(capabilities["version"]).to eq(nil)
|
239
|
+
expect(capabilities["platform"]).to eq(nil)
|
240
|
+
expect(capabilities["javascriptEnabled"]).to eq(nil)
|
241
|
+
expect(capabilities["cssSelectorsEnabled"]).to eq(nil)
|
242
|
+
expect(capabilities["takesScreenshot"]).to eq(nil)
|
243
|
+
expect(capabilities["nativeEvents"]).to eq(nil)
|
244
|
+
expect(capabilities["rotatable"]).to eq(nil)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
context "browserstack details have been set in the .config.yml" do
|
249
|
+
it "returns capabilities that match those set" do
|
250
|
+
Quke::Configuration.file_location = data_path(".browserstack.yml")
|
251
|
+
config = Quke::Configuration.new
|
252
|
+
capabilities = Quke::DriverConfiguration.new(config).browserstack
|
253
|
+
expected_capabilities = YAML.load_file(data_path(".browserstack.yml"))["browserstack"]["capabilities"]
|
254
|
+
|
255
|
+
expect(capabilities["build"]).to eq(expected_capabilities["build"])
|
256
|
+
expect(capabilities["project"]).to eq(expected_capabilities["project"])
|
257
|
+
expect(capabilities["name"]).to eq(expected_capabilities["name"])
|
258
|
+
|
259
|
+
expect(capabilities["acceptSslCerts"]).to eq(expected_capabilities["acceptSslCerts"])
|
260
|
+
expect(capabilities["browserstack.debug"]).to eq(expected_capabilities["browserstack.debug"])
|
261
|
+
expect(capabilities["browserstack.video"]).to eq(expected_capabilities["browserstack.video"])
|
262
|
+
expect(capabilities["browserstack.local"]).to eq(expected_capabilities["browserstack.local"])
|
263
|
+
expect(capabilities["browserstack.maskSendKeys"]).to eq(expected_capabilities["browserstack.maskSendKeys"])
|
264
|
+
|
265
|
+
expect(capabilities["platform"]).to eq(expected_capabilities["platform"])
|
266
|
+
expect(capabilities["browserName"]).to eq(expected_capabilities["browserName"])
|
267
|
+
expect(capabilities["version"]).to eq(expected_capabilities["version"])
|
268
|
+
expect(capabilities["device"]).to eq(expected_capabilities["device"])
|
269
|
+
expect(capabilities["os"]).to eq(expected_capabilities["os"])
|
270
|
+
expect(capabilities["os_version"]).to eq(expected_capabilities["os_version"])
|
271
|
+
expect(capabilities["browser"]).to eq(expected_capabilities["browser"])
|
272
|
+
expect(capabilities["browser_version"]).to eq(expected_capabilities["browser_version"])
|
273
|
+
expect(capabilities["resolution"]).to eq(expected_capabilities["resolution"])
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
end
|
278
|
+
|
279
|
+
end
|