frameworks-capybara 0.0.16 → 0.0.17

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/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