frameworks-capybara 0.2.5 → 0.2.6

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/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- frameworks-capybara (0.2.5)
4
+ frameworks-capybara (0.2.6)
5
5
  capybara (>= 1.0.0)
6
6
  capybara-celerity
7
7
  capybara-mechanize (>= 0.3.0)
data/README.rdoc CHANGED
@@ -29,10 +29,10 @@ The following environment variables can be set to configure your tests:
29
29
 
30
30
  ENVIRONMENT - this must be one of either 'sandbox', 'int', 'test', 'stage', 'live'
31
31
  BROWSER - this must be one of either 'ie', 'firefox', 'chrome', 'headless', 'remote'
32
- PROXY_URL - 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
32
+ 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
33
33
  PLATFORM - used when specifying remote test on a grid that provides a choice of platforms, this must be one of either 'WINDOWS' or 'LINUX'
34
- REMOTE_BROWSER - used when specifying remote test, must be one of either 'ie', 'firefox', 'chrome', 'headless', 'remote'
35
- REMOTE_BROWSER_PROXY_URL - used when specifying remote test, sets proxy on remote browser (Firefox only at present, other browsers must have proxies set appropriately on remote machine)
34
+ REMOTE_BROWSER - used when specifying remote test, must be one of either 'ie', 'firefox', 'chrome', 'headless', 'remote':w
35
+
36
36
  REMOTE_BROWSER_VERSION - used when specifying remote test on a grid the provides a choice of browser versions for a given browser
37
37
  REMOTE_URL - URL of remote Selenium-Webdriver server e.g. http://yourremotehost:4444/wd/hub
38
38
  FIREFOX_PROFILE - specify a firefox profile to use when running in-browser tests (local or remote)
@@ -55,7 +55,7 @@ Here is a sample cucumber.yml:
55
55
  <%browser_firefox='BROWSER=firefox'%>
56
56
  <%browser_chrome='BROWSER=chrome'%>
57
57
  <%browser_remote='BROWSER=remote'%>
58
- <%proxy_on='PROXY_URL=http://proxyhost:proxyport'%>
58
+ <%proxy_on='=http://proxyhost:proxyport'%>
59
59
  <%sauce_remote_url='REMOTE_URL=http://mykey@ondemand.saucelabs.com:80/wd/hub'%>
60
60
  <%demo_feature='features/demo.feature'%>
61
61
 
@@ -2,7 +2,6 @@ require 'capybara/cucumber'
2
2
  require 'monkey-patches/webdriver-patches'
3
3
  require 'monkey-patches/capybara-patches'
4
4
  require 'monkey-patches/capybara-mechanize-patches'
5
- #require 'monkey-patches/net-http-persistent-patches'
6
5
  require 'monkey-patches/mechanize-patches'
7
6
  require 'monkey-patches/send-keys'
8
7
  require 'selenium-webdriver'
@@ -14,9 +13,26 @@ class CapybaraSetup
14
13
  attr_reader :driver
15
14
 
16
15
  def initialize
17
- capybara_opts = {:environment => ENV['ENVIRONMENT'], :proxy => ENV['PROXY_URL'], :profile => ENV['FIREFOX_PROFILE'], :browser => ENV['BROWSER'], :javascript_enabled => ENV['CELERITY_JS_ENABLED'], :proxy_on => ENV['PROXY_ON'],:url => ENV['REMOTE_URL'], :chrome_switches => ENV['CHROME_SWITCHES'], :firefox_prefs => ENV['FIREFOX_PREFS'], :create_new_ff_profile => ENV['CREATE_NEW_FF_PROFILE']}
18
- selenium_remote_opts = {:platform => ENV['PLATFORM'], :browser_name => ENV['REMOTE_BROWSER'], :version => ENV['REMOTE_BROWSER_VERSION'], :url => ENV['REMOTE_URL']}
19
- custom_opts = {:job_name => ENV['SAUCE_JOB_NAME'], :max_duration => ENV['SAUCE_MAX_DURATION']}
16
+
17
+ http_proxy = ENV['HTTP_PROXY'] || ENV['http_proxy']
18
+
19
+ capybara_opts = {:environment => ENV['ENVIRONMENT'],
20
+ :proxy => http_proxy,
21
+ :profile => ENV['FIREFOX_PROFILE'],
22
+ :browser => ENV['BROWSER'],
23
+ :javascript_enabled => ENV['CELERITY_JS_ENABLED'],
24
+ :proxy_on => ENV['PROXY_ON'],
25
+ :url => ENV['REMOTE_URL'],
26
+ :chrome_switches => ENV['CHROME_SWITCHES'],
27
+ :firefox_prefs => ENV['FIREFOX_PREFS']}
28
+
29
+ selenium_remote_opts = {:platform => ENV['PLATFORM'],
30
+ :browser_name => ENV['REMOTE_BROWSER'],
31
+ :version => ENV['REMOTE_BROWSER_VERSION'],
32
+ :url => ENV['REMOTE_URL']}
33
+
34
+ custom_opts = {:job_name => ENV['SAUCE_JOB_NAME'],
35
+ :max_duration => ENV['SAUCE_MAX_DURATION']}
20
36
 
21
37
  validate_env_vars(capybara_opts.merge(selenium_remote_opts)) #validate environment variables set using cucumber.yml or passed via command line
22
38
 
@@ -27,7 +43,7 @@ class CapybaraSetup
27
43
  Capybara.run_server = false #Disable rack server
28
44
 
29
45
  [capybara_opts, selenium_remote_opts, custom_opts].each do |opts| #delete nil options and environment (which is only used for validation)
30
-
46
+
31
47
  opts.delete_if {|k,v| (v.nil? or k == :environment)}
32
48
  end
33
49
 
@@ -40,7 +56,6 @@ class CapybaraSetup
40
56
  @driver = register_selenium_driver(capybara_opts, selenium_remote_opts, custom_opts)
41
57
  end
42
58
 
43
-
44
59
  Capybara.default_driver = @driver
45
60
  end
46
61
 
@@ -48,8 +63,8 @@ class CapybaraSetup
48
63
 
49
64
  def validate_env_vars(opts)
50
65
 
51
- msg1 = 'Please ensure following environment variables are set ENVIRONMENT [int|test|stage|live], BROWSER[headless|ie|chrome|firefox] and PROXY_URL (if required)'
52
- msg2 = 'Please ensure the following environment variables are set PLATFORM, REMOTE_URL, REMOTE_BROWSER (browser to use on remote machine), PROXY_URL (if required), REMOTE_BROWSER_PROXY (if required) and BROWSER_VERSION (if required)'
66
+ msg1 = 'Please ensure following environment variables are set ENVIRONMENT [int|test|stage|live], BROWSER[headless|ie|chrome|firefox] and HTTP_PROXY (if required)'
67
+ msg2 = 'Please ensure the following environment variables are set PLATFORM, REMOTE_URL, REMOTE_BROWSER (browser to use on remote machine), HTTP_PROXY (if required), REMOTE_BROWSER_PROXY (if required) and BROWSER_VERSION (if required)'
53
68
 
54
69
  [:environment, :browser].each do |item|
55
70
  !opts.has_key?(item) or opts[item]==nil ? raise(msg1) : ''
@@ -65,8 +80,8 @@ class CapybaraSetup
65
80
  def register_selenium_driver(opts,remote_opts,custom_opts)
66
81
  Capybara.register_driver :selenium do |app|
67
82
 
68
- if opts[:create_new_ff_profile] || opts[:profile]
69
- opts[:profile] = create_profile(opts[:profile], opts[:create_new_ff_profile], opts[:firefox_prefs])
83
+ if opts[:firefox_prefs] || opts[:profile]
84
+ opts[:profile] = create_profile(opts[:profile], opts[:firefox_prefs])
70
85
  end
71
86
 
72
87
  opts[:switches] = [opts.delete(:chrome_switches)] if(opts[:chrome_switches])
@@ -85,7 +100,7 @@ class CapybaraSetup
85
100
  opts[:http_client] = client
86
101
  end
87
102
 
88
- clean_opts(opts, :proxy, :proxy_on, :firefox_prefs, :create_new_ff_profile)
103
+ clean_opts(opts, :proxy, :proxy_on, :firefox_prefs)
89
104
  Capybara::Selenium::Driver.new(app,opts)
90
105
  end
91
106
  :selenium
@@ -97,12 +112,15 @@ class CapybaraSetup
97
112
  end
98
113
 
99
114
  def set_client_proxy(opts)
100
- Selenium::WebDriver::Proxy.new(:http => opts[:proxy]) if opts[:proxy] && opts[:proxy_on] != 'false' #set proxy on client connection if required, note you may use ENV['PROXY_URL'] for setting in browser (ff profile) but not for client conection, hence allow for PROXY_ON=false
115
+ Selenium::WebDriver::Proxy.new(:http => opts[:proxy]) if opts[:proxy] && opts[: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
101
116
  end
102
117
 
103
- def create_profile(profile_name = nil, new_profile = nil, additional_prefs = nil)
118
+ def create_profile(profile_name = nil, additional_prefs = nil)
104
119
  additional_prefs = JSON.parse(additional_prefs) if additional_prefs
105
- if(profile_name == 'BBC_INTERNAL')
120
+ if(additional_prefs && !profile_name)
121
+ profile = Selenium::WebDriver::Firefox::Profile.new
122
+ profile.native_events = true
123
+ elsif(profile_name == 'BBC_INTERNAL')
106
124
  profile = Selenium::WebDriver::Firefox::Profile.new
107
125
  profile["network.proxy.type"] = 1
108
126
  profile["network.proxy.no_proxies_on"] = "*.sandbox.dev.bbc.co.uk"
@@ -111,8 +129,6 @@ class CapybaraSetup
111
129
  profile["network.proxy.http_port"] = 80
112
130
  profile["network.proxy.ssl_port"] = 80
113
131
  profile.native_events = true
114
- elsif new_profile
115
- profile = Selenium::WebDriver::Firefox::Profile.new
116
132
  else
117
133
  profile = Selenium::WebDriver::Firefox::Profile.from_name profile_name
118
134
  profile.native_events = true
@@ -86,11 +86,12 @@ World(Frameworks::EnvHelper)
86
86
  Before do
87
87
  #This is ugly but unavoidable since Capybara::RackTest::Driver.reset_host! does @browser = nil and wipes all brower level settings
88
88
  #it was either this or a monkey patch - need to think about pushing a softer reset change to capybara-mechanize to override this
89
+ http_proxy = ENV['HTTP_PROXY'] || ENV['http_proxy']
89
90
  if page.driver.class == Capybara::Mechanize::Driver
90
91
  page.driver.browser.agent.cert, page.driver.browser.agent.key = ENV['FW_CERT_LOCATION'], ENV['FW_CERT_LOCATION'] if ENV['FW_CERT_LOCATION']
91
92
  page.driver.browser.agent.ca_file = ENV['CA_CERT_LOCATION'] if ENV['CA_CERT_LOCATION']
92
93
  #TODO: Fix proxy logic globally...use system proxy instead of PROXY_URL
93
- page.driver.browser.agent.set_proxy(ENV['PROXY_URL'].scan(/http:\/\/(.*):80/).to_s,80) if ENV['PROXY_URL']
94
+ page.driver.browser.agent.set_proxy(http_proxy.scan(/http:\/\/(.*):80/).to_s,80) if http_proxy
94
95
  #This is necessary because Mech2 does not ship with root certs like Mech1 did and boxes may not have the OpenSSL set installed
95
96
  page.driver.browser.agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
96
97
  end
@@ -78,40 +78,6 @@ module Capybara
78
78
  driver.add_cookie(attribs)
79
79
  end
80
80
 
81
- DTD_REFS = {
82
- "-//W3C//DTD XHTML 1.0 Strict//EN" => {:dtd => "#{File.dirname( __FILE__)}/../../schemas/xhtml1-strict.dtd", :type => :strict},
83
- "-//W3C//DTD XHTML 1.0 Transitional//EN" => {:dtd => "#{File.dirname( __FILE__)}/../../schemas/xhtml1-transitional.dtd", :type => :transitional},
84
- "-//W3C//DTD XHTML+RDFa 1.0//EN" => {:dtd => "#{File.dirname( __FILE__)}/../../schemas/xhtml-rdfa-1.dtd", :type => :rdfa}}
85
- #I highly recomment NOT using this method
86
- def validate(source)
87
- doctype = source.scan(/\"(.*?)\"/)[0].to_s
88
-
89
- if(DTD_REFS[doctype])
90
- dtd = DTD_REFS[doctype][:dtd]
91
- type = DTD_REFS[doctype][:type]
92
- end
93
-
94
- raise "RDFA Validation not currently supported due to issues in Nokogiri" if type == :rdfa
95
-
96
- if(RUBY_PLATFORM == 'java') #this works
97
- source = source.gsub(/PUBLIC \"-\/\/W3C\/\/DTD XHTML.*?\/\/EN\" \"http:\/\/www.w3.org.*?\"/, "SYSTEM \"#{dtd}\"")
98
- doc = Nokogiri::XML(source) { |cfg|
99
- cfg.noent.dtdload.dtdvalid
100
- }
101
- doc = Nokogiri::XML(source)
102
- errors = doc.validate
103
- else #this doesn't - nokogiri issues
104
- require 'open-uri'
105
- doc = Nokogiri::XML(open(driver.current_url, :proxy => ENV['PROXY_URL'])) do |config|
106
- config.strict.noent
107
- end
108
- #xsd = Nokogiri::XML::Schema(File.read("#{File.dirname( __FILE__)}/../../schemas/xhtml1-strict.xsd"))
109
- xsd = Nokogiri::XML::Schema(open('http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd', :proxy => ENV['PROXY_URL']))
110
- errors = xsd.validate(doc)
111
- end
112
- raise "Page (#{current_url}) failed XHTML vaidation (or Nokogiri Freaked out...please manually check against W3C), errors:#{errors.to_s}" unless errors == []
113
- end
114
81
  end
115
- end
116
-
117
82
 
83
+ end
@@ -0,0 +1,77 @@
1
+ class RakeHelpers
2
+ INVOKE_CUCUMBER = "bin/cucumber -r features"
3
+
4
+ class << self
5
+ def install
6
+ system('bundle install --no-cache --binstubs --path vendor/bundle')
7
+ end
8
+
9
+ def color(text, options = {})
10
+ #ANSI color codes
11
+ case options[:color]
12
+ when :red
13
+ text = "\033[31m#{text}\033[0m"
14
+ when :green
15
+ text = "\033[32m#{text}\033[0m"
16
+ when :yellow
17
+ text = "\033[33m#{text}\033[0m"
18
+ end
19
+ text
20
+ end
21
+
22
+ def list_profiles
23
+ puts 'Available profiles:'
24
+ f = File.open('config/cucumber.yml', 'r')
25
+ linenum = 0
26
+ @profiles = {}
27
+ f.read.each do |line|
28
+ line.scan(/.*?: /) do |match|
29
+ linenum += 1
30
+ puts color(linenum.to_s + '. ', :color => :yellow) + color(match.gsub(':',''), :color => :green)
31
+ @profiles[linenum.to_s] = match.gsub(':','')
32
+ end
33
+ end
34
+ end
35
+
36
+ def update
37
+ system('bundle update')
38
+ end
39
+
40
+ def run_feature(feature, profile='default')
41
+ system("#{INVOKE_CUCUMBER} -p #{profile} features/#{feature}.feature")
42
+ end
43
+
44
+ def run_profile(profile='default')
45
+ system("#{INVOKE_CUCUMBER} -p #{profile}")
46
+ end
47
+
48
+
49
+ def start_app
50
+ $: << File.dirname( __FILE__)
51
+ require 'lib/spec/test_app'
52
+ Rack::Handler::WEBrick.run TestApp, :Port => 8070
53
+ end
54
+
55
+ def run_local
56
+ if(RUBY_PLATFORM == 'java')
57
+ abort color("This script only works if you are running on MRI ('normal') Ruby....sorry....", :color => :red)
58
+ end
59
+ puts color('*********************************************',:color => :green)
60
+ puts color('* *',:color => :green)
61
+ puts color('* Cucumber Acceptance Tests *',:color => :green)
62
+ puts color('* Pre-Requisites: *',:color => :green)
63
+ puts color('* ruby 1.8.7, bundler, rake *',:color => :green)
64
+ puts color('* *',:color => :green)
65
+ puts color('*********************************************',:color => :green)
66
+ list_profiles
67
+ puts 'Above is a list of the available profiles, please enter the number of the profile you wish to run: '
68
+ profile = STDIN.gets.chomp
69
+ #TODO: Add some input validation?
70
+ puts "The profile chosen is: #{color(@profiles[profile], :color => :red)}"
71
+ puts 'Preparing to bundle required gems...'
72
+ install
73
+ puts 'Preparing to run tests...'
74
+ run_profile(@profiles[profile])
75
+ end
76
+ end
77
+ end
data/lib/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module FrameworksCapybara
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
4
4
 
@@ -49,13 +49,13 @@ describe CapybaraSetup do
49
49
  end
50
50
 
51
51
  it "should require as a minimum ENVIRONMENT and BROWSER" do
52
- lambda {CapybaraSetup.new}.should raise_error(RuntimeError,'Please ensure following environment variables are set ENVIRONMENT [int|test|stage|live], BROWSER[headless|ie|chrome|firefox] and PROXY_URL (if required)')
52
+ lambda {CapybaraSetup.new}.should raise_error(RuntimeError,'Please ensure following environment variables are set ENVIRONMENT [int|test|stage|live], BROWSER[headless|ie|chrome|firefox] and HTTP_PROXY (if required)')
53
53
  end
54
54
 
55
55
  it "should require as a minimum ENVIRONMENT, BROWSER and REMOTE_BROWSER if running a Remote Selenium Instance" do
56
56
  ENV['BROWSER'] = 'remote'
57
57
  ENV['ENVIRONMENT'] = 'test'
58
- lambda {CapybaraSetup.new}.should raise_error(RuntimeError,'Please ensure the following environment variables are set PLATFORM, REMOTE_URL, REMOTE_BROWSER (browser to use on remote machine), PROXY_URL (if required), REMOTE_BROWSER_PROXY (if required) and BROWSER_VERSION (if required)')
58
+ lambda {CapybaraSetup.new}.should raise_error(RuntimeError,'Please ensure the following environment variables are set PLATFORM, REMOTE_URL, REMOTE_BROWSER (browser to use on remote machine), HTTP_PROXY (if required), REMOTE_BROWSER_PROXY (if required) and BROWSER_VERSION (if required)')
59
59
  end
60
60
 
61
61
  it "should not error if ENVIRONMENT and BROWSER are provided" do
@@ -116,7 +116,7 @@ describe CapybaraSetup do
116
116
  before do
117
117
  ENV['BROWSER'] = 'firefox'
118
118
  ENV['FIREFOX_PROFILE'] = 'BBC_INTERNAL'
119
- ENV['PROXY_URL'] = 'http://example.cache.co.uk:80'
119
+ ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
120
120
  ENV['PROXY_ON'] = 'false'
121
121
  end
122
122
 
@@ -183,7 +183,7 @@ describe CapybaraSetup do
183
183
  ENV['REMOTE_BROWSER'] = 'firefox'
184
184
  ENV['FIREFOX_PROFILE'] = 'default'
185
185
  ENV['REMOTE_URL'] = 'http://example.com'
186
- ENV['PROXY_URL'] = 'http://example.cache.co.uk:80'
186
+ ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
187
187
  end
188
188
 
189
189
  it "should be initialized correctly" do
@@ -205,7 +205,7 @@ describe CapybaraSetup do
205
205
  ENV['REMOTE_BROWSER'] = 'firefox'
206
206
  ENV['FIREFOX_PROFILE'] = 'BBC_INTERNAL'
207
207
  ENV['REMOTE_URL'] = 'http://example.cache.co.uk:80'
208
- ENV['PROXY_URL'] = 'http://example.cache.co.uk:80'
208
+ ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
209
209
  ENV['PROXY_ON'] = 'false'
210
210
  end
211
211
 
@@ -257,6 +257,26 @@ describe CapybaraSetup do
257
257
  it_behaves_like "Selenium Driver Options Array"
258
258
  end
259
259
 
260
+ context "with Selenium driver and hardcoded bbc internal profile and additional firefox preferences" do
261
+ before do
262
+ ENV['BROWSER'] = 'firefox'
263
+ ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
264
+ ENV['FIREFOX_PROFILE'] = 'BBC_INTERNAL'
265
+ ENV['FIREFOX_PREFS'] = '{"javascript.enabled":false}'
266
+ end
267
+
268
+ it "should be initialized correctly" do
269
+ Capybara.delete_session
270
+ CapybaraSetup.new.driver.should == :selenium
271
+ Capybara.current_session.driver.should be_a_kind_of Capybara::Selenium::Driver
272
+ Capybara.current_session.driver.options[:browser].should == :firefox
273
+ Capybara.current_session.driver.options[:profile].should be_a_kind_of Selenium::WebDriver::Firefox::Profile
274
+ Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['javascript.enabled'].should == false
275
+ end
276
+ it_behaves_like "Selenium Driver Options Array"
277
+ end
278
+
279
+
260
280
  context "with Selenium driver and additional firefox preferences" do
261
281
  before do
262
282
  ENV['BROWSER'] = 'firefox'
@@ -279,7 +299,6 @@ describe CapybaraSetup do
279
299
  context "with Selenium driver and new profile and custom prefs" do
280
300
  before do
281
301
  ENV['BROWSER'] = 'firefox'
282
- ENV['CREATE_NEW_FF_PROFILE'] = 'true'
283
302
  ENV['FIREFOX_PREFS'] = '{"javascript.enabled":false}'
284
303
  end
285
304
 
@@ -366,7 +385,7 @@ describe CapybaraSetup do
366
385
  before do
367
386
  ENV['BROWSER'] = 'mechanize'
368
387
  ENV['ENVIRONMENT'] = 'test'
369
- ENV['PROXY_URL'] = 'http://example.cache.co.uk:80'
388
+ ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
370
389
  end
371
390
 
372
391
  it "should be initialized correctly" do
@@ -402,7 +421,7 @@ describe CapybaraSetup do
402
421
  before do
403
422
  ENV['BROWSER'] = 'headless'
404
423
  ENV['CELERITY_JS_ENABLED'] = 'true'
405
- ENV['PROXY_URL'] = 'http://example.cache.co.uk:80'
424
+ ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
406
425
  end
407
426
 
408
427
  it "should be initialized correctly" do
@@ -415,6 +434,20 @@ describe CapybaraSetup do
415
434
  Capybara.current_session.driver.options[:browser].should == nil
416
435
  end
417
436
  end
437
+
438
+ context "with maximal Celerity driver" do
439
+ before do
440
+ ENV['BROWSER'] = 'headless'
441
+ ENV['CELERITY_JS_ENABLED'] = 'true'
442
+ ENV['http_proxy'] = 'http://example.cache.co.uk:80'
443
+ end
444
+
445
+ it "should cope with http_proxy and HTTP_PROXY " do
446
+ Capybara.delete_session
447
+ Capybara.current_session.driver.options[:proxy].should == 'example.cache.co.uk:80'
448
+ end
449
+ end
450
+
418
451
  end
419
452
  end
420
453
  end
@@ -3,6 +3,7 @@ require 'spec_helper'
3
3
  describe Frameworks::EnvHelper do
4
4
 
5
5
  before do
6
+ ENV.clear
6
7
  ENV['BROWSER'] = 'test' #mandatory data to prevent validation exception
7
8
  end
8
9
 
@@ -75,12 +76,14 @@ describe Frameworks::EnvHelper do
75
76
  end
76
77
 
77
78
  it "should be able to set proxy host correctly to use in tests using HTTP_PROXY env variable" do
79
+ ENV['ENVIRONMENT'] = 'foo'
78
80
  ENV['HTTP_PROXY'] = 'http://mycache.co.uk:80'
79
81
  generate_base_urls
80
82
  @proxy_host.should == "mycache.co.uk"
81
83
  end
82
84
 
83
85
  it "should be able to set proxy host correctly to use in tests using http_proxy env variable" do
86
+ ENV['ENVIRONMENT'] = 'foo'
84
87
  ENV['http_proxy'] = 'http://mycache.co.uk:80'
85
88
  generate_base_urls
86
89
  @proxy_host.should == "mycache.co.uk"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frameworks-capybara
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 5
10
- version: 0.2.5
9
+ - 6
10
+ version: 0.2.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - matt robbins
@@ -167,16 +167,8 @@ files:
167
167
  - lib/monkey-patches/mechanize-patches.rb
168
168
  - lib/monkey-patches/send-keys.rb
169
169
  - lib/monkey-patches/webdriver-patches.rb
170
- - lib/tasks/frameworks-tasks.rake
170
+ - lib/tasks/frameworks-tasks.rb
171
171
  - lib/version.rb
172
- - schemas/xhtml-lat1.ent
173
- - schemas/xhtml-rdfa-1.dtd
174
- - schemas/xhtml-special.ent
175
- - schemas/xhtml-symbol.ent
176
- - schemas/xhtml1-strict.dtd
177
- - schemas/xhtml1-strict.xsd
178
- - schemas/xhtml1-transitional.dtd
179
- - schemas/xml.xsd
180
172
  - spec/frameworks_capybara_spec.rb
181
173
  - spec/frameworks_cucumber_spec.rb
182
174
  - spec/mock.default/prefs.js
@@ -1,75 +0,0 @@
1
- INVOKE_CUCUMBER = "bin/cucumber"
2
-
3
- task :install do
4
- system('bundle install --no-cache --binstubs --path vendor/bundle')
5
- end
6
-
7
- def color(text, options = {})
8
- #ANSI color codes
9
- case options[:color]
10
- when :red
11
- text = "\033[31m#{text}\033[0m"
12
- when :green
13
- text = "\033[32m#{text}\033[0m"
14
- when :yellow
15
- text = "\033[33m#{text}\033[0m"
16
- end
17
- text
18
- end
19
-
20
- task :list_profiles do
21
- puts 'Available profiles:'
22
- f = File.open('config/cucumber.yml', 'r')
23
- linenum = 0
24
- @profiles = {}
25
- f.read.each do |line|
26
- line.scan(/.*?: /) do |match|
27
- linenum += 1
28
- puts color(linenum.to_s + '. ', :color => :yellow) + color(match.gsub(':',''), :color => :green)
29
- @profiles[linenum.to_s] = match.gsub(':','')
30
- end
31
- end
32
- end
33
-
34
- task :update do
35
- system('bundle update')
36
- end
37
-
38
- task :run_feature, :feature, :profile do |t, args|
39
- args.with_defaults(:profile => 'default')
40
- system("#{INVOKE_CUCUMBER} -p #{args[:profile]} features/#{args[:feature]}.feature")
41
- end
42
-
43
- task :run_profile, :profile do |t, args|
44
- args.with_defaults(:profile => 'default')
45
- system("#{INVOKE_CUCUMBER} -p #{args[:profile]}")
46
- end
47
-
48
-
49
- task :start_app do
50
- $: << File.dirname( __FILE__)
51
- require 'lib/spec/test_app'
52
- Rack::Handler::WEBrick.run TestApp, :Port => 8070
53
- end
54
-
55
- task :run_local do
56
- if(RUBY_PLATFORM == 'java')
57
- abort color("This script only works if you are running on MRI ('normal') Ruby....sorry....", :color => :red)
58
- end
59
- puts color('*********************************************',:color => :green)
60
- puts color('* *',:color => :green)
61
- puts color('* Cucumber Acceptance Tests *',:color => :green)
62
- puts color('* Pre-Requisites: *',:color => :green)
63
- puts color('* ruby 1.8.7, bundler, rake *',:color => :green)
64
- puts color('* *',:color => :green)
65
- puts color('*********************************************',:color => :green)
66
- Rake::Task[:list_profiles].invoke
67
- puts 'Above is a list of the available profiles, please enter the number of the profile you wish to run: '
68
- profile = STDIN.gets.chomp
69
- #TODO: Add some input validation?
70
- puts "The profile chosen is: #{color(@profiles[profile], :color => :red)}"
71
- puts 'Preparing to bundle required gems...'
72
- Rake::Task[:install].invoke
73
- puts 'Preparing to run tests...'
74
- Rake::Task[:run_profile].invoke(@profiles[profile])
75
- end