watirgrid 1.1.3 → 1.1.4.pre

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/Rakefile CHANGED
@@ -9,13 +9,12 @@ 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.3"
12
+ gem.version = "1.1.4.pre"
13
13
  end
14
14
  rescue LoadError
15
15
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
16
16
  end
17
17
 
18
- require 'spec/rake/spectask'
19
18
  require 'rake/rdoctask'
20
19
  Rake::RDocTask.new do |rdoc|
21
20
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
data/bin/provider CHANGED
@@ -95,6 +95,7 @@ provider = Provider.new(
95
95
  :ring_server_host => options[:ring_server_host],
96
96
  :ring_server_port => options[:ring_server_port] || 12358,
97
97
  :driver => options[:driver] || nil,
98
+ :browser_type => options[:browser_type] || nil,
98
99
  :controller_uri => options[:controller_uri] || nil,
99
100
  :acls => options[:acls] || %w{ allow all },
100
101
  :loglevel => options[:loglevel])
@@ -8,24 +8,15 @@ controller = Controller.new
8
8
  controller.start
9
9
 
10
10
  # Start a Provider with SafariWatir
11
- provider = Provider.new(:browser_type => 'safari')
11
+ provider = Provider.new(:driver => 'safariwatir')
12
12
  provider.start
13
13
 
14
- # Start a Grid
15
- grid = Watir::Grid.new
16
- grid.start(:take_all => true)
17
-
18
14
  # Control the Providers via the Grid
19
- # We only have one Provider on the Grid so no real need for threads
20
- # however keeping the thread construct for example only
21
- threads = []
22
- grid.browsers.each_with_index do |browser, index|
23
- threads << Thread.new do
24
- b = browser[:object].new_browser
25
- b.goto("http://www.google.com")
26
- b.text_field(:name, 'q').set("watirgrid")
27
- b.button(:name, "btnI").click
28
- b.close
29
- end
30
- end
31
- threads.each {|thread| thread.join}
15
+ Watir::Grid.control do |browser, index|
16
+ p "I am browser index #{index}"
17
+ browser.goto "http://google.com"
18
+ p browser.title
19
+ browser.text_field(:name, 'q').set("watirgrid")
20
+ browser.button(:name, "btnI").click
21
+ browser.close
22
+ end
@@ -9,32 +9,16 @@ controller.start
9
9
 
10
10
  # Start 2 Providers with WebDriver
11
11
  1.upto(2) do
12
- provider = Provider.new(:browser_type => 'webdriver')
12
+ provider = Provider.new(:driver => 'webdriver')
13
13
  provider.start
14
14
  end
15
15
 
16
- # Start another Grid
17
- grid = Watir::Grid.new
18
- grid.start(:take_all => true)
19
-
20
- # Control the first Provider via the Grid using Firefox
21
- # Note when we have a WebDriver object we also need to specify the target
22
- # browser in new_browser method
23
- thread = Thread.new do
24
- b = grid.browsers[0][:object].new_browser(:firefox)
25
- b.goto("http://google.com")
26
- b.text_field(:name, 'q').set("watirgrid")
27
- b.button(:name, "btnI").click
28
- b.close
29
- end
30
- thread.join
31
-
32
- # Control the second Provider via the Grid, this time using Chrome
33
- thread = Thread.new do
34
- b = grid.browsers[1][:object].new_browser(:chrome)
35
- b.goto("http://google.com")
36
- b.text_field(:name, 'q').set("watirgrid")
37
- b.button(:name, "btnI").click
38
- b.close
16
+ # Control the Providers via the Grid
17
+ Watir::Grid.control(:browser_type => 'firefox') do |browser, index|
18
+ p "I am browser index #{index}"
19
+ browser.goto "http://google.com"
20
+ p browser.title
21
+ browser.text_field(:name, 'q').set("watirgrid")
22
+ browser.button(:name, "btnI").click
23
+ browser.close
39
24
  end
40
- thread.join
@@ -10,10 +10,10 @@ controller = Controller.new(
10
10
  :loglevel => Logger::ERROR)
11
11
  controller.start
12
12
 
13
- 1.times do
13
+ 2.times do
14
14
  provider = Provider.new(
15
15
  :ring_server_port => 12357,
16
- :loglevel => Logger::ERROR, :browser_type => 'webdriver')
16
+ :loglevel => Logger::ERROR, :driver => 'webdriver')
17
17
  provider.start
18
18
  end
19
19
 
@@ -29,7 +29,7 @@ if ENV["GRID"] then
29
29
  # params[:controller_uri] = ENV["controller_uri"]
30
30
 
31
31
  # Now for the other params
32
- params[:browser] = 'chrome' # type of webdriver browser to spawn
32
+ params[:browser_type] = 'firefox' # type of webdriver browser to spawn
33
33
  params[:quantity] = 20 # max number of browsers to use
34
34
  params[:rampup] = 10 # seconds
35
35
  grid ||= Watir::Grid.new(params)
@@ -9,7 +9,7 @@ ENV["controller_uri"] = "druby://10.0.1.3:11235"
9
9
  if ENV["GRID"] then
10
10
  params = {}
11
11
  params[:controller_uri] = ENV["controller_uri"]
12
- params[:browser] = 'chrome' # type of webdriver browser to spawn
12
+ params[:browser_type] = 'chrome' # type of webdriver browser to spawn
13
13
  grid ||= Watir::Grid.new(params)
14
14
  grid.start(:initiate => true, :quantity => 1, :take_all => true)
15
15
  else
data/lib/listener.rb CHANGED
@@ -17,11 +17,11 @@ class Listener
17
17
  def start
18
18
  DRb.start_service
19
19
  ring_server = DRbObject.new(nil, @controller_uri)
20
- service = ring_server.read([:WatirGrid, nil, nil, nil, nil, nil, nil])
20
+ service = ring_server.read([:WatirGrid, nil, nil, nil, nil, nil, nil, nil])
21
21
  observers = []
22
- observers << ring_server.notify('write',[:WatirGrid, nil, nil, nil, nil, nil, nil], nil)
23
- observers << ring_server.notify('take', [:WatirGrid, nil, nil, nil, nil, nil, nil], nil)
24
- observers << ring_server.notify('delete', [:WatirGrid, nil, nil, nil, nil, nil, nil], nil)
22
+ observers << ring_server.notify('write',[:WatirGrid, nil, nil, nil, nil, nil, nil, nil], nil)
23
+ observers << ring_server.notify('take', [:WatirGrid, nil, nil, nil, nil, nil, nil, nil], nil)
24
+ observers << ring_server.notify('delete', [:WatirGrid, nil, nil, nil, nil, nil, nil, nil], nil)
25
25
  @log.debug("Listener started on : #{@controller_uri}")
26
26
  threads = []
27
27
  observers.each do |observer|
data/lib/provider.rb CHANGED
@@ -129,7 +129,8 @@ class Provider
129
129
  'A watir provider',
130
130
  hostname,
131
131
  architecture,
132
- @driver
132
+ @driver,
133
+ @browser_type
133
134
  ]
134
135
 
135
136
  # locate the Rinda Ring Server via a UDP broadcast
data/lib/watirgrid.rb CHANGED
@@ -55,7 +55,7 @@ module Watir
55
55
  def setup
56
56
  @browsers.each_with_index do |browser, index|
57
57
  sleep 0.15
58
- @providers[index] ||= browser[:object].new_browser @browser_type
58
+ @providers[index] ||= browser[:object].new_browser((browser[:browser_type] || @browser_type))
59
59
  end
60
60
  end
61
61
 
@@ -83,7 +83,7 @@ module Watir
83
83
  sleep rampup(grid.size, params)
84
84
  threads << Thread.new do
85
85
  start = ::Time.now
86
- @browser = browser[:object].new_browser params[:browser_type]
86
+ @browser = browser[:object].new_browser((params[:browser_type] || browser[:browser_type]))
87
87
  yield @browser, "#{index}"
88
88
  end
89
89
  end
@@ -176,7 +176,8 @@ module Watir
176
176
  nil, # provider description
177
177
  nil, # hostname
178
178
  params[:architecture],
179
- params[:driver]
179
+ params[:driver],
180
+ params[:browser_type]
180
181
  ])
181
182
  end
182
183
 
@@ -213,6 +214,7 @@ module Watir
213
214
  tuple_hash[:hostname] = tuple[4]
214
215
  tuple_hash[:architecture] = tuple[5]
215
216
  tuple_hash[:driver] = tuple[6]
217
+ tuple_hash[:browser_type] = tuple[7]
216
218
  tuple_hash
217
219
  end
218
220
 
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'childprocess'
3
+
4
+ describe 'Using the Grid with different Drivers AND Browser Types' do
5
+ before(:all) do
6
+ @controller = ChildProcess.build("~/.rvm/gems/ruby-1.8.7-p334/bin/controller -h 127.0.0.1").start
7
+ sleep 1
8
+ @provider1 = ChildProcess.build("~/.rvm/gems/ruby-1.8.7-p334/bin/provider -h 127.0.0.1 -p 8001 -d safariwatir").start
9
+ sleep 1
10
+ @provider2 = ChildProcess.build("~/.rvm/gems/ruby-1.8.7-p334/bin/provider -h 127.0.0.1 -p 8002 -d webdriver -b firefox").start
11
+ sleep 2
12
+ end
13
+
14
+ after(:all) do
15
+ @controller.stop if @controller.alive?
16
+ @provider1.stop if @provider1.alive?
17
+ @provider2.stop if @provider2.alive?
18
+ end
19
+
20
+ it 'should control a grid' do
21
+ Watir::Grid.control(:controller_uri => 'druby://127.0.0.1:11235') do |browser, index|
22
+ p "I am browser index #{index}"
23
+ browser.goto "http://google.com"
24
+ p browser.title
25
+ browser.close
26
+ end
27
+ end
28
+
29
+ it 'should iterate over a grid' do
30
+ grid = Watir::Grid.new(:controller_uri => 'druby://127.0.0.1:11235')
31
+ grid.start(:initiate => true)
32
+ grid.iterate do |browser|
33
+ browser.goto "http://google.com"
34
+ browser.close
35
+ end
36
+ end
37
+ 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.1.3.pre"
8
+ s.version = "1.1.3"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
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-05-16}
12
+ s.date = %q{2011-05-26}
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"]
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
22
- "EXAMPLES.rdoc",
23
22
  "LICENSE",
24
23
  "README.rdoc",
25
24
  "Rakefile",
@@ -40,13 +39,11 @@ Gem::Specification.new do |s|
40
39
  "lib/provider.rb",
41
40
  "lib/watirgrid.rb",
42
41
  "rdoc/logo.png",
43
- "spec/control_spec.rb",
44
- "spec/grid_spec.rb",
42
+ "spec/grid_control_spec.rb",
43
+ "spec/grid_management_spec.rb",
45
44
  "spec/memory_spec.rb",
46
45
  "spec/selenium_webdriver_spec.rb",
47
46
  "spec/spec_helper.rb",
48
- "spec/utilities_spec.rb",
49
- "spec/webdriver_remote_spec.rb",
50
47
  "spec/webdriver_spec.rb",
51
48
  "watirgrid.gemspec"
52
49
  ]
@@ -62,13 +59,11 @@ Gem::Specification.new do |s|
62
59
  "examples/cucumber/support/env.rb",
63
60
  "examples/parallel/cucumber/step_definitions/example_steps.rb",
64
61
  "examples/parallel/cucumber/support/env.rb",
65
- "spec/control_spec.rb",
66
- "spec/grid_spec.rb",
62
+ "spec/grid_control_spec.rb",
63
+ "spec/grid_management_spec.rb",
67
64
  "spec/memory_spec.rb",
68
65
  "spec/selenium_webdriver_spec.rb",
69
66
  "spec/spec_helper.rb",
70
- "spec/utilities_spec.rb",
71
- "spec/webdriver_remote_spec.rb",
72
67
  "spec/webdriver_spec.rb"
73
68
  ]
74
69
 
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watirgrid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease:
4
+ hash: 961915980
5
+ prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 3
10
- version: 1.1.3
9
+ - 4
10
+ - pre
11
+ version: 1.1.4.pre
11
12
  platform: ruby
12
13
  authors:
13
14
  - Tim Koopmans
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-05-26 00:00:00 +10:00
19
+ date: 2011-06-05 00:00:00 +10:00
19
20
  default_executable:
20
21
  dependencies: []
21
22
 
@@ -40,7 +41,6 @@ files:
40
41
  - bin/provider
41
42
  - examples/basic/example_safariwatir.rb
42
43
  - examples/basic/example_webdriver.rb
43
- - examples/basic/example_webdriver_remote.rb
44
44
  - examples/cucumber/example.feature
45
45
  - examples/cucumber/step_definitions/example_steps.rb
46
46
  - examples/cucumber/support/env.rb
@@ -54,6 +54,7 @@ files:
54
54
  - rdoc/logo.png
55
55
  - spec/grid_control_spec.rb
56
56
  - spec/grid_management_spec.rb
57
+ - spec/grid_mixed_spec.rb
57
58
  - spec/memory_spec.rb
58
59
  - spec/selenium_webdriver_spec.rb
59
60
  - spec/spec_helper.rb
@@ -80,30 +81,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
81
  required_rubygems_version: !ruby/object:Gem::Requirement
81
82
  none: false
82
83
  requirements:
83
- - - ">="
84
+ - - ">"
84
85
  - !ruby/object:Gem::Version
85
- hash: 3
86
+ hash: 25
86
87
  segments:
87
- - 0
88
- version: "0"
88
+ - 1
89
+ - 3
90
+ - 1
91
+ version: 1.3.1
89
92
  requirements: []
90
93
 
91
94
  rubyforge_project:
92
- rubygems_version: 1.4.2
95
+ rubygems_version: 1.6.2
93
96
  signing_key:
94
97
  specification_version: 3
95
98
  summary: "WatirGrid: Web Application Testing in Ruby across a grid network."
96
- test_files:
97
- - examples/basic/example_safariwatir.rb
98
- - examples/basic/example_webdriver.rb
99
- - examples/basic/example_webdriver_remote.rb
100
- - examples/cucumber/step_definitions/example_steps.rb
101
- - examples/cucumber/support/env.rb
102
- - examples/parallel/cucumber/step_definitions/example_steps.rb
103
- - examples/parallel/cucumber/support/env.rb
104
- - spec/grid_control_spec.rb
105
- - spec/grid_management_spec.rb
106
- - spec/memory_spec.rb
107
- - spec/selenium_webdriver_spec.rb
108
- - spec/spec_helper.rb
109
- - spec/webdriver_spec.rb
99
+ test_files: []
100
+
@@ -1,34 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
2
- require 'watirgrid'
3
- require 'extensions/remote'
4
-
5
- # Here's some basic examples in plain Ruby with Watirgrid and WebDriver Remote / HtmlUnit
6
-
7
- # Start a Controller using defaults
8
- controller = Controller.new
9
- controller.start
10
-
11
- # Start 50 Providers with WebDriver Remote
12
- 1.upto(50) do
13
- provider = Provider.new(:browser_type => 'webdriver_remote')
14
- provider.start
15
- end
16
-
17
- # Start another Grid
18
- @grid = Watir::Grid.new
19
- @grid.start(:take_all => true)
20
- threads = []
21
- @grid.browsers.each_with_index do |browser, index|
22
- sleep 0.5 # let's sleep a little to give a more natural rampup
23
- threads << Thread.new do
24
- require 'selenium/server'
25
- include Selenium
26
-
27
- b = browser[:object].new_browser(:htmlunit)
28
- t = Time.now
29
- b.goto("http://90kts.local/")
30
- puts "#{Thread.current.object_id} : #{b.title} : Elapsed #{Time.now - t}"
31
- b.close
32
- end
33
- end
34
- threads.each {|thread| thread.join}