watirgrid 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ begin
9
9
  gem.email = "tim.koops@gmail.com"
10
10
  gem.homepage = "http://github.com/90kts/watirgrid"
11
11
  gem.authors = ["Tim Koopmans"]
12
- gem.version = "1.1.0"
12
+ gem.version = "1.1.1"
13
13
  end
14
14
  rescue LoadError
15
15
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
data/lib/provider.rb CHANGED
@@ -37,6 +37,10 @@ module Watir
37
37
  require 'watir-webdriver'
38
38
  require 'watir-webdriver-performance'
39
39
  @browser = Watir::Browser
40
+ when :webdriver_remote
41
+ require 'watir-webdriver'
42
+ require 'selenium-webdriver'
43
+ @browser = Watir::Browser
40
44
  when :selenium
41
45
  require 'selenium-webdriver'
42
46
  @browser = Selenium::WebDriver
@@ -46,9 +50,19 @@ module Watir
46
50
  def new_browser(webdriver_browser_type = :firefox)
47
51
  case @browser.inspect
48
52
  when "Selenium::WebDriver"
49
- @browser.for webdriver_browser_type
53
+ if webdriver_browser_type == :htmlunit
54
+ caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true)
55
+ @browser.for(:remote, :url => "http://127.0.0.1:4444/wd/hub", :desired_capabilities => caps)
56
+ else
57
+ @browser.for webdriver_browser_type
58
+ end
50
59
  when "Watir::Browser"
51
- @browser.new webdriver_browser_type
60
+ if webdriver_browser_type == :htmlunit
61
+ caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true)
62
+ @browser.new(:remote, :url => "http://127.0.0.1:4444/wd/hub", :desired_capabilities => caps)
63
+ else
64
+ @browser.new webdriver_browser_type
65
+ end
52
66
  when "Watir::Safari"
53
67
  @browser.new
54
68
  when "FireWatir::Firefox"
data/lib/watirgrid.rb CHANGED
@@ -50,33 +50,21 @@ module Watir
50
50
 
51
51
  ##
52
52
  # This is a helper method to control a grid.
53
- # It involves some general block thuggery and could
54
- # honestly benefit from some brutal refactoring...
55
53
  def self.control(params = {}, &block)
56
54
  log = Logger.new(STDOUT, 'daily')
57
55
  log.level = params[:loglevel] || Logger::ERROR
58
56
  grid = self.new(params)
59
- grid.start(:take_all => true)
60
- log.debug("Grid size : #{grid.size}")
61
- log.debug("Grid rampup : #{rampup(grid.size, params)} secs")
57
+ grid.start(:read_all => true)
62
58
  threads = []
63
59
  grid.browsers.each_with_index do |browser, index|
64
60
  sleep rampup(grid.size, params)
65
61
  threads << Thread.new do
66
62
  start = ::Time.now
67
- log.debug("Browser #{index+1}##{Thread.current.object_id} start : #{::Time.now}")
68
- log.debug("Browser #{index+1}##{Thread.current.object_id} architecture : #{browser[:architecture]}")
69
- log.debug("Browser #{index+1}##{Thread.current.object_id} type : #{browser[:browser_type]}")
70
- log.debug("Browser #{index+1}##{Thread.current.object_id} hostname : #{browser[:hostname]}")
71
63
  @browser = browser[:object].new_browser
72
- yield @browser, "#{index+1}##{Thread.current.object_id}"
73
- log.debug("Browser #{index+1}##{Thread.current.object_id} stop : #{::Time.now}")
74
- log.debug("Browser #{index+1}##{Thread.current.object_id} elapsed : #{(::Time.now - start).to_i} secs")
75
- #@browser.close
64
+ yield @browser, "#{index}"
76
65
  end
77
66
  end
78
67
  threads.each {|thread| thread.join}
79
- grid.release_tuples
80
68
  end
81
69
 
82
70
  private
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'Using the Grid Control method' do
4
+ before(:all) do
5
+ @controller = Controller.new(
6
+ :ring_server_port => 12357,
7
+ :loglevel => Logger::ERROR)
8
+ @controller.start
9
+ provider = Provider.new(
10
+ :ring_server_port => 12357,
11
+ :loglevel => Logger::ERROR, :browser_type => 'safari')
12
+ provider.start
13
+ end
14
+
15
+ after(:all) do
16
+ @controller.stop
17
+ end
18
+
19
+ it 'should control a grid' do
20
+ Watir::Grid.control(:ring_server_port => 12357) do |browser, index|
21
+ p "I am browser index #{index}"
22
+ browser.goto "google.com"
23
+ p browser.title
24
+ browser.close
25
+ end
26
+ end
27
+ end
@@ -1,6 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
3
- require 'extensions/remote'
4
3
 
5
4
  describe 'Using the Grid with WebDriver Remote' do
6
5
  before(:all) do
@@ -16,12 +15,12 @@ describe 'Using the Grid with WebDriver Remote' do
16
15
  @controller.stop
17
16
  end
18
17
 
19
- it 'should take the last provider on the grid and execute some Watir code in WebDriver with HtmlUnit' do
18
+ it 'should read the provider on the grid and execute some Watir code in WebDriver with HtmlUnit' do
20
19
  grid = Watir::Grid.new
21
- grid.start(:quantity => 1, :take_all => true)
20
+ grid.start(:quantity => 1, :read_all => true)
22
21
  threads = []
23
22
  grid.browsers.each do |browser|
24
- threads << Thread.new do
23
+ threads << Thread.new do
25
24
  b = browser[:object].new_browser(:htmlunit)
26
25
  b.goto("http://www.google.com")
27
26
  b.text_field(:name, 'q').set("watirgrid")
@@ -32,4 +31,30 @@ describe 'Using the Grid with WebDriver Remote' do
32
31
  threads.each {|thread| thread.join}
33
32
  grid.size.should == 1
34
33
  end
34
+
35
+ it 'should read the provider on the grid and execute some Watir code in WebDriver with HtmlUnit' do
36
+ grid = Watir::Grid.new
37
+ grid.start(:quantity => 1, :read_all => true)
38
+ threads = []
39
+ grid.browsers.each do |browser|
40
+ threads << Thread.new do
41
+ vusers = []
42
+ 3.times do
43
+ vusers << Thread.new do
44
+ b = browser[:object].new_browser(:htmlunit)
45
+ b.goto("http://www.google.com")
46
+ b.text_field(:name => "q").set "watirgrid"
47
+ b.button(:name => "btnG").click
48
+ b.div(:id => "resultStats").wait_until_present
49
+ p "Displaying page: '#{b.title}' with results: '#{b.div(:id => "resultStats").text}'"
50
+ b.close
51
+ end
52
+ vusers.each {|vuser| vuser.join}
53
+ end
54
+ end
55
+ end
56
+ threads.each {|thread| thread.join}
57
+ grid.size.should == 1
58
+ end
59
+
35
60
  end
data/watirgrid.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{watirgrid}
8
- s.version = "1.0.6"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tim Koopmans"]
12
- s.date = %q{2011-04-19}
12
+ s.date = %q{2011-04-20}
13
13
  s.description = %q{WatirGrid allows for distributed testing across a grid network using Watir.}
14
14
  s.email = %q{tim.koops@gmail.com}
15
15
  s.executables = ["listener", "controller", "provider"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watirgrid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- version: 1.1.0
9
+ - 1
10
+ version: 1.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Koopmans
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-20 00:00:00 +10:00
18
+ date: 2011-05-04 00:00:00 +10:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -45,13 +45,12 @@ files:
45
45
  - examples/cucumber/example.feature
46
46
  - examples/cucumber/step_definitions/example_steps.rb
47
47
  - lib/controller.rb
48
- - lib/extensions/remote.rb
49
48
  - lib/listener.rb
50
49
  - lib/provider.rb
51
50
  - lib/watirgrid.rb
52
51
  - rdoc/logo.png
52
+ - spec/control_spec.rb
53
53
  - spec/grid_spec.rb
54
- - spec/gridinit_spec.rb
55
54
  - spec/memory_spec.rb
56
55
  - spec/selenium_webdriver_spec.rb
57
56
  - spec/spec_helper.rb
@@ -98,8 +97,8 @@ test_files:
98
97
  - examples/basic/example_webdriver.rb
99
98
  - examples/basic/example_webdriver_remote.rb
100
99
  - examples/cucumber/step_definitions/example_steps.rb
100
+ - spec/control_spec.rb
101
101
  - spec/grid_spec.rb
102
- - spec/gridinit_spec.rb
103
102
  - spec/memory_spec.rb
104
103
  - spec/selenium_webdriver_spec.rb
105
104
  - spec/spec_helper.rb
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # remote.rb
3
- # Rinda Ring Provider
4
-
5
- require 'rinda/ring'
6
- require 'rinda/tuplespace'
7
- require 'logger'
8
- require 'drb/acl'
9
- require 'uuid'
10
- require 'selenium/server'
11
- include Selenium
12
- @server = Selenium::Server.new(File.expand_path(File.dirname(__FILE__)) + '/selenium-server-standalone-2.0b1.jar', :background => true)
13
- @server.start
14
-
15
- module Watir
16
- class Provider
17
-
18
- include DRbUndumped # all objects will be proxied, not copied
19
-
20
- attr_reader :browser
21
-
22
- def initialize(browser = nil)
23
- browser = (browser || 'tmp').downcase.to_sym
24
- case browser
25
- when :webdriver_remote
26
- require 'watir-webdriver'
27
- @browser = Watir::Browser
28
- end
29
- end
30
-
31
- def new_browser(webdriver_browser_type = nil)
32
- if webdriver_browser_type == :htmlunit
33
- capabilities = WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true)
34
- @browser.new(:remote, :url => "http://127.0.0.1:4444/wd/hub", :desired_capabilities => capabilities)
35
- end
36
- end
37
-
38
- end
39
- end
@@ -1,63 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe 'Using the Grid in GRIDinit style' do
4
- before(:all) do
5
- @controller = Controller.new(
6
- :drb_server_port => 12357,
7
- :ring_server_port => 12358,
8
- :ring_server_host => '127.0.0.1',
9
- :loglevel => Logger::ERROR)
10
- @controller.start
11
- 1.upto(5) do
12
- provider = Provider.new(
13
- :ring_server_port => 12358,
14
- :ring_server_host => '127.0.0.1',
15
- :drb_server_host => '127.0.0.1',
16
- :loglevel => Logger::ERROR,
17
- :browser_type => 'webdriver')
18
- provider.start
19
- end
20
- end
21
-
22
- after(:all) do
23
- @controller.stop
24
- end
25
-
26
- it 'should take 1 provider via a direct controller_uri' do
27
- grid = Watir::Grid.new(:controller_uri => 'druby://127.0.0.1:12357',
28
- :drb_server_host => '127.0.0.1')
29
- grid.start(:quantity => 3, :take_all => true, :browser_type => 'webdriver')
30
- grid.size.should == 3
31
- end
32
-
33
- it 'should control the grid using a helper method' do
34
- Watir::Grid.control({:controller_uri => 'druby://127.0.0.1:12357',:loglevel => Logger::DEBUG}) do |browser, id|
35
- 3.times do |iteration|
36
- browser.goto "http://127.0.0.1/#id=#{id}&iter=#{iteration}"
37
- sleep 0.5
38
- end
39
- browser.close
40
- end
41
- end
42
-
43
- it 'should take all remaining providers via a direct controller_uri' do
44
- grid = Watir::Grid.new(:controller_uri => 'druby://127.0.0.1:12357',
45
- :drb_server_host => '127.0.0.1')
46
- grid.start(:take_all => true, :browser_type => 'webdriver')
47
- grid.size.should == 2
48
- end
49
-
50
- it 'should add new providers via a direct controller_uri' do
51
- provider = Provider.new(
52
- :controller_uri => 'druby://127.0.0.1:12357',
53
- :drb_server_host => '127.0.0.1',
54
- :loglevel => Logger::ERROR,
55
- :browser_type => 'webdriver')
56
- provider.start
57
- grid = Watir::Grid.new(:controller_uri => 'druby://127.0.0.1:12357',
58
- :drb_server_host => '127.0.0.1')
59
- grid.start(:take_all => true, :browser_type => 'webdriver')
60
- grid.size.should == 1
61
- end
62
-
63
- end