commonwatir 1.6.2 → 1.6.5
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/History.txt +5 -5
- data/Manifest.txt +14 -14
- data/README.txt +48 -48
- data/Rakefile +11 -9
- data/lib/commonwatir.rb +3 -0
- data/lib/watir/assertions.rb +44 -44
- data/lib/watir/browser.rb +149 -130
- data/lib/watir/browsers.rb +12 -12
- data/lib/watir/exceptions.rb +47 -47
- data/lib/watir/matches.rb +17 -17
- data/lib/watir/options.rb +52 -51
- data/lib/watir/testcase.rb +58 -58
- data/lib/watir/waiter.rb +91 -91
- data/lib/watir.rb +6 -6
- metadata +10 -8
- data/lib/watir-common.rb +0 -3
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/
|
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
|
-
=
|
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
|
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/
|
4
|
-
|
5
|
-
Hoe.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
data/lib/commonwatir.rb
ADDED
data/lib/watir/assertions.rb
CHANGED
@@ -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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
end
|
129
|
-
|
130
|
-
|
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'
|
data/lib/watir/browsers.rb
CHANGED
@@ -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'
|
data/lib/watir/exceptions.rb
CHANGED
@@ -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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
@@
|
8
|
-
|
9
|
-
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# they
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
:
|
39
|
-
:
|
40
|
-
|
41
|
-
:
|
42
|
-
:
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
@user_choices
|
49
|
-
|
50
|
-
|
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
|
data/lib/watir/testcase.rb
CHANGED
@@ -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.
|
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:
|
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:
|
33
|
+
version: 2.3.3
|
34
34
|
version:
|
35
35
|
description: Common code used by Watir and FireWatir
|
36
36
|
email:
|
37
|
-
- bret@
|
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/
|
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:
|
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.
|
86
|
+
rubygems_version: 1.3.5
|
85
87
|
signing_key:
|
86
|
-
specification_version:
|
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