watirgrid 0.0.8.pre → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/README.rdoc +1 -5
- data/Rakefile +11 -14
- data/bin/controller +3 -3
- data/bin/provider +3 -3
- data/examples/basic/example_safariwatir.rb +31 -0
- data/examples/basic/example_webdriver.rb +40 -0
- data/examples/basic/example_webdriver_remote.rb +34 -0
- data/examples/cucumber/example.feature +17 -0
- data/examples/cucumber/step_definitions/example_steps.rb +39 -0
- data/lib/controller.rb +0 -2
- data/lib/extensions/remote.rb +39 -0
- data/lib/extensions/selenium-server-standalone-2.0b1.jar +0 -0
- data/lib/provider.rb +10 -17
- data/lib/watirgrid.rb +0 -2
- data/logo.png +0 -0
- data/spec/grid_spec.rb +110 -54
- data/spec/spec_helper.rb +0 -6
- data/spec/utilities_spec.rb +11 -8
- data/spec/webdriver_remote_spec.rb +35 -0
- data/spec/webdriver_spec.rb +45 -59
- data/watirgrid.gemspec +19 -27
- metadata +27 -51
- data/HISTORY.rdoc +0 -18
- data/examples/find_by_uuid.rb +0 -28
- data/examples/google.rb +0 -19
- data/examples/info.rb +0 -14
- data/examples/restart_firefox.rb +0 -14
- data/examples/simple.rb +0 -19
- data/spec/spec.opts +0 -1
- data/spec/stub.rb +0 -48
- data/spec/tuples_spec.rb +0 -46
- data/spec/watir_spec.rb +0 -59
- data/spec/watirgrid_spec.rb +0 -51
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -3,11 +3,7 @@
|
|
3
3
|
WatirGrid allows for distributed testing across a grid network using Watir.
|
4
4
|
|
5
5
|
== Getting Started
|
6
|
-
|
7
|
-
gem install gemcutter
|
8
|
-
gem tumble
|
9
|
-
|
10
|
-
Then to install WatirGrid:
|
6
|
+
To install WatirGrid:
|
11
7
|
gem install watirgrid
|
12
8
|
|
13
9
|
=== The Basics
|
data/Rakefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rake'
|
3
2
|
|
4
3
|
begin
|
@@ -10,29 +9,27 @@ begin
|
|
10
9
|
gem.email = "tim.koops@gmail.com"
|
11
10
|
gem.homepage = "http://github.com/90kts/watirgrid"
|
12
11
|
gem.authors = ["Tim Koopmans"]
|
13
|
-
gem.
|
14
|
-
gem.version = "0.0.8.pre"
|
15
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
12
|
+
gem.version = "0.0.9"
|
16
13
|
end
|
17
14
|
rescue LoadError
|
18
15
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
19
16
|
end
|
20
17
|
|
21
18
|
require 'spec/rake/spectask'
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
desc "Run unit tests"
|
20
|
+
Spec::Rake::SpecTask.new('unit_tests_watir') do |t|
|
21
|
+
t.spec_files = FileList['spec/**/grid_spec.rb']
|
22
|
+
t.spec_opts = ["--format", "nested", "-c"]
|
23
|
+
t.fail_on_error = false
|
25
24
|
end
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
desc "Run unit tests for WebDriver"
|
27
|
+
Spec::Rake::SpecTask.new('unit_tests_webdriver') do |t|
|
28
|
+
t.spec_files = FileList['spec/**/webdriver_spec.rb']
|
29
|
+
t.spec_opts = ["--format", "nested", "-c"]
|
30
|
+
t.fail_on_error = false
|
31
31
|
end
|
32
32
|
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
|
-
task :default => :spec
|
36
33
|
|
37
34
|
require 'rake/rdoctask'
|
38
35
|
Rake::RDocTask.new do |rdoc|
|
data/bin/controller
CHANGED
@@ -10,8 +10,8 @@ OptionParser.new do |opts|
|
|
10
10
|
opts.separator ""
|
11
11
|
opts.separator "Specific options:"
|
12
12
|
opts.on("-H HOST", "--drb-server-host", String,
|
13
|
-
"Specify DRb Server interface to host on") do |
|
14
|
-
options[:drb_server_host] =
|
13
|
+
"Specify DRb Server interface to host on") do |h|
|
14
|
+
options[:drb_server_host] = h || nil
|
15
15
|
end
|
16
16
|
opts.on("-d PORT", "--drb-server-port", Integer,
|
17
17
|
"Specify DRb Server port to listen on") do |d|
|
@@ -57,4 +57,4 @@ controller = Controller.new(
|
|
57
57
|
:loglevel => options[:loglevel]
|
58
58
|
)
|
59
59
|
controller.start
|
60
|
-
DRb.thread.join
|
60
|
+
DRb.thread.join
|
data/bin/provider
CHANGED
@@ -10,8 +10,8 @@ OptionParser.new do |opts|
|
|
10
10
|
opts.separator ""
|
11
11
|
opts.separator "Specific options:"
|
12
12
|
opts.on("-H HOST", "--drb-server-host", String,
|
13
|
-
"Specify DRb Server interface to host on") do |
|
14
|
-
options[:drb_server_host] =
|
13
|
+
"Specify DRb Server interface to host on") do |h|
|
14
|
+
options[:drb_server_host] = h || nil
|
15
15
|
end
|
16
16
|
opts.on("-d PORT", "--drb-server-port", Integer,
|
17
17
|
"Specify DRb Server port to listen on") do |d|
|
@@ -61,4 +61,4 @@ provider = Provider.new(
|
|
61
61
|
:acls => options[:acls] || %w{ allow all },
|
62
62
|
:loglevel => options[:loglevel])
|
63
63
|
provider.start
|
64
|
-
DRb.thread.join
|
64
|
+
DRb.thread.join
|
@@ -0,0 +1,31 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
2
|
+
require 'watirgrid'
|
3
|
+
|
4
|
+
# Here's some basic examples in plain Ruby with Watirgrid
|
5
|
+
|
6
|
+
# Start a Controller using defaults
|
7
|
+
controller = Controller.new
|
8
|
+
controller.start
|
9
|
+
|
10
|
+
# Start a Provider with SafariWatir
|
11
|
+
provider = Provider.new(:browser_type => 'safari')
|
12
|
+
provider.start
|
13
|
+
|
14
|
+
# Start a Grid
|
15
|
+
grid = Watir::Grid.new
|
16
|
+
grid.start(:take_all => true)
|
17
|
+
|
18
|
+
# 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}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
2
|
+
require 'watirgrid'
|
3
|
+
|
4
|
+
# Here's some basic examples in plain Ruby with Watirgrid and WebDriver
|
5
|
+
|
6
|
+
# Start a Controller using defaults
|
7
|
+
controller = Controller.new
|
8
|
+
controller.start
|
9
|
+
|
10
|
+
# Start 2 Providers with WebDriver
|
11
|
+
1.upto(2) do
|
12
|
+
provider = Provider.new(:browser_type => 'webdriver')
|
13
|
+
provider.start
|
14
|
+
end
|
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
|
39
|
+
end
|
40
|
+
thread.join
|
@@ -0,0 +1,34 @@
|
|
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}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
@Example
|
2
|
+
Feature: Watirgrid using WebDriver
|
3
|
+
In order to use Watirgrid
|
4
|
+
Users must be able to create controllers, add providers and control a grid
|
5
|
+
|
6
|
+
Scenario: Create a Controller with Providers
|
7
|
+
Given I have created and started a Controller
|
8
|
+
Then I should be able to create and start 2 "WebDriver" Providers
|
9
|
+
|
10
|
+
# Note: WebDriver can only control one instance of any particular browser on a single host.
|
11
|
+
# With Watirgrid, you'd typically have multiple instances across multiple hosts (Providers)
|
12
|
+
# For the sake of a demo, we'll just control 2 difference instances on a single host.
|
13
|
+
Scenario: Create a Grid and control the Providers
|
14
|
+
Given I have created and started a Grid with 2 Providers
|
15
|
+
Then I should be able to control the following browsers in parallel:
|
16
|
+
| Chrome |
|
17
|
+
| Firefox |
|
@@ -0,0 +1,39 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', '..', 'lib'))
|
3
|
+
require 'watirgrid'
|
4
|
+
require 'rspec/expectations';
|
5
|
+
|
6
|
+
Given /^I have created and started a Controller$/ do
|
7
|
+
controller = Controller.new(
|
8
|
+
:loglevel => Logger::ERROR)
|
9
|
+
controller.start
|
10
|
+
end
|
11
|
+
|
12
|
+
Then /^I should be able to create and start (\d+) "(.+?)" Providers$/ do |total, browser_type|
|
13
|
+
1.upto(total.to_i) do
|
14
|
+
provider = Provider.new(
|
15
|
+
:loglevel => Logger::ERROR, :browser_type => browser_type)
|
16
|
+
provider.start
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Given /^I have created and started a Grid with (\d+) Providers$/ do |total|
|
21
|
+
@grid = Watir::Grid.new
|
22
|
+
@grid.start(:take_all => true)
|
23
|
+
@grid.browsers.size.should == total.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
Then /^I should be able to control the following browsers in parallel:$/ do |table|
|
27
|
+
browsers = table.raw.collect {|e| e.to_s.downcase.to_sym}
|
28
|
+
threads = []
|
29
|
+
@grid.browsers.each_with_index do |browser, index|
|
30
|
+
threads << Thread.new do
|
31
|
+
b = browser[:object].new_browser(browsers[index])
|
32
|
+
b.goto("http://www.google.com")
|
33
|
+
b.text_field(:name, 'q').set("watirgrid")
|
34
|
+
b.button(:name, "btnI").click
|
35
|
+
b.close
|
36
|
+
end
|
37
|
+
end
|
38
|
+
threads.each {|thread| thread.join}
|
39
|
+
end
|
data/lib/controller.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
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
|
Binary file
|
data/lib/provider.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# provider.rb
|
3
3
|
# Rinda Ring Provider
|
4
4
|
|
5
|
-
require 'rubygems'
|
6
5
|
require 'rinda/ring'
|
7
6
|
require 'rinda/tuplespace'
|
8
7
|
require 'logger'
|
@@ -22,33 +21,29 @@ module Watir
|
|
22
21
|
attr_reader :browser
|
23
22
|
|
24
23
|
def initialize(browser = nil)
|
25
|
-
browser = (browser || 'tmp').downcase.to_sym
|
24
|
+
browser = (browser || 'tmp').downcase.to_sym
|
26
25
|
case browser
|
27
|
-
when :safari
|
26
|
+
when :safari, :safariwatir
|
28
27
|
require 'safariwatir'
|
29
28
|
@browser = Watir::Safari
|
30
|
-
when :firefox
|
29
|
+
when :firefox, :firewatir
|
31
30
|
require 'firewatir'
|
32
31
|
@browser = FireWatir::Firefox
|
33
|
-
when :ie
|
32
|
+
when :ie, :watir
|
34
33
|
require 'watir'
|
35
34
|
@browser = Watir::IE
|
36
35
|
when :webdriver
|
37
36
|
require 'watir-webdriver'
|
38
37
|
@browser = Watir::Browser
|
39
|
-
else
|
40
|
-
@browser = find_supported_browser
|
41
38
|
end
|
42
39
|
end
|
43
40
|
|
44
|
-
#~ def find_supported_browser
|
45
|
-
#~ if Watir::IE then return Watir::IE end
|
46
|
-
#~ if FireWatir::Firefox then return FireWatir::Firefox end
|
47
|
-
#~ if Watir::Safari then return Watir::Safari end
|
48
|
-
#~ end
|
49
|
-
|
50
41
|
def new_browser(webdriver_browser_type = nil)
|
51
|
-
|
42
|
+
if webdriver_browser_type
|
43
|
+
@browser.new(webdriver_browser_type)
|
44
|
+
else
|
45
|
+
@browser.new
|
46
|
+
end
|
52
47
|
end
|
53
48
|
|
54
49
|
##
|
@@ -83,7 +78,7 @@ module Watir
|
|
83
78
|
browsers.each { |browser| %x[killall -r #{browser}] }
|
84
79
|
when /darwin/
|
85
80
|
browsers = ['firefox-bin', 'Chrome', 'Safari']
|
86
|
-
browsers.each { |browser| %x[
|
81
|
+
browsers.each { |browser| %x[pkill -9 #{browser}] }
|
87
82
|
end
|
88
83
|
end
|
89
84
|
|
@@ -223,6 +218,4 @@ class Provider
|
|
223
218
|
'127.0.0.1'
|
224
219
|
end
|
225
220
|
end
|
226
|
-
|
227
221
|
end
|
228
|
-
|
data/lib/watirgrid.rb
CHANGED
data/logo.png
ADDED
Binary file
|
data/spec/grid_spec.rb
CHANGED
@@ -1,125 +1,183 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
describe '
|
4
|
-
|
3
|
+
describe 'Starting and Stopping Controllers on the Grid' do
|
4
|
+
it 'should start a DRb and Ring Server when specifying NO interface or port' do
|
5
|
+
controller = Controller.new(:loglevel => Logger::ERROR)
|
6
|
+
controller.start
|
7
|
+
controller.drb_server_uri.should =~ /druby/
|
8
|
+
controller.stop
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should start a DRb and Ring Server on a specified interface' do
|
12
|
+
controller = Controller.new(
|
13
|
+
:drb_server_host => '127.0.0.1',
|
14
|
+
:ring_server_host => '127.0.0.1',
|
15
|
+
:loglevel => Logger::ERROR)
|
16
|
+
controller.start
|
17
|
+
controller.drb_server_uri.should =~ /druby/
|
18
|
+
controller.stop
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should start a DRb and Ring Server on specified ports' do
|
5
22
|
controller = Controller.new(
|
6
|
-
:
|
23
|
+
:drb_server_port => 11235,
|
24
|
+
:ring_server_port => 12358,
|
7
25
|
:loglevel => Logger::ERROR)
|
8
26
|
controller.start
|
27
|
+
controller.drb_server_uri.should =~ /druby/
|
28
|
+
controller.stop
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'Starting and Stopping Providers on the Grid' do
|
33
|
+
before(:all) do
|
34
|
+
@controller = Controller.new(
|
35
|
+
:drb_server_host => '127.0.0.1',
|
36
|
+
:ring_server_host => '127.0.0.1',
|
37
|
+
:ring_server_port => 12350,
|
38
|
+
:loglevel => Logger::ERROR)
|
39
|
+
@controller.start
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should register a new provider on a specified port' do
|
43
|
+
provider = Provider.new(
|
44
|
+
:drb_server_host => '127.0.0.1',
|
45
|
+
:ring_server_host => '127.0.0.1',
|
46
|
+
:ring_server_port => 12350,
|
47
|
+
:loglevel => Logger::ERROR)
|
48
|
+
provider.start
|
49
|
+
end
|
50
|
+
|
51
|
+
after(:all) do
|
52
|
+
@controller.stop
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe 'Using the Grid' do
|
57
|
+
before(:all) do
|
58
|
+
@controller = Controller.new(
|
59
|
+
:ring_server_port => 12357,
|
60
|
+
:loglevel => Logger::ERROR)
|
61
|
+
@controller.start
|
9
62
|
1.upto(5) do
|
10
63
|
provider = Provider.new(
|
11
|
-
:ring_server_port =>
|
64
|
+
:ring_server_port => 12357,
|
12
65
|
:loglevel => Logger::ERROR, :browser_type => 'safari')
|
13
66
|
provider.start
|
14
67
|
end
|
15
68
|
end
|
16
69
|
|
17
|
-
|
18
|
-
|
19
|
-
|
70
|
+
after(:all) do
|
71
|
+
@controller.stop
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should return how many providers are available on the grid' do
|
75
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
20
76
|
grid.start(:read_all => true)
|
21
77
|
grid.size.should == 5
|
22
78
|
end
|
23
79
|
|
24
|
-
it 'should read any 2
|
25
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
26
|
-
:ring_server_host => '127.0.0.1')
|
80
|
+
it 'should read any 2 providers on the grid' do
|
81
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
27
82
|
grid.start(:quantity => 2, :read_all => true)
|
28
83
|
grid.size.should == 2
|
29
84
|
end
|
30
85
|
|
31
|
-
it 'should take any 1
|
32
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
33
|
-
:ring_server_host => '127.0.0.1')
|
86
|
+
it 'should take any 1 provider on the grid' do
|
87
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
34
88
|
grid.start(:quantity => 1, :take_all => true)
|
35
89
|
grid.size.should == 1
|
36
90
|
end
|
37
91
|
|
38
|
-
it 'should take all
|
39
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
40
|
-
:ring_server_host => '127.0.0.1')
|
92
|
+
it 'should take all providers remaining on the grid' do
|
93
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
41
94
|
grid.start(:take_all => true)
|
42
95
|
grid.size.should == 4
|
43
96
|
end
|
44
97
|
|
45
|
-
it 'should find no more
|
46
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
47
|
-
:ring_server_host => '127.0.0.1')
|
98
|
+
it 'should find no more providers on the grid' do
|
99
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
48
100
|
grid.start(:read_all => true)
|
49
101
|
grid.size.should == 0
|
50
102
|
end
|
51
103
|
|
52
|
-
it 'should register 4 new
|
104
|
+
it 'should register 4 new providers on the grid' do
|
53
105
|
1.upto(4) do
|
54
|
-
provider = Provider.new(:ring_server_port =>
|
106
|
+
provider = Provider.new(:ring_server_port => 12357,
|
55
107
|
:loglevel => Logger::ERROR, :browser_type => 'safari')
|
56
108
|
provider.start
|
57
109
|
end
|
58
110
|
end
|
59
111
|
|
60
|
-
it 'should take any 1
|
61
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
62
|
-
:ring_server_host => '127.0.0.1')
|
112
|
+
it 'should take any 1 provider based on :browser_type from the grid' do
|
113
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
63
114
|
grid.start(:quantity => 1,
|
64
115
|
:take_all => true, :browser_type => 'safari')
|
65
116
|
grid.size.should == 1
|
66
117
|
end
|
67
118
|
|
68
|
-
it 'should fail to find any grid based on a specific
|
69
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
70
|
-
:ring_server_host => '127.0.0.1')
|
119
|
+
it 'should fail to find any providers on the grid based on a specific :browser_type' do
|
120
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
71
121
|
grid.start(:quantity => 1,
|
72
122
|
:take_all => true, :browser_type => 'firefox')
|
73
123
|
grid.size.should == 0
|
74
124
|
end
|
75
125
|
|
76
|
-
it 'should fail to find any grid based on
|
77
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
78
|
-
:ring_server_host => '127.0.0.1')
|
126
|
+
it 'should fail to find any providers on the grid based on an unknown :browser_type' do
|
127
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
79
128
|
grid.start(:quantity => 1,
|
80
129
|
:take_all => true, :browser_type => 'penguin')
|
81
130
|
grid.size.should == 0
|
82
131
|
end
|
83
132
|
|
84
|
-
it 'should take any 1
|
85
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
86
|
-
:ring_server_host => '127.0.0.1')
|
133
|
+
it 'should take any 1 provider on the grid based on specific :architecture' do
|
134
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
87
135
|
grid.start(:quantity => 1,
|
88
136
|
:take_all => true, :architecture => Config::CONFIG['arch'])
|
89
137
|
grid.size.should == 1
|
90
138
|
end
|
91
139
|
|
92
|
-
it 'should fail to find any grid based on unknown architecture
|
93
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
94
|
-
:ring_server_host => '127.0.0.1')
|
140
|
+
it 'should fail to find any providers on the grid based on an unknown :architecture' do
|
141
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
95
142
|
grid.start(:quantity => 1,
|
96
|
-
:take_all => true, :architecture => 'geos-
|
143
|
+
:take_all => true, :architecture => 'geos-2000')
|
97
144
|
grid.size.should == 0
|
98
145
|
end
|
99
146
|
|
100
|
-
it 'should take any 1
|
147
|
+
it 'should take any 1 provider on the grid based on specific :hostnames' do
|
101
148
|
hostname = `hostname`.strip
|
102
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
103
|
-
:ring_server_host => '127.0.0.1')
|
149
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
104
150
|
grid.start(:quantity => 1,
|
105
151
|
:take_all => true,
|
106
|
-
:hostnames => { hostname =>
|
152
|
+
:hostnames => { hostname => '127.0.0.1'}
|
107
153
|
)
|
108
154
|
grid.size.should == 1
|
109
155
|
end
|
110
156
|
|
111
|
-
it 'should fail to find any grid based on unknown
|
112
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
113
|
-
:ring_server_host => '127.0.0.1')
|
157
|
+
it 'should fail to find any providers on the grid based on unknown :hostnames' do
|
158
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
114
159
|
grid.start(:quantity => 1,
|
115
160
|
:take_all => true, :hostnames => {
|
116
161
|
"tokyo" => "127.0.0.1"})
|
117
162
|
grid.size.should == 0
|
118
163
|
end
|
164
|
+
|
165
|
+
it 'should get the UUID of the last provider on the grid' do
|
166
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
167
|
+
grid.start(:read_all => true)
|
168
|
+
grid.browsers.each do |browser|
|
169
|
+
@uuid = browser[:uuid]
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'should be able to find a provider by its UUID on the grid' do
|
174
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
175
|
+
grid.start(:read_all => true, :uuid => @uuid)
|
176
|
+
grid.size.should == 1
|
177
|
+
end
|
119
178
|
|
120
|
-
it 'should take the last
|
121
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
122
|
-
:ring_server_host => '127.0.0.1')
|
179
|
+
it 'should take the last provider on the grid and execute some Watir code in Safari' do
|
180
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
123
181
|
grid.start(:quantity => 1, :take_all => true)
|
124
182
|
threads = []
|
125
183
|
grid.browsers.each do |browser|
|
@@ -130,19 +188,17 @@ describe 'WatirGrid' do
|
|
130
188
|
b = browser[:object].new_browser
|
131
189
|
b.goto("http://www.google.com")
|
132
190
|
b.text_field(:name, 'q').set("watirgrid")
|
133
|
-
b.button(:name, "btnI").click
|
191
|
+
#b.button(:name, "btnI").click
|
192
|
+
b.close
|
134
193
|
end
|
135
194
|
end
|
136
195
|
threads.each {|thread| thread.join}
|
137
196
|
grid.size.should == 1
|
138
197
|
end
|
139
198
|
|
140
|
-
it 'should find no more
|
141
|
-
grid = Watir::Grid.new(:ring_server_port =>
|
142
|
-
:ring_server_host => '127.0.0.1')
|
199
|
+
it 'should find no more providers on the grid' do
|
200
|
+
grid = Watir::Grid.new(:ring_server_port => 12357)
|
143
201
|
grid.start(:read_all => true)
|
144
202
|
grid.size.should == 0
|
145
|
-
end
|
146
|
-
|
203
|
+
end
|
147
204
|
end
|
148
|
-
|