frameworks-capybara 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.16
1
+ 0.0.17
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{frameworks-capybara}
8
- s.version = "0.0.16"
8
+ s.version = "0.0.17"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["mcrmfc"]
12
- s.date = %q{2011-03-25}
12
+ s.date = %q{2011-04-01}
13
13
  s.description = %q{gem ti aid setup of Capybara for testing bbc sites}
14
14
  s.email = %q{mcrobbins@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -28,6 +28,9 @@ Gem::Specification.new do |s|
28
28
  "lib/frameworks-capybara.rb",
29
29
  "lib/frameworks/capybara.rb",
30
30
  "lib/frameworks/cucumber.rb",
31
+ "lib/monkey-patches/capybara-patches.rb",
32
+ "lib/monkey-patches/cucumber-patches.rb",
33
+ "lib/monkey-patches/webdriver-patches.rb",
31
34
  "test/helper.rb",
32
35
  "test/test_frameworks-capybara.rb"
33
36
  ]
@@ -1,3 +1,5 @@
1
+ require 'monkey-patches/webdriver-patches'
2
+ require 'monkey-patches/capybara-patches'
1
3
  require 'selenium-webdriver'
2
4
 
3
5
  class CapybaraSetup
@@ -10,18 +12,16 @@ class CapybaraSetup
10
12
 
11
13
  def initialize
12
14
 
13
- capybara_opts = {:environment => ENV['ENVIRONMENT'], :proxy => ENV['PROXY_URL'], :remote_browser_proxy_url => ENV['REMOTE_BROWSER_PROXY_URL'], :platform => ENV['PLATFORM'], :browser_name => ENV['REMOTE_BROWSER'], :version => ENV['REMOTE_BROWSER_VERSION'], :url => ENV['REMOTE_URL'], :profile => ENV['FIREFOX_PROFILE'], :browser => ENV['BROWSER'], :javascript_enabled => ENV['CELERITY_JS_ENABLED']}
15
+ capybara_opts = {:environment => ENV['ENVIRONMENT'], :proxy => ENV['PROXY_URL'], :remote_browser_proxy_url => ENV['REMOTE_BROWSER_PROXY_URL'], :platform => ENV['PLATFORM'], :browser_name => ENV['REMOTE_BROWSER'], :version => ENV['REMOTE_BROWSER_VERSION'], :url => ENV['REMOTE_URL'], :profile => ENV['FIREFOX_PROFILE'], :browser => ENV['BROWSER'], :javascript_enabled => ENV['CELERITY_JS_ENABLED'], :job_name => ENV['JOB_NAME']}
14
16
 
15
- #validate environment variables set using cucumber.yml or passed via command line
16
- validate_env_vars(capybara_opts)
17
+ validate_env_vars(capybara_opts) #validate environment variables set using cucumber.yml or passed via command line
17
18
 
18
- #update :browser value to be a symbol, required for Selenium
19
- capybara_opts[:browser] = capybara_opts[:browser].intern
19
+
20
+ capybara_opts[:browser] = capybara_opts[:browser].intern #update :browser value to be a symbol, required for Selenium
20
21
  capybara_opts[:browser_name] = capybara_opts[:browser_name].intern if capybara_opts[:browser_name]
21
- #Disable rack server
22
- Capybara.run_server = false
23
22
 
24
- #remove nil options
23
+ Capybara.run_server = false #Disable rack server
24
+
25
25
  capybara_opts.delete_if {|k,v| v.nil?}
26
26
 
27
27
  case capybara_opts[:browser]
@@ -39,10 +39,10 @@ class CapybaraSetup
39
39
  opts.has_key?(item) && opts[item]==nil ? abort(ERROR_MSG1) : ''
40
40
  end
41
41
 
42
- #delete environment, only add to opts for conveniance when validating
43
- opts.delete(:environment)
42
+ opts.delete(:environment) #delete environment, only add to opts for conveniance when validating
44
43
 
45
- if(opts[:browser]=='remote')
44
+
45
+ if opts[:browser]=='remote'
46
46
  [:platform, :remote_url, :browser_name].each do |item|
47
47
  opts.has_key?(item) && opts[item]==nil ? abort(ERROR_MSG2) : ''
48
48
  end
@@ -52,34 +52,36 @@ class CapybaraSetup
52
52
  def register_selenium_driver(opts)
53
53
  Capybara.register_driver :selenium do |app|
54
54
 
55
- if(opts[:browser] == :remote)
56
- #create remote driver client instance
55
+ if opts[:browser] == :remote
57
56
  client = Selenium::WebDriver::Remote::Http::Default.new
58
57
 
59
58
  #set proxy on client connection if required
60
- if(opts[:proxy])
59
+ if opts[:proxy]
61
60
  client.proxy = Selenium::WebDriver::Proxy.new(:http => opts[:proxy])
62
61
  opts.delete :proxy
63
62
  end
64
63
 
65
64
  #set proxy for remote browser (only supported for ff at present)
66
- if(opts[:remote_browser_proxy_url])
65
+ if opts[:remote_browser_proxy_url]
67
66
  opts[:proxy] = Selenium::WebDriver::Proxy.new(:http => opts[:remote_browser_proxy_url])
68
67
  opts.delete :remote_browser_proxy_url
69
68
  end
70
- #temp workaround - needs refactoring
69
+
70
+ #TODO: temp workaround - needs refactoring
71
71
  cap_opts = opts.clone
72
72
  cap_opts.delete :profile
73
73
  cap_opts.delete :browser
74
- #note, we should probably not be passing all the options to the capabilities, fragile
74
+
75
75
  caps = Selenium::WebDriver::Remote::Capabilities.new(cap_opts)
76
- #remove options that would have been added to caps
77
- opts.delete_if {|k,v| [:browser_name, :platform, :profile, :version].include? k}
76
+
77
+ if opts[:job_name] then caps.custom_capabilities({:'job-name' => opts.delete(:job_name)}) end #set custom job name for sauce-labs
78
+
79
+ opts.delete_if {|k,v| [:browser_name, :platform, :profile, :version].include? k} #remove options that would have been added to caps
80
+
78
81
  opts[:desired_capabilities] = caps
79
82
  opts[:http_client] = client
80
83
  else
81
- #may want to pass env variables that are not relevant for in browser 'non-remote' tests e.g. proxy, so delete these before setting up driver
82
- opts.delete_if {|k,v| [:proxy].include? k}
84
+ opts.delete_if {|k,v| [:proxy].include? k} #may want to pass env variables that are not relevant for in browser 'non-remote' tests e.g. proxy, so delete these before setting up driver
83
85
  end
84
86
  Capybara::Driver::Selenium.new(app,opts)
85
87
  end
@@ -88,12 +90,9 @@ class CapybaraSetup
88
90
 
89
91
  def register_celerity_driver (opts)
90
92
  Capybara.register_driver :celerity do |app|
91
- #delete browser from options as value with be 'headless'
92
- opts.delete :browser
93
- #set boolean for js_enabled
93
+ opts.delete :browser #delete browser from options as value with be 'headless'
94
94
  opts[:javascript_enabled] == 'true' ? opts[:javascript_enabled] = true : opts[:javascript_enabled] = false
95
- #remove http:// from proxy URL for Celerity
96
- if(opts[:proxy])
95
+ if opts[:proxy]
97
96
  opts[:proxy] = opts[:proxy].gsub(/http:\/\//,'')
98
97
  end
99
98
  Capybara::Driver::Celerity.new(app,opts)
@@ -1,4 +1,5 @@
1
1
  require 'frameworks/capybara'
2
+ require 'monkey-patches/cucumber-patches'
2
3
 
3
4
  module Frameworks
4
5
  module EnvHelper
@@ -0,0 +1,23 @@
1
+ require 'selenium-webdriver'
2
+ require 'capybara/cucumber'
3
+
4
+ #Monkey Patch's - Use with care!
5
+ #
6
+ class Capybara::Driver::Selenium::Node
7
+ def style(prop)
8
+ native.style(prop)
9
+ end
10
+ end
11
+
12
+ class Capybara::Node::Element
13
+ def style(prop)
14
+ base.style(prop)
15
+ end
16
+ end
17
+
18
+ class Capybara::Driver::Node
19
+ def style(prop)
20
+ raise NotImplementedError
21
+ end
22
+ end
23
+
@@ -0,0 +1,47 @@
1
+ require 'cucumber/formatter/html.rb'
2
+ module Cucumber
3
+ module Formatter
4
+ class Html
5
+ TEAM_NAME = 'BBC Frameworks'
6
+ def before_features(features)
7
+ @project_name = ENV['PROJECT_NAME'] || ''
8
+ unless @project_name.empty? then @project_name += ' - ' end
9
+
10
+ @step_count = get_step_count(features)
11
+
12
+ # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
13
+ @builder.declare!(
14
+ :DOCTYPE,
15
+ :html,
16
+ :PUBLIC,
17
+ '-//W3C//DTD XHTML 1.0 Strict//EN',
18
+ 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
19
+ )
20
+
21
+ @builder << '<html xmlns ="http://www.w3.org/1999/xhtml">'
22
+ @builder.head do
23
+ @builder.meta(:content => 'text/html;charset=utf-8')
24
+ @builder.title 'Cucumber'
25
+ inline_css
26
+ inline_js
27
+ end
28
+ @builder << '<body>'
29
+ @builder << "<!-- Step count #{@step_count}-->"
30
+ @builder << '<div class="cucumber">'
31
+ @builder.div(:id => 'cucumber-header') do
32
+ @builder.div(:id => 'label') do
33
+ @builder.h1("#{@project_name}#{TEAM_NAME} - #{Time.now.strftime('%d/%m/%y-%H:%M:%S')}")
34
+ end
35
+ @builder.div(:id => 'summary') do
36
+ @builder.p('',:id => 'totals')
37
+ @builder.p('',:id => 'duration')
38
+ @builder.div(:id => 'expand-collapse') do
39
+ @builder.p('Expand All', :id => 'expander')
40
+ @builder.p('Collapse All', :id => 'collapser')
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,31 @@
1
+ require 'selenium-webdriver'
2
+
3
+ #Monkey Patch's - Use with care!
4
+ #
5
+ module Selenium
6
+ module WebDriver
7
+ module Remote
8
+ class Capabilities
9
+
10
+ def custom_capabilities(opts)
11
+ @custom_capabilities = opts
12
+ end
13
+
14
+ #hopefuly this alias approach will mean we capture changes in the webdriver method
15
+ alias_method :old_as_json, :as_json
16
+ def as_json(opts = nil)
17
+
18
+ hash = old_as_json
19
+ if @custom_capabilities
20
+ @custom_capabilities.each do |key, value|
21
+ hash[key] = value
22
+ end
23
+ end
24
+ hash
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+
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: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 16
10
- version: 0.0.16
9
+ - 17
10
+ version: 0.0.17
11
11
  platform: ruby
12
12
  authors:
13
13
  - mcrmfc
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-25 00:00:00 +00:00
18
+ date: 2011-04-01 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -113,6 +113,9 @@ files:
113
113
  - lib/frameworks-capybara.rb
114
114
  - lib/frameworks/capybara.rb
115
115
  - lib/frameworks/cucumber.rb
116
+ - lib/monkey-patches/capybara-patches.rb
117
+ - lib/monkey-patches/cucumber-patches.rb
118
+ - lib/monkey-patches/webdriver-patches.rb
116
119
  - test/helper.rb
117
120
  - test/test_frameworks-capybara.rb
118
121
  has_rdoc: true