frameworks-capybara 2.2.0 → 2.3.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.
- data/CHANGES +3 -0
- data/Gemfile.lock +1 -1
- data/README.rdoc +10 -1
- data/lib/frameworks/capybara.rb +21 -3
- data/lib/version.rb +1 -1
- data/spec/frameworks_capybara_spec.rb +58 -2
- metadata +4 -4
data/CHANGES
CHANGED
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -29,8 +29,8 @@ The following environment variables can be set to configure your tests:
|
|
29
29
|
BROWSER - this must be one of either 'ie', 'firefox', 'chrome', 'headless', 'remote'
|
30
30
|
HTTP_PROXY - url of proxy if required e.g. 'http://proxyhost:80', when running a headless browser this sets the proxy for the browser itself, when running a remote browser this sets the proxy for the client which will connect to the remote selenium server
|
31
31
|
PLATFORM - used when specifying remote test on a grid that provides a choice of platforms, this must be one of either 'WINDOWS' or 'LINUX'
|
32
|
+
PLATFORM_VERSION - used to specify the OS version of the specified platform e.g. '7', '8.1'
|
32
33
|
REMOTE_BROWSER - used when specifying remote test, must be one of either 'ie', 'firefox', 'chrome', 'headless', 'remote':w
|
33
|
-
|
34
34
|
REMOTE_BROWSER_VERSION - used when specifying remote test on a grid the provides a choice of browser versions for a given browser
|
35
35
|
REMOTE_URL - URL of remote Selenium-Webdriver server e.g. http://yourremotehost:4444/wd/hub
|
36
36
|
FIREFOX_PROFILE - specify a firefox profile to use when running in-browser tests (local or remote)
|
@@ -45,6 +45,15 @@ The following environment variables can be set to configure your tests:
|
|
45
45
|
TEAM_NAME - optional team name description which gets displayed in Cucumber html reports
|
46
46
|
BROWSER_CLI_ARGS - optional additional arguments to pass to local browser processes
|
47
47
|
|
48
|
+
The following environment variables are specific to running tests against a BrowserStack remote grid:
|
49
|
+
|
50
|
+
BS_BUILD - allows the user to specify a name for a logical group of tests e.g. 'Component A Tests'
|
51
|
+
BS_DEBUG - set to 'false' to disable screenshot generation ('true' by default)
|
52
|
+
BS_DEVICE - specify a mobile/tablet device e.g. 'iPhone 5C'
|
53
|
+
BS_DEVICE_ORIENTATION - specify to force the device orientation ('portrait' or 'landscape')
|
54
|
+
BS_PROJECT - allows the user to specify a name for a logical group of builds e.g. 'Project X'
|
55
|
+
BS_RESOLUTION - set the browser resolution e.g. '1024x768'
|
56
|
+
|
48
57
|
Here is a sample cucumber.yml:
|
49
58
|
|
50
59
|
<%intenv='ENVIRONMENT=int'%>
|
data/lib/frameworks/capybara.rb
CHANGED
@@ -24,16 +24,23 @@ class CapybaraSetup
|
|
24
24
|
:args => ENV['BROWSER_CLI_ARGS']
|
25
25
|
}
|
26
26
|
|
27
|
-
selenium_remote_opts = {:
|
27
|
+
selenium_remote_opts = {:os => ENV['PLATFORM'],
|
28
|
+
:os_version => ENV['PLATFORM_VERSION'],
|
28
29
|
:browser_name => ENV['REMOTE_BROWSER'],
|
29
|
-
:
|
30
|
+
:browser_version => ENV['REMOTE_BROWSER_VERSION'],
|
30
31
|
:url => ENV['REMOTE_URL']
|
31
32
|
}
|
32
33
|
|
33
34
|
custom_opts = {:job_name => ENV['SAUCE_JOB_NAME'],
|
34
35
|
:max_duration => ENV['SAUCE_MAX_DURATION'],
|
35
36
|
:firefox_cert_path => ENV['FIREFOX_CERT_PATH'],
|
36
|
-
:firefox_cert_prefix => ENV['FIREFOX_CERT_PREFIX']
|
37
|
+
:firefox_cert_prefix => ENV['FIREFOX_CERT_PREFIX'],
|
38
|
+
:browserstack_build => ENV['BS_BUILD'],
|
39
|
+
:browserstack_debug => ENV['BS_DEBUG'] || 'true', # BrowserStack debug mode on by default
|
40
|
+
:browserstack_device => ENV['BS_DEVICE'],
|
41
|
+
:browserstack_device_orientation => ENV['BS_DEVICE_ORIENTATION'],
|
42
|
+
:browserstack_project => ENV['BS_PROJECT'],
|
43
|
+
:browserstack_resolution => ENV['BS_RESOLUTION']
|
37
44
|
}
|
38
45
|
|
39
46
|
validate_env_vars(capybara_opts.merge(selenium_remote_opts)) #validate environment variables set using cucumber.yml or passed via command line
|
@@ -129,6 +136,8 @@ class CapybaraSetup
|
|
129
136
|
|
130
137
|
add_custom_caps(caps, custom_opts) if remote_opts[:url].include? 'saucelabs' #set sauce specific parameters - will this scupper other on sauce remote jobs?
|
131
138
|
|
139
|
+
add_browserstack_caps(caps, custom_opts) if remote_opts[:url].include? 'browserstack' #set browserstack specific parameters
|
140
|
+
|
132
141
|
opts[:desired_capabilities] = caps
|
133
142
|
opts[:http_client] = client
|
134
143
|
end
|
@@ -145,6 +154,15 @@ class CapybaraSetup
|
|
145
154
|
#caps.custom_capabilities({:'job-name' => (custom_opts[:job_name] or 'frameworks-unamed-job'), :'max-duration' => ((sauce_time_limit if sauce_time_limit != 0) or 1800)})
|
146
155
|
end
|
147
156
|
|
157
|
+
def add_browserstack_caps(caps, custom_opts)
|
158
|
+
caps[:'build'] = custom_opts[:browserstack_build] if custom_opts[:browserstack_build]
|
159
|
+
caps[:'browserstack.debug'] = custom_opts[:browserstack_debug] if custom_opts[:browserstack_debug]
|
160
|
+
caps[:'device'] = custom_opts[:browserstack_device] if custom_opts[:browserstack_device]
|
161
|
+
caps[:'deviceOrientation'] = custom_opts[:browserstack_device_orientation] if custom_opts[:browserstack_device_orientation]
|
162
|
+
caps[:'project'] = custom_opts[:browserstack_project] if custom_opts[:browserstack_project]
|
163
|
+
caps[:'resolution'] = custom_opts[:browserstack_resolution] if custom_opts[:browserstack_resolution]
|
164
|
+
end
|
165
|
+
|
148
166
|
def set_client_proxy(opts)
|
149
167
|
Selenium::WebDriver::Proxy.new(:http => opts[:http_proxy]) if opts[:http_proxy] && opts[:webdriver_proxy_on] != 'false' #set proxy on client connection if required, note you may use ENV['HTTP_PROXY'] for setting in browser (ff profile) but not for client conection, hence allow for PROXY_ON=false
|
150
168
|
end
|
data/lib/version.rb
CHANGED
@@ -250,8 +250,8 @@ describe CapybaraSetup do
|
|
250
250
|
#Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@custom_capabilities)[:'job-name'].should == 'frameworks-unamed-job'
|
251
251
|
#Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@custom_capabilities)[:'max-duration'].should == 1800
|
252
252
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:browser_name].should == :firefox
|
253
|
-
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:
|
254
|
-
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:
|
253
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:browser_version].should == '4'
|
254
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:os].should == 'windows'
|
255
255
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].should be_a_kind_of Selenium::WebDriver::Firefox::Profile
|
256
256
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@model).should include 'default'
|
257
257
|
end
|
@@ -367,7 +367,63 @@ describe CapybaraSetup do
|
|
367
367
|
it_behaves_like "Selenium Driver Options Array"
|
368
368
|
end
|
369
369
|
|
370
|
+
context "with Remote Selenium driver and most minimal Capabilites for BrowserStack" do
|
371
|
+
before do
|
372
|
+
ENV['BROWSER'] = 'remote'
|
373
|
+
ENV['REMOTE_BROWSER'] = 'ie'
|
374
|
+
ENV['REMOTE_URL'] = 'http://hub.browserstack.com'
|
375
|
+
end
|
376
|
+
|
377
|
+
it "should be initialized correctly" do
|
378
|
+
Capybara.delete_session
|
379
|
+
CapybaraSetup.new.driver.should == :selenium
|
380
|
+
Capybara.current_session.driver.should be_a_kind_of Capybara::Selenium::Driver
|
381
|
+
Capybara.current_session.driver.options[:browser].should == :remote
|
382
|
+
Capybara.current_session.driver.options[:url].should == ENV['REMOTE_URL']
|
383
|
+
Capybara.current_session.driver.options[:desired_capabilities].should be_a_kind_of Selenium::WebDriver::Remote::Capabilities
|
384
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:'browserstack.debug'].should == 'true'
|
385
|
+
end
|
386
|
+
it_behaves_like "Selenium Driver Options Array"
|
387
|
+
end
|
370
388
|
|
389
|
+
context "with Remote Selenium driver and specified Custom Capabilites for BrowserStack" do
|
390
|
+
before do
|
391
|
+
ENV['BROWSER'] = 'remote'
|
392
|
+
ENV['BS_BUILD'] = 'browserstack build 1'
|
393
|
+
ENV['BS_DEBUG'] = 'false'
|
394
|
+
ENV['BS_DEVICE'] = 'iPhone 5C'
|
395
|
+
ENV['BS_DEVICE_ORIENTATION'] = 'landscape'
|
396
|
+
ENV['BS_PROJECT'] = 'Test BrowserStack Project'
|
397
|
+
ENV['BS_RESOLUTION'] = '1024x768'
|
398
|
+
ENV['PLATFORM'] = 'MAC'
|
399
|
+
ENV['PLATFORM_VERSION'] = '7'
|
400
|
+
ENV['REMOTE_BROWSER'] = 'iPhone'
|
401
|
+
ENV['REMOTE_BROWSER_VERSION'] = '7.1.2'
|
402
|
+
ENV['REMOTE_URL'] = 'http://hub.browserstack.com'
|
403
|
+
end
|
404
|
+
|
405
|
+
it "should be initialized correctly" do
|
406
|
+
Capybara.delete_session
|
407
|
+
CapybaraSetup.new.driver.should == :selenium
|
408
|
+
Capybara.current_session.driver.should be_a_kind_of Capybara::Selenium::Driver
|
409
|
+
Capybara.current_session.driver.options[:browser].should == :remote
|
410
|
+
Capybara.current_session.driver.options[:url].should == ENV['REMOTE_URL']
|
411
|
+
Capybara.current_session.driver.options[:http_client].should be_a_kind_of Selenium::WebDriver::Remote::Http::Default
|
412
|
+
Capybara.current_session.driver.options[:http_client].instance_variable_get(:@proxy).should == nil
|
413
|
+
Capybara.current_session.driver.options[:desired_capabilities].should be_a_kind_of Selenium::WebDriver::Remote::Capabilities
|
414
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:build].should == ENV['BS_BUILD']
|
415
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:'browserstack.debug'].should == ENV['BS_DEBUG']
|
416
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:device].should == ENV['BS_DEVICE']
|
417
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:deviceOrientation].should == ENV['BS_DEVICE_ORIENTATION']
|
418
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:project].should == ENV['BS_PROJECT']
|
419
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:resolution].should == ENV['BS_RESOLUTION']
|
420
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:os].should == ENV['PLATFORM']
|
421
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:os_version].should == ENV['PLATFORM_VERSION']
|
422
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:browser_name].should == :iPhone
|
423
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:browser_version].should == ENV['REMOTE_BROWSER_VERSION']
|
424
|
+
end
|
425
|
+
it_behaves_like "Selenium Driver Options Array"
|
426
|
+
end
|
371
427
|
end
|
372
428
|
|
373
429
|
describe "should allow Mechanize driver to be created" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frameworks-capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: selenium-webdriver
|
@@ -203,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
203
203
|
version: '0'
|
204
204
|
segments:
|
205
205
|
- 0
|
206
|
-
hash:
|
206
|
+
hash: 4601413897972678254
|
207
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
208
|
none: false
|
209
209
|
requirements:
|
@@ -212,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
212
|
version: '0'
|
213
213
|
segments:
|
214
214
|
- 0
|
215
|
-
hash:
|
215
|
+
hash: 4601413897972678254
|
216
216
|
requirements: []
|
217
217
|
rubyforge_project:
|
218
218
|
rubygems_version: 1.8.23.2
|