commonwatir 1.6.2 → 1.6.5

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,5 +1,5 @@
1
- === 0.0.1 / 2008-08-28
2
-
3
- * Created
4
-
5
-
1
+ === 0.0.1 / 2008-08-28
2
+
3
+ * Created
4
+
5
+
data/Manifest.txt CHANGED
@@ -1,14 +1,14 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- lib/watir.rb
6
- lib/watir-common.rb
7
- lib/watir/assertions.rb
8
- lib/watir/browser.rb
9
- lib/watir/browsers.rb
10
- lib/watir/exceptions.rb
11
- lib/watir/matches.rb
12
- lib/watir/options.rb
13
- lib/watir/testcase.rb
14
- lib/watir/waiter.rb
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/watir.rb
6
+ lib/commonwatir.rb
7
+ lib/watir/assertions.rb
8
+ lib/watir/browser.rb
9
+ lib/watir/browsers.rb
10
+ lib/watir/exceptions.rb
11
+ lib/watir/matches.rb
12
+ lib/watir/options.rb
13
+ lib/watir/testcase.rb
14
+ lib/watir/waiter.rb
data/README.txt CHANGED
@@ -1,48 +1,48 @@
1
- = watir-common
2
-
3
- * FIX (url)
4
-
5
- == DESCRIPTION:
6
-
7
- Common code used by Watir and FireWatir
8
-
9
- == FEATURES/PROBLEMS:
10
-
11
- * FIX (list of features or problems)
12
-
13
- == SYNOPSIS:
14
-
15
- FIX (code sample of usage)
16
-
17
- == REQUIREMENTS:
18
-
19
- * FIX (list of requirements)
20
-
21
- == INSTALL:
22
-
23
- * sudo gem install watir-common
24
-
25
- == LICENSE:
26
-
27
- (The MIT License)
28
-
29
- Copyright (c) 2008 Bret Pettichord
30
-
31
- Permission is hereby granted, free of charge, to any person obtaining
32
- a copy of this software and associated documentation files (the
33
- 'Software'), to deal in the Software without restriction, including
34
- without limitation the rights to use, copy, modify, merge, publish,
35
- distribute, sublicense, and/or sell copies of the Software, and to
36
- permit persons to whom the Software is furnished to do so, subject to
37
- the following conditions:
38
-
39
- The above copyright notice and this permission notice shall be
40
- included in all copies or substantial portions of the Software.
41
-
42
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
43
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ = commonwatir
2
+
3
+ * FIX (url)
4
+
5
+ == DESCRIPTION:
6
+
7
+ Common code used by Watir and FireWatir
8
+
9
+ == FEATURES/PROBLEMS:
10
+
11
+ * FIX (list of features or problems)
12
+
13
+ == SYNOPSIS:
14
+
15
+ FIX (code sample of usage)
16
+
17
+ == REQUIREMENTS:
18
+
19
+ * FIX (list of requirements)
20
+
21
+ == INSTALL:
22
+
23
+ * sudo gem install commonwatir
24
+
25
+ == LICENSE:
26
+
27
+ (The MIT License)
28
+
29
+ Copyright (c) 2008, 2009 Bret Pettichord
30
+
31
+ Permission is hereby granted, free of charge, to any person obtaining
32
+ a copy of this software and associated documentation files (the
33
+ 'Software'), to deal in the Software without restriction, including
34
+ without limitation the rights to use, copy, modify, merge, publish,
35
+ distribute, sublicense, and/or sell copies of the Software, and to
36
+ permit persons to whom the Software is furnished to do so, subject to
37
+ the following conditions:
38
+
39
+ The above copyright notice and this permission notice shall be
40
+ included in all copies or substantial portions of the Software.
41
+
42
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
43
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile CHANGED
@@ -1,9 +1,11 @@
1
- require 'rubygems'
2
- require 'hoe'
3
- require './lib/watir-common.rb'
4
-
5
- Hoe.new('commonwatir', WatirCommon::VERSION) do |p|
6
- p.rubyforge_name = 'wtr'
7
- p.developer('Bret Pettichord', 'bret@watircraft.com')
8
- p.extra_deps << 'user-choices'
9
- end
1
+ require 'rubygems'
2
+ require 'hoe'
3
+ require './lib/commonwatir.rb'
4
+
5
+ Hoe.spec 'commonwatir' do
6
+ self.version = CommonWatir::VERSION
7
+ self.rubyforge_name = 'wtr'
8
+ self.developer('Bret Pettichord', 'bret@pettichord.com')
9
+ self.extra_deps << ['user-choices', '>= 0']
10
+ self.url = 'http://www.watir.com'
11
+ end
@@ -0,0 +1,3 @@
1
+ class CommonWatir
2
+ VERSION = '1.6.5'
3
+ end
@@ -1,44 +1,44 @@
1
- require 'test/unit/assertions'
2
-
3
- module Watir
4
- # Verification methods
5
- module Assertions
6
- include Test::Unit::Assertions
7
-
8
- # Log a failure if the boolean is true. The message is the failure
9
- # message logged.
10
- # Whether true or false, the assertion count is incremented.
11
- def verify boolean, message = 'verify failed.'
12
- add_assertion
13
- add_failure message.to_s, caller unless boolean
14
- end
15
-
16
- def verify_equal expected, actual, message=nil
17
- full_message = build_message(message, <<EOT, expected, actual)
18
- <?> expected but was
19
- <?>.
20
- EOT
21
- verify(expected == actual, full_message)
22
- end
23
- def verify_match pattern, string, message=nil
24
- pattern = case(pattern)
25
- when String
26
- Regexp.new(Regexp.escape(pattern))
27
- else
28
- pattern
29
- end
30
- full_message = build_message(message, "<?> expected to be =~\n<?>.", string, pattern)
31
- verify(string =~ pattern, full_message)
32
- end
33
-
34
- end
35
-
36
- end
37
- module Test::Unit::Assertions
38
- def assert_false(boolean, message=nil)
39
- _wrap_assertion do
40
- assert_block("assert should not be called with a block.") { !block_given? }
41
- assert_block(build_message(message, "<?> is not false.", boolean)) { !boolean }
42
- end
43
- end
44
- end
1
+ require 'test/unit/assertions'
2
+
3
+ module Watir
4
+ # Verification methods
5
+ module Assertions
6
+ include Test::Unit::Assertions
7
+
8
+ # Log a failure if the boolean is true. The message is the failure
9
+ # message logged.
10
+ # Whether true or false, the assertion count is incremented.
11
+ def verify boolean, message = 'verify failed.'
12
+ add_assertion
13
+ add_failure message.to_s, caller unless boolean
14
+ end
15
+
16
+ def verify_equal expected, actual, message=nil
17
+ full_message = build_message(message, <<EOT, expected, actual)
18
+ <?> expected but was
19
+ <?>.
20
+ EOT
21
+ verify(expected == actual, full_message)
22
+ end
23
+ def verify_match pattern, string, message=nil
24
+ pattern = case(pattern)
25
+ when String
26
+ Regexp.new(Regexp.escape(pattern))
27
+ else
28
+ pattern
29
+ end
30
+ full_message = build_message(message, "<?> expected to be =~\n<?>.", string, pattern)
31
+ verify(string =~ pattern, full_message)
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ module Test::Unit::Assertions
38
+ def assert_false(boolean, message=nil)
39
+ _wrap_assertion do
40
+ assert_block("assert should not be called with a block.") { !block_given? }
41
+ assert_block(build_message(message, "<?> is not false.", boolean)) { !boolean }
42
+ end
43
+ end
44
+ end
data/lib/watir/browser.rb CHANGED
@@ -1,130 +1,149 @@
1
- # watir/browser
2
- require 'watir/options'
3
- module Watir
4
-
5
- =begin rdoc
6
-
7
- Watir is a family of open-source drivers for automating web browsers. You
8
- can use it to write tests that are easy to read and maintain.
9
-
10
- Watir drives browsers the same way people do. It clicks links, fills in forms,
11
- presses buttons. Watir also checks results, such as whether expected text
12
- appears on a page.
13
-
14
- The Watir family currently includes support for Internet Explorer (on Windows),
15
- Firefox (on Windows, Mac and Linux) and Safari (on Mac).
16
-
17
- Project Homepage: http://wtr.rubyforge.org
18
-
19
- This Browser module provides a generic interface
20
- that tests can use to access any browser. The actual browser (and thus
21
- the actual Watir driver) is determined at runtime based on configuration
22
- settings.
23
-
24
- require 'watir'
25
- browser = Watir::Browser.new
26
- browser.goto 'http://google.com'
27
- browser.text_field(:name, 'q').set 'pickaxe'
28
- browser.button(:name, 'btnG').click
29
- if browser.text.include? 'Programming Ruby'
30
- puts 'Text was found'
31
- else
32
- puts 'Text was not found'
33
- end
34
-
35
- A comprehensive summary of the Watir API can be found here
36
- http://wiki.openqa.org/display/WTR/Methods+supported+by+Element
37
-
38
- There are two ways to configure the browser that will be used by your tests.
39
-
40
- One is to set the +watir_browser+ environment variable to +ie+ or +firefox+.
41
- (How you do this depends on your platform.)
42
-
43
- The other is to create a file that looks like this.
44
-
45
- browser: ie
46
-
47
- And then to add this line to your script, after the require statement and
48
- before you invoke Browser.new.
49
-
50
- Watir.options_file = 'path/to/the/file/you/just/created'
51
-
52
- =end rdoc
53
-
54
- module Browser
55
- @@browser_classes = {}
56
- @@sub_options = {}
57
- @@default = nil
58
- class << self
59
-
60
- # Create a new instance of a browser driver, as determined by the
61
- # configuration settings. (Don't be fooled: this is not actually
62
- # an instance of Browser class.)
63
- def new
64
- set_sub_options
65
- klass.new
66
- end
67
- # Create a new instance as with #new and start the browser on the
68
- # specified url.
69
- def start url
70
- set_sub_options
71
- klass.start url
72
- end
73
- def klass
74
- key = Watir.options[:browser]
75
- eval @@browser_classes[key] # this triggers the autoload
76
- end
77
- private :klass
78
- # Add support for the browser option, using the specified class,
79
- # provided as a string. Optionally, additional options supported by
80
- # the class can be specified as an array of symbols. Options specified
81
- # by the user and included in this list will be passed (as a hash) to
82
- # the set_options class method (if defined) before creating an instance.
83
- def support hash_args
84
- option = hash_args[:name]
85
- class_string = hash_args[:class]
86
- additional_options = hash_args[:options]
87
- library = hash_args[:library]
88
- gem = hash_args[:gem] || library
89
-
90
- @@browser_classes[option] = class_string
91
- @@sub_options[option] = additional_options
92
-
93
- autoload class_string, library
94
- activate_gem gem, option
95
- end
96
- def autoload class_string, library
97
- mod, klass = class_string.split('::')
98
- eval "module ::#{mod}; autoload :#{klass}, '#{library}'; end"
99
- end
100
- # Activate the gem (if installed). The default browser will be set
101
- # to the first gem that activates.
102
- def activate_gem gem_name, option
103
- begin
104
- gem gem_name
105
- @@default ||= option
106
- rescue Gem::LoadError
107
- end
108
- end
109
- def default
110
- @@default
111
- end
112
- # Specifies a default browser. Must be specified before options are parsed.
113
- def default= option
114
- @@default = option
115
- end
116
- def options
117
- @@browser_classes.keys
118
- end
119
- def set_sub_options
120
- return unless defined?(klass.set_options)
121
- sub_options = @@sub_options[Watir.options[:browser]]
122
- specified_options = Watir.options.reject {|k, v| !sub_options.include? k}
123
- klass.set_options specified_options
124
- end
125
- end
126
- end
127
-
128
- end
129
-
130
- require 'watir/browsers'
1
+ # watir/browser
2
+ require 'watir/options'
3
+ module Watir
4
+
5
+ =begin rdoc
6
+
7
+ Watir is a family of open-source drivers for automating web browsers. You
8
+ can use it to write tests that are easy to read and maintain.
9
+
10
+ Watir drives browsers the same way people do. It clicks links, fills in forms,
11
+ presses buttons. Watir also checks results, such as whether expected text
12
+ appears on a page.
13
+
14
+ The Watir family currently includes support for Internet Explorer (on Windows),
15
+ Firefox (on Windows, Mac and Linux) and Safari (on Mac).
16
+
17
+ Project Homepage: http://wtr.rubyforge.org
18
+
19
+ This Browser module provides a generic interface
20
+ that tests can use to access any browser. The actual browser (and thus
21
+ the actual Watir driver) is determined at runtime based on configuration
22
+ settings.
23
+
24
+ require 'watir'
25
+ browser = Watir::Browser.new
26
+ browser.goto 'http://google.com'
27
+ browser.text_field(:name, 'q').set 'pickaxe'
28
+ browser.button(:name, 'btnG').click
29
+ if browser.text.include? 'Programming Ruby'
30
+ puts 'Text was found'
31
+ else
32
+ puts 'Text was not found'
33
+ end
34
+
35
+ A comprehensive summary of the Watir API can be found here
36
+ http://wiki.openqa.org/display/WTR/Methods+supported+by+Element
37
+
38
+ There are two ways to configure the browser that will be used by your tests.
39
+
40
+ One is to set the +watir_browser+ environment variable to +ie+ or +firefox+.
41
+ (How you do this depends on your platform.)
42
+
43
+ The other is to create a file that looks like this.
44
+
45
+ browser: ie
46
+
47
+ And then to add this line to your script, after the require statement and
48
+ before you invoke Browser.new.
49
+
50
+ Watir.options_file = 'path/to/the/file/you/just/created'
51
+
52
+ =end rdoc
53
+
54
+ module Browser
55
+ @@browser_classes = {}
56
+ @@sub_options = {}
57
+ @@default = nil
58
+ class << self
59
+
60
+ # Create a new instance of a browser driver, as determined by the
61
+ # configuration settings. (Don't be fooled: this is not actually
62
+ # an instance of Browser class.)
63
+ def new
64
+ set_sub_options
65
+ klass.new
66
+ end
67
+ # Create a new instance as with #new and start the browser on the
68
+ # specified url.
69
+ def start url
70
+ set_sub_options
71
+ klass.start url
72
+ end
73
+ # Attach to an existing browser.
74
+ def attach(how, what)
75
+ set_sub_options
76
+ klass.attach(how, what)
77
+ end
78
+ def set_options options
79
+ return unless defined?(klass.set_options)
80
+ klass.set_options options
81
+ end
82
+ def options
83
+ return {} unless defined?(klass.options)
84
+ klass.options
85
+ end
86
+
87
+ def klass
88
+ key = Watir.options[:browser]
89
+ eval @@browser_classes[key] # this triggers the autoload
90
+ end
91
+ private :klass
92
+ # Add support for the browser option, using the specified class,
93
+ # provided as a string. Optionally, additional options supported by
94
+ # the class can be specified as an array of symbols. Options specified
95
+ # by the user and included in this list will be passed (as a hash) to
96
+ # the set_options class method (if defined) before creating an instance.
97
+ def support hash_args
98
+ option = hash_args[:name]
99
+ class_string = hash_args[:class]
100
+ additional_options = hash_args[:options]
101
+ library = hash_args[:library]
102
+ gem = hash_args[:gem] || library
103
+
104
+ @@browser_classes[option] = class_string
105
+ @@sub_options[option] = additional_options
106
+
107
+ autoload class_string, library
108
+ activate_gem gem, option
109
+ end
110
+
111
+ def default
112
+ @@default
113
+ end
114
+ # Specifies a default browser. Must be specified before options are parsed.
115
+ def default= option
116
+ @@default = option
117
+ end
118
+ # Returns the names of the browsers that are supported by this module.
119
+ # These are the options for 'watir_browser' (env var) or 'browser:' (yaml).
120
+ def browser_names
121
+ @@browser_classes.keys
122
+ end
123
+
124
+ private
125
+ def autoload class_string, library
126
+ mod, klass = class_string.split('::')
127
+ eval "module ::#{mod}; autoload :#{klass}, '#{library}'; end"
128
+ end
129
+ # Activate the gem (if installed). The default browser will be set
130
+ # to the first gem that activates.
131
+ def activate_gem gem_name, option
132
+ begin
133
+ gem gem_name
134
+ @@default ||= option
135
+ rescue Gem::LoadError
136
+ end
137
+ end
138
+ def set_sub_options
139
+ sub_options = @@sub_options[Watir.options[:browser]]
140
+ return if sub_options.nil?
141
+ specified_options = Watir.options.reject {|k, v| !sub_options.include? k}
142
+ self.set_options specified_options
143
+ end
144
+ end
145
+ end
146
+
147
+ end
148
+
149
+ require 'watir/browsers'
@@ -1,12 +1,12 @@
1
- # watir/browsers
2
- # Define browsers supported by Watir
3
-
4
- Watir::Browser.support :name => 'ie', :class => 'Watir::IE',
5
- :library => 'watir/ie', :gem => 'watir',
6
- :options => [:speed, :visible]
7
-
8
- Watir::Browser.support :name => 'firefox', :class => 'FireWatir::Firefox',
9
- :library => 'firewatir'
10
-
11
- Watir::Browser.support :name => 'safari', :class => 'Watir::Safari',
12
- :library => 'safariwatir'
1
+ # watir/browsers
2
+ # Define browsers supported by Watir
3
+
4
+ Watir::Browser.support :name => 'ie', :class => 'Watir::IE',
5
+ :library => 'watir/ie', :gem => 'watir',
6
+ :options => [:speed, :visible]
7
+
8
+ Watir::Browser.support :name => 'firefox', :class => 'FireWatir::Firefox',
9
+ :library => 'firewatir'
10
+
11
+ Watir::Browser.support :name => 'safari', :class => 'Watir::Safari',
12
+ :library => 'safariwatir'
@@ -1,48 +1,48 @@
1
- module Watir
2
- module Exception
3
-
4
- # Root class for all Watir Exceptions
5
- class WatirException < RuntimeError
6
- def initialize(message="")
7
- super(message)
8
- end
9
- end
10
-
11
- # This exception is thrown if an attempt is made to access an object that doesn't exist
12
- class UnknownObjectException < WatirException; end
13
- # This exception is thrown if an attempt is made to access an object that is in a disabled state
14
- class ObjectDisabledException < WatirException; end
15
- # This exception is thrown if an attempt is made to access a frame that cannot be found
16
- class UnknownFrameException< WatirException; end
17
- # This exception is thrown if an attempt is made to access a form that cannot be found
18
- class UnknownFormException< WatirException; end
19
- # This exception is thrown if an attempt is made to access an object that is in a read only state
20
- class ObjectReadOnlyException < WatirException; end
21
- # This exception is thrown if an attempt is made to access an object when the specified value cannot be found
22
- class NoValueFoundException < WatirException; end
23
- # This exception gets raised if part of finding an object is missing
24
- class MissingWayOfFindingObjectException < WatirException; end
25
- # this exception is raised if an attempt is made to access a table cell that doesnt exist
26
- class UnknownCellException < WatirException; end
27
- # This exception is thrown if the window cannot be found
28
- class NoMatchingWindowFoundException < WatirException; end
29
- # This exception is thrown if an attemp is made to acces the status bar of the browser when it doesnt exist
30
- class NoStatusBarException < WatirException; end
31
- # This exception is thrown if an http error, such as a 404, 500 etc is encountered while navigating
32
- class NavigationException < WatirException; end
33
- # This exception is raised if a timeout is exceeded
34
- class TimeOutException < WatirException
35
- def initialize(duration, timeout)
36
- @duration, @timeout = duration, timeout
37
- end
38
- attr_reader :duration, :timeout
39
- end
40
-
41
- # Return an error message for when unable to locate the element
42
- def self.message_for_unable_to_locate(how, what)
43
- result = "using #{how.inspect}"
44
- result << ", #{what.inspect}" if what
45
- "Unable to locate element, #{result}"
46
- end
47
- end
1
+ module Watir
2
+ module Exception
3
+
4
+ # Root class for all Watir Exceptions
5
+ class WatirException < RuntimeError
6
+ def initialize(message="")
7
+ super(message)
8
+ end
9
+ end
10
+
11
+ # This exception is thrown if an attempt is made to access an object that doesn't exist
12
+ class UnknownObjectException < WatirException; end
13
+ # This exception is thrown if an attempt is made to access an object that is in a disabled state
14
+ class ObjectDisabledException < WatirException; end
15
+ # This exception is thrown if an attempt is made to access a frame that cannot be found
16
+ class UnknownFrameException< WatirException; end
17
+ # This exception is thrown if an attempt is made to access a form that cannot be found
18
+ class UnknownFormException< WatirException; end
19
+ # This exception is thrown if an attempt is made to access an object that is in a read only state
20
+ class ObjectReadOnlyException < WatirException; end
21
+ # This exception is thrown if an attempt is made to access an object when the specified value cannot be found
22
+ class NoValueFoundException < WatirException; end
23
+ # This exception gets raised if part of finding an object is missing
24
+ class MissingWayOfFindingObjectException < WatirException; end
25
+ # this exception is raised if an attempt is made to access a table cell that doesnt exist
26
+ class UnknownCellException < WatirException; end
27
+ # This exception is thrown if the window cannot be found
28
+ class NoMatchingWindowFoundException < WatirException; end
29
+ # This exception is thrown if an attemp is made to acces the status bar of the browser when it doesnt exist
30
+ class NoStatusBarException < WatirException; end
31
+ # This exception is thrown if an http error, such as a 404, 500 etc is encountered while navigating
32
+ class NavigationException < WatirException; end
33
+ # This exception is raised if a timeout is exceeded
34
+ class TimeOutException < WatirException
35
+ def initialize(duration, timeout)
36
+ @duration, @timeout = duration, timeout
37
+ end
38
+ attr_reader :duration, :timeout
39
+ end
40
+
41
+ # Return an error message for when unable to locate the element
42
+ def self.message_for_unable_to_locate(how, what)
43
+ result = "using #{how.inspect}"
44
+ result << ", #{what.inspect}" if what
45
+ "Unable to locate element, #{result}"
46
+ end
47
+ end
48
48
  end
data/lib/watir/matches.rb CHANGED
@@ -1,17 +1,17 @@
1
- class String
2
- def matches(x)
3
- return self == x
4
- end
5
- end
6
-
7
- class Regexp
8
- def matches(x)
9
- return self.match(x)
10
- end
11
- end
12
-
13
- class Integer
14
- def matches(x)
15
- return self == x
16
- end
17
- end
1
+ class String
2
+ def matches(x)
3
+ return self == x
4
+ end
5
+ end
6
+
7
+ class Regexp
8
+ def matches(x)
9
+ return self.match(x)
10
+ end
11
+ end
12
+
13
+ class Integer
14
+ def matches(x)
15
+ return self == x
16
+ end
17
+ end
data/lib/watir/options.rb CHANGED
@@ -1,51 +1,52 @@
1
- # watir/options
2
-
3
- require 'user-choices'
4
-
5
- module Watir
6
- @@options_file = nil
7
- @@options = nil
8
- class << self
9
- # Specify the location of a yaml file containing Watir options. Must be
10
- # specified before the options are parsed.
11
- def options_file= file
12
- @@options_file = file
13
- end
14
- def options_file
15
- @@options_file
16
- end
17
- def options= x
18
- @@options = x
19
- end
20
- # Return the Watir options, as a hash. If they haven't been parsed yet,
21
- # they will be now.
22
- def options
23
- @@options ||= Watir::Options.new.execute
24
- end
25
- end
26
-
27
- class Options < UserChoices::Command
28
- include UserChoices
29
- def add_sources builder
30
- builder.add_source EnvironmentSource, :with_prefix, 'watir_'
31
- if Watir.options_file
32
- builder.add_source YamlConfigFileSource, :from_complete_path,
33
- Watir.options_file
34
- end
35
- end
36
- def add_choices builder
37
- builder.add_choice :browser,
38
- :type => Watir::Browser.options,
39
- :default => Watir::Browser.default
40
- builder.add_choice :speed,
41
- :type => ['slow', 'fast', 'zippy'],
42
- :default => 'fast'
43
- builder.add_choice :visible,
44
- :type => :boolean
45
- end
46
- def execute
47
- @user_choices[:speed] = @user_choices[:speed].to_sym
48
- @user_choices
49
- end
50
- end
51
- end
1
+ # watir/options
2
+ require 'rubygems'
3
+
4
+ require 'user-choices'
5
+
6
+ module Watir
7
+ @@options_file = nil
8
+ @@options = nil
9
+ class << self
10
+ # Specify the location of a yaml file containing Watir options. Must be
11
+ # specified before the options are parsed.
12
+ def options_file= file
13
+ @@options_file = file
14
+ end
15
+ def options_file
16
+ @@options_file
17
+ end
18
+ def options= x
19
+ @@options = x
20
+ end
21
+ # Return the Watir options, as a hash. If they haven't been parsed yet,
22
+ # they will be now.
23
+ def options
24
+ @@options ||= Watir::Options.new.execute
25
+ end
26
+ end
27
+
28
+ class Options < UserChoices::Command
29
+ include UserChoices
30
+ def add_sources builder
31
+ builder.add_source EnvironmentSource, :with_prefix, 'watir_'
32
+ if Watir.options_file
33
+ builder.add_source YamlConfigFileSource, :from_complete_path,
34
+ Watir.options_file
35
+ end
36
+ end
37
+ def add_choices builder
38
+ builder.add_choice :browser,
39
+ :type => Watir::Browser.browser_names,
40
+ :default => Watir::Browser.default
41
+ builder.add_choice :speed,
42
+ :type => ['slow', 'fast', 'zippy'],
43
+ :default => 'fast'
44
+ builder.add_choice :visible,
45
+ :type => :boolean
46
+ end
47
+ def execute
48
+ @user_choices[:speed] = @user_choices[:speed].to_sym
49
+ @user_choices
50
+ end
51
+ end
52
+ end
@@ -1,58 +1,58 @@
1
- require 'test/unit'
2
- require 'watir/assertions'
3
-
4
- module Watir
5
-
6
- class TestCase < Test::Unit::TestCase
7
- include Watir::Assertions
8
- @@order = :sequentially
9
- def initialize name
10
- throw :invalid_test if name == :default_test && self.class == Watir::TestCase
11
- super
12
- end
13
- class << self
14
- attr_accessor :test_methods, :order
15
- def test_methods
16
- @test_methods ||= []
17
- end
18
- def order
19
- @order || @@order
20
- end
21
- def default_order= order
22
- @@order = order
23
- end
24
- def sorted_test_methods
25
- case order
26
- when :alphabetically then test_methods.sort
27
- when :sequentially then test_methods
28
- when :reversed_sequentially then test_methods.reverse
29
- when :reversed_alphabetically then test_methods.sort.reverse
30
- else raise ArgumentError, "Execute option not supported: #{@order}"
31
- end
32
- end
33
- def suite
34
- suite = Test::Unit::TestSuite.new(name)
35
- sorted_test_methods.each do |test|
36
- catch :invalid_test do
37
- suite << new(test)
38
- end
39
- end
40
- if (suite.empty?)
41
- catch :invalid_test do
42
- suite << new(:default_test)
43
- end
44
- end
45
- return suite
46
- end
47
- def method_added id
48
- name = id.id2name
49
- test_methods << name if name =~ /^test./
50
- end
51
- def execute order
52
- @order = order
53
- end
54
- end
55
- public :add_assertion
56
- end
57
-
58
- end
1
+ require 'test/unit'
2
+ require 'watir/assertions'
3
+
4
+ module Watir
5
+
6
+ class TestCase < Test::Unit::TestCase
7
+ include Watir::Assertions
8
+ @@order = :sequentially
9
+ def initialize name
10
+ throw :invalid_test if name == :default_test && self.class == Watir::TestCase
11
+ super
12
+ end
13
+ class << self
14
+ attr_accessor :test_methods, :order
15
+ def test_methods
16
+ @test_methods ||= []
17
+ end
18
+ def order
19
+ @order || @@order
20
+ end
21
+ def default_order= order
22
+ @@order = order
23
+ end
24
+ def sorted_test_methods
25
+ case order
26
+ when :alphabetically then test_methods.sort
27
+ when :sequentially then test_methods
28
+ when :reversed_sequentially then test_methods.reverse
29
+ when :reversed_alphabetically then test_methods.sort.reverse
30
+ else raise ArgumentError, "Execute option not supported: #{@order}"
31
+ end
32
+ end
33
+ def suite
34
+ suite = Test::Unit::TestSuite.new(name)
35
+ sorted_test_methods.each do |test|
36
+ catch :invalid_test do
37
+ suite << new(test)
38
+ end
39
+ end
40
+ if (suite.empty?)
41
+ catch :invalid_test do
42
+ suite << new(:default_test)
43
+ end
44
+ end
45
+ return suite
46
+ end
47
+ def method_added id
48
+ name = id.id2name
49
+ test_methods << name if name =~ /^test./
50
+ end
51
+ def execute order
52
+ @order = order
53
+ end
54
+ end
55
+ public :add_assertion
56
+ end
57
+
58
+ end
data/lib/watir/waiter.rb CHANGED
@@ -1,92 +1,92 @@
1
- require 'watir/exceptions'
2
-
3
- module Watir
4
-
5
- def wait_until(*args)
6
- Waiter.wait_until(*args) {yield}
7
- end
8
-
9
- class TimeKeeper
10
- attr_reader :sleep_time
11
- def initialize
12
- @sleep_time = 0.0
13
- end
14
- def sleep seconds
15
- @sleep_time += Kernel.sleep seconds
16
- end
17
- def now
18
- Time.now
19
- end
20
- end
21
-
22
- class Waiter
23
- # This is an interface to a TimeKeeper which proxies
24
- # calls to "sleep" and "Time.now".
25
- # Useful for unit testing Waiter.
26
- attr_accessor :timer
27
-
28
- # How long to wait between each iteration through the wait_until
29
- # loop. In seconds.
30
- attr_accessor :polling_interval
31
-
32
- # Timeout for wait_until.
33
- attr_accessor :timeout
34
-
35
- @@default_polling_interval = 0.5
36
- @@default_timeout = 60.0
37
-
38
- def initialize(timeout=@@default_timeout,
39
- polling_interval=@@default_polling_interval)
40
- @timeout = timeout
41
- @polling_interval = polling_interval
42
- @timer = TimeKeeper.new
43
- end
44
-
45
- # Execute the provided block until either (1) it returns true, or
46
- # (2) the timeout (in seconds) has been reached. If the timeout is reached,
47
- # a TimeOutException will be raised. The block will always
48
- # execute at least once.
49
- #
50
- # waiter = Waiter.new(5)
51
- # waiter.wait_until {puts 'hello'}
52
- #
53
- # This code will print out "hello" for five seconds, and then raise a
54
- # Watir::TimeOutException.
55
- def wait_until # block
56
- start_time = now
57
- until yield do
58
- if (duration = now - start_time) > @timeout
59
- raise Watir::Exception::TimeOutException.new(duration, @timeout),
60
- "Timed out after #{duration} seconds."
61
- end
62
- sleep @polling_interval
63
- end
64
- end
65
-
66
- # Execute the provided block until either (1) it returns true, or
67
- # (2) the timeout (in seconds) has been reached. If the timeout is reached,
68
- # a TimeOutException will be raised. The block will always
69
- # execute at least once.
70
- #
71
- # Waiter.wait_until(5) {puts 'hello'}
72
- #
73
- # This code will print out "hello" for five seconds, and then raise a
74
- # Watir::TimeOutException.
75
-
76
- # IDEA: wait_until: remove defaults from Waiter.wait_until
77
- def self.wait_until(timeout=@@default_timeout,
78
- polling_interval=@@default_polling_interval)
79
- waiter = new(timeout, polling_interval)
80
- waiter.wait_until { yield }
81
- end
82
-
83
- private
84
- def sleep seconds
85
- @timer.sleep seconds
86
- end
87
- def now
88
- @timer.now
89
- end
90
- end
91
-
1
+ require 'watir/exceptions'
2
+
3
+ module Watir
4
+
5
+ def wait_until(*args)
6
+ Waiter.wait_until(*args) {yield}
7
+ end
8
+
9
+ class TimeKeeper
10
+ attr_reader :sleep_time
11
+ def initialize
12
+ @sleep_time = 0.0
13
+ end
14
+ def sleep seconds
15
+ @sleep_time += Kernel.sleep seconds
16
+ end
17
+ def now
18
+ Time.now
19
+ end
20
+ end
21
+
22
+ class Waiter
23
+ # This is an interface to a TimeKeeper which proxies
24
+ # calls to "sleep" and "Time.now".
25
+ # Useful for unit testing Waiter.
26
+ attr_accessor :timer
27
+
28
+ # How long to wait between each iteration through the wait_until
29
+ # loop. In seconds.
30
+ attr_accessor :polling_interval
31
+
32
+ # Timeout for wait_until.
33
+ attr_accessor :timeout
34
+
35
+ @@default_polling_interval = 0.5
36
+ @@default_timeout = 60.0
37
+
38
+ def initialize(timeout=@@default_timeout,
39
+ polling_interval=@@default_polling_interval)
40
+ @timeout = timeout
41
+ @polling_interval = polling_interval
42
+ @timer = TimeKeeper.new
43
+ end
44
+
45
+ # Execute the provided block until either (1) it returns true, or
46
+ # (2) the timeout (in seconds) has been reached. If the timeout is reached,
47
+ # a TimeOutException will be raised. The block will always
48
+ # execute at least once.
49
+ #
50
+ # waiter = Waiter.new(5)
51
+ # waiter.wait_until {puts 'hello'}
52
+ #
53
+ # This code will print out "hello" for five seconds, and then raise a
54
+ # Watir::TimeOutException.
55
+ def wait_until # block
56
+ start_time = now
57
+ until yield do
58
+ if (duration = now - start_time) > @timeout
59
+ raise Watir::Exception::TimeOutException.new(duration, @timeout),
60
+ "Timed out after #{duration} seconds."
61
+ end
62
+ sleep @polling_interval
63
+ end
64
+ end
65
+
66
+ # Execute the provided block until either (1) it returns true, or
67
+ # (2) the timeout (in seconds) has been reached. If the timeout is reached,
68
+ # a TimeOutException will be raised. The block will always
69
+ # execute at least once.
70
+ #
71
+ # Waiter.wait_until(5) {puts 'hello'}
72
+ #
73
+ # This code will print out "hello" for five seconds, and then raise a
74
+ # Watir::TimeOutException.
75
+
76
+ # IDEA: wait_until: remove defaults from Waiter.wait_until
77
+ def self.wait_until(timeout=@@default_timeout,
78
+ polling_interval=@@default_polling_interval)
79
+ waiter = new(timeout, polling_interval)
80
+ waiter.wait_until { yield }
81
+ end
82
+
83
+ private
84
+ def sleep seconds
85
+ @timer.sleep seconds
86
+ end
87
+ def now
88
+ @timer.now
89
+ end
90
+ end
91
+
92
92
  end # module
data/lib/watir.rb CHANGED
@@ -1,6 +1,6 @@
1
- # The 'watir' library loads the common watir code, common to all watir
2
- # implementations. The 'watir/browser' library will autoload the actual
3
- # implementations.
4
-
5
- require 'watir/waiter'
6
- require 'watir/browser'
1
+ # The 'watir' library loads the common watir code, common to all watir
2
+ # implementations. The 'watir/browser' library will autoload the actual
3
+ # implementations.
4
+
5
+ require 'watir/waiter'
6
+ require 'watir/browser'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commonwatir
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bret Pettichord
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-06 00:00:00 +00:00
12
+ date: 2009-11-10 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,11 +30,11 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.7.0
33
+ version: 2.3.3
34
34
  version:
35
35
  description: Common code used by Watir and FireWatir
36
36
  email:
37
- - bret@watircraft.com
37
+ - bret@pettichord.com
38
38
  executables: []
39
39
 
40
40
  extensions: []
@@ -49,7 +49,7 @@ files:
49
49
  - README.txt
50
50
  - Rakefile
51
51
  - lib/watir.rb
52
- - lib/watir-common.rb
52
+ - lib/commonwatir.rb
53
53
  - lib/watir/assertions.rb
54
54
  - lib/watir/browser.rb
55
55
  - lib/watir/browsers.rb
@@ -59,7 +59,9 @@ files:
59
59
  - lib/watir/testcase.rb
60
60
  - lib/watir/waiter.rb
61
61
  has_rdoc: true
62
- homepage: FIX (url)
62
+ homepage: http://www.watir.com
63
+ licenses: []
64
+
63
65
  post_install_message:
64
66
  rdoc_options:
65
67
  - --main
@@ -81,9 +83,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
83
  requirements: []
82
84
 
83
85
  rubyforge_project: wtr
84
- rubygems_version: 1.2.0
86
+ rubygems_version: 1.3.5
85
87
  signing_key:
86
- specification_version: 2
88
+ specification_version: 3
87
89
  summary: Common code used by Watir and FireWatir
88
90
  test_files: []
89
91
 
data/lib/watir-common.rb DELETED
@@ -1,3 +0,0 @@
1
- class WatirCommon
2
- VERSION = '1.6.2'
3
- end