cavalle-webrat 0.4.4.1

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.
Files changed (76) hide show
  1. data/History.txt +325 -0
  2. data/MIT-LICENSE.txt +19 -0
  3. data/README.rdoc +85 -0
  4. data/Rakefile +162 -0
  5. data/install.rb +1 -0
  6. data/lib/webrat/core/configuration.rb +98 -0
  7. data/lib/webrat/core/elements/area.rb +31 -0
  8. data/lib/webrat/core/elements/element.rb +33 -0
  9. data/lib/webrat/core/elements/field.rb +403 -0
  10. data/lib/webrat/core/elements/form.rb +103 -0
  11. data/lib/webrat/core/elements/label.rb +31 -0
  12. data/lib/webrat/core/elements/link.rb +92 -0
  13. data/lib/webrat/core/elements/select_option.rb +35 -0
  14. data/lib/webrat/core/locators/area_locator.rb +38 -0
  15. data/lib/webrat/core/locators/button_locator.rb +54 -0
  16. data/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
  17. data/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
  18. data/lib/webrat/core/locators/field_locator.rb +25 -0
  19. data/lib/webrat/core/locators/field_named_locator.rb +41 -0
  20. data/lib/webrat/core/locators/form_locator.rb +19 -0
  21. data/lib/webrat/core/locators/label_locator.rb +34 -0
  22. data/lib/webrat/core/locators/link_locator.rb +66 -0
  23. data/lib/webrat/core/locators/locator.rb +20 -0
  24. data/lib/webrat/core/locators/select_option_locator.rb +59 -0
  25. data/lib/webrat/core/locators.rb +20 -0
  26. data/lib/webrat/core/logging.rb +21 -0
  27. data/lib/webrat/core/matchers/have_content.rb +73 -0
  28. data/lib/webrat/core/matchers/have_selector.rb +74 -0
  29. data/lib/webrat/core/matchers/have_tag.rb +21 -0
  30. data/lib/webrat/core/matchers/have_xpath.rb +149 -0
  31. data/lib/webrat/core/matchers.rb +4 -0
  32. data/lib/webrat/core/methods.rb +61 -0
  33. data/lib/webrat/core/mime.rb +29 -0
  34. data/lib/webrat/core/save_and_open_page.rb +50 -0
  35. data/lib/webrat/core/scope.rb +350 -0
  36. data/lib/webrat/core/session.rb +281 -0
  37. data/lib/webrat/core/xml/hpricot.rb +19 -0
  38. data/lib/webrat/core/xml/nokogiri.rb +76 -0
  39. data/lib/webrat/core/xml/rexml.rb +24 -0
  40. data/lib/webrat/core/xml.rb +115 -0
  41. data/lib/webrat/core.rb +14 -0
  42. data/lib/webrat/core_extensions/blank.rb +58 -0
  43. data/lib/webrat/core_extensions/deprecate.rb +8 -0
  44. data/lib/webrat/core_extensions/detect_mapped.rb +12 -0
  45. data/lib/webrat/core_extensions/meta_class.rb +6 -0
  46. data/lib/webrat/core_extensions/nil_to_param.rb +5 -0
  47. data/lib/webrat/core_extensions/tcp_socket.rb +27 -0
  48. data/lib/webrat/mechanize.rb +74 -0
  49. data/lib/webrat/merb.rb +9 -0
  50. data/lib/webrat/merb_session.rb +65 -0
  51. data/lib/webrat/rack.rb +24 -0
  52. data/lib/webrat/rails.rb +105 -0
  53. data/lib/webrat/rspec-rails.rb +13 -0
  54. data/lib/webrat/selenium/application_server.rb +71 -0
  55. data/lib/webrat/selenium/location_strategy_javascript/button.js +12 -0
  56. data/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
  57. data/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
  58. data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +9 -0
  59. data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
  60. data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
  61. data/lib/webrat/selenium/matchers/have_content.rb +66 -0
  62. data/lib/webrat/selenium/matchers/have_selector.rb +49 -0
  63. data/lib/webrat/selenium/matchers/have_tag.rb +72 -0
  64. data/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
  65. data/lib/webrat/selenium/matchers.rb +4 -0
  66. data/lib/webrat/selenium/merb_application_server.rb +48 -0
  67. data/lib/webrat/selenium/rails_application_server.rb +42 -0
  68. data/lib/webrat/selenium/selenium_extensions.js +6 -0
  69. data/lib/webrat/selenium/selenium_rc_server.rb +80 -0
  70. data/lib/webrat/selenium/selenium_session.rb +241 -0
  71. data/lib/webrat/selenium/sinatra_application_server.rb +35 -0
  72. data/lib/webrat/selenium.rb +80 -0
  73. data/lib/webrat/sinatra.rb +44 -0
  74. data/lib/webrat.rb +34 -0
  75. data/vendor/selenium-server.jar +0 -0
  76. metadata +147 -0
@@ -0,0 +1,241 @@
1
+ require "webrat/core/save_and_open_page"
2
+ require "webrat/selenium/selenium_rc_server"
3
+ require "webrat/selenium/application_server"
4
+
5
+ module Webrat
6
+ class TimeoutError < WebratError
7
+ end
8
+
9
+ class SeleniumResponse
10
+ attr_reader :body
11
+ attr_reader :session
12
+
13
+ def initialize(session, body)
14
+ @session = session
15
+ @body = body
16
+ end
17
+
18
+ def selenium
19
+ session.selenium
20
+ end
21
+ end
22
+
23
+ class SeleniumSession
24
+ include Webrat::SaveAndOpenPage
25
+
26
+ def initialize(*args) # :nodoc:
27
+ end
28
+
29
+ def simulate
30
+ end
31
+
32
+ def automate
33
+ yield
34
+ end
35
+
36
+ def visit(url)
37
+ selenium.open(url)
38
+ end
39
+
40
+ webrat_deprecate :visits, :visit
41
+
42
+ def fill_in(field_identifier, options)
43
+ locator = "webrat=#{Regexp.escape(field_identifier)}"
44
+ selenium.wait_for_element locator, :timeout_in_seconds => 5
45
+ selenium.type(locator, "#{options[:with]}")
46
+ end
47
+
48
+ webrat_deprecate :fills_in, :fill_in
49
+
50
+ def response
51
+ SeleniumResponse.new(self, response_body)
52
+ end
53
+
54
+ def response_body #:nodoc:
55
+ selenium.get_html_source
56
+ end
57
+
58
+ def click_button(button_text_or_regexp = nil, options = {})
59
+ if button_text_or_regexp.is_a?(Hash) && options == {}
60
+ pattern, options = nil, button_text_or_regexp
61
+ elsif button_text_or_regexp
62
+ pattern = adjust_if_regexp(button_text_or_regexp)
63
+ end
64
+ pattern ||= '*'
65
+ locator = "button=#{pattern}"
66
+
67
+ selenium.wait_for_element locator, :timeout_in_seconds => 5
68
+ selenium.click locator
69
+ end
70
+
71
+ webrat_deprecate :clicks_button, :click_button
72
+
73
+ def click_link(link_text_or_regexp, options = {})
74
+ pattern = adjust_if_regexp(link_text_or_regexp)
75
+ locator = "webratlink=#{pattern}"
76
+ selenium.wait_for_element locator, :timeout_in_seconds => 5
77
+ selenium.click locator
78
+ end
79
+
80
+ webrat_deprecate :clicks_link, :click_link
81
+
82
+ def click_link_within(selector, link_text, options = {})
83
+ locator = "webratlinkwithin=#{selector}|#{link_text}"
84
+ selenium.wait_for_element locator, :timeout_in_seconds => 5
85
+ selenium.click locator
86
+ end
87
+
88
+ webrat_deprecate :clicks_link_within, :click_link_within
89
+
90
+ def select(option_text, options = {})
91
+ id_or_name_or_label = options[:from]
92
+
93
+ if id_or_name_or_label
94
+ select_locator = "webrat=#{id_or_name_or_label}"
95
+ else
96
+ select_locator = "webratselectwithoption=#{option_text}"
97
+ end
98
+
99
+ selenium.wait_for_element select_locator, :timeout_in_seconds => 5
100
+ selenium.select(select_locator, option_text)
101
+ end
102
+
103
+ webrat_deprecate :selects, :select
104
+
105
+ def choose(label_text)
106
+ locator = "webrat=#{label_text}"
107
+ selenium.wait_for_element locator, :timeout_in_seconds => 5
108
+ selenium.click locator
109
+ end
110
+
111
+ webrat_deprecate :chooses, :choose
112
+
113
+ def check(label_text)
114
+ locator = "webrat=#{label_text}"
115
+ selenium.wait_for_element locator, :timeout_in_seconds => 5
116
+ selenium.click locator
117
+ end
118
+ alias_method :uncheck, :check
119
+
120
+ webrat_deprecate :checks, :check
121
+
122
+ def fire_event(field_identifier, event)
123
+ locator = "webrat=#{Regexp.escape(field_identifier)}"
124
+ selenium.fire_event(locator, "#{event}")
125
+ end
126
+
127
+ def key_down(field_identifier, key_code)
128
+ locator = "webrat=#{Regexp.escape(field_identifier)}"
129
+ selenium.key_down(locator, key_code)
130
+ end
131
+
132
+ def key_up(field_identifier, key_code)
133
+ locator = "webrat=#{Regexp.escape(field_identifier)}"
134
+ selenium.key_up(locator, key_code)
135
+ end
136
+
137
+ def wait_for(params={})
138
+ timeout = params[:timeout] || 5
139
+ message = params[:message] || "Timeout exceeded"
140
+
141
+ begin_time = Time.now
142
+
143
+ while (Time.now - begin_time) < timeout
144
+ value = nil
145
+
146
+ begin
147
+ value = yield
148
+ rescue ::Spec::Expectations::ExpectationNotMetError, ::Selenium::CommandError, Webrat::WebratError
149
+ value = nil
150
+ end
151
+
152
+ return value if value
153
+
154
+ sleep 0.25
155
+ end
156
+
157
+ raise Webrat::TimeoutError.new(message + " (after #{timeout} sec)")
158
+ true
159
+ end
160
+
161
+ def selenium
162
+ return $browser if $browser
163
+ setup
164
+ $browser
165
+ end
166
+
167
+ webrat_deprecate :browser, :selenium
168
+
169
+
170
+ def save_and_open_screengrab
171
+ return unless File.exist?(saved_page_dir)
172
+
173
+ filename = "#{saved_page_dir}/webrat-#{Time.now.to_i}.png"
174
+
175
+ if $browser.chrome_backend?
176
+ $browser.capture_entire_page_screenshot(filename, '')
177
+ else
178
+ $browser.capture_screenshot(filename)
179
+ end
180
+ open_in_browser(filename)
181
+ end
182
+
183
+ protected
184
+
185
+ def silence_stream(stream)
186
+ old_stream = stream.dup
187
+ stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
188
+ stream.sync = true
189
+ yield
190
+ ensure
191
+ stream.reopen(old_stream)
192
+ end
193
+
194
+ def setup #:nodoc:
195
+ Webrat::Selenium::SeleniumRCServer.boot
196
+ Webrat::Selenium::ApplicationServer.boot
197
+
198
+ create_browser
199
+ $browser.start
200
+
201
+ extend_selenium
202
+ define_location_strategies
203
+ $browser.window_maximize
204
+ end
205
+
206
+
207
+ def create_browser
208
+ $browser = ::Selenium::Client::Driver.new(Webrat.configuration.selenium_server_address || "localhost",
209
+ Webrat.configuration.selenium_server_port, Webrat.configuration.selenium_browser_key, "http://#{Webrat.configuration.application_address}:#{Webrat.configuration.application_port}")
210
+ $browser.set_speed(0) unless Webrat.configuration.selenium_server_address
211
+
212
+ at_exit do
213
+ silence_stream(STDOUT) do
214
+ $browser.stop
215
+ end
216
+ end
217
+ end
218
+
219
+ def adjust_if_regexp(text_or_regexp) #:nodoc:
220
+ if text_or_regexp.is_a?(Regexp)
221
+ "evalregex:#{text_or_regexp.inspect}"
222
+ else
223
+ "evalregex:/#{text_or_regexp}/"
224
+ end
225
+ end
226
+
227
+ def extend_selenium #:nodoc:
228
+ extensions_file = File.join(File.dirname(__FILE__), "selenium_extensions.js")
229
+ extenions_js = File.read(extensions_file)
230
+ selenium.get_eval(extenions_js)
231
+ end
232
+
233
+ def define_location_strategies #:nodoc:
234
+ Dir[File.join(File.dirname(__FILE__), "location_strategy_javascript", "*.js")].sort.each do |file|
235
+ strategy_js = File.read(file)
236
+ strategy_name = File.basename(file, '.js')
237
+ selenium.add_location_strategy(strategy_name, strategy_js)
238
+ end
239
+ end
240
+ end
241
+ end
@@ -0,0 +1,35 @@
1
+ module Webrat
2
+ module Selenium
3
+
4
+ class SinatraApplicationServer < ApplicationServer
5
+
6
+ def start
7
+ fork do
8
+ File.open('rack.pid', 'w') { |fp| fp.write Process.pid }
9
+ exec 'rackup', File.expand_path(Dir.pwd + '/config.ru'), '-p', Webrat.configuration.application_port.to_s
10
+ end
11
+ end
12
+
13
+ def stop
14
+ silence_stream(STDOUT) do
15
+ pid = File.read(pid_file)
16
+ system("kill -9 #{pid}")
17
+ FileUtils.rm_f pid_file
18
+ end
19
+ end
20
+
21
+ def fail
22
+ $stderr.puts
23
+ $stderr.puts
24
+ $stderr.puts "==> Failed to boot the Sinatra application server... exiting!"
25
+ exit
26
+ end
27
+
28
+ def pid_file
29
+ prepare_pid_file(Dir.pwd, 'rack.pid')
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,80 @@
1
+ require "webrat"
2
+ gem "selenium-client", ">=1.2.14"
3
+ require "selenium/client"
4
+ require "webrat/selenium/selenium_session"
5
+ require "webrat/selenium/matchers"
6
+ require "webrat/core_extensions/tcp_socket"
7
+
8
+ module Webrat
9
+ # To use Webrat's Selenium support, you'll need the selenium-client gem installed.
10
+ # Activate it with (for example, in your <tt>env.rb</tt>):
11
+ #
12
+ # require "webrat"
13
+ #
14
+ # Webrat.configure do |config|
15
+ # config.mode = :selenium
16
+ # end
17
+ #
18
+ # == Dropping down to the selenium-client API
19
+ #
20
+ # If you ever need to do something with Selenium not provided in the Webrat API,
21
+ # you can always drop down to the selenium-client API using the <tt>selenium</tt> method.
22
+ # For example:
23
+ #
24
+ # When "I drag the photo to the left" do
25
+ # selenium.dragdrop("id=photo_123", "+350, 0")
26
+ # end
27
+ #
28
+ # == Choosing the underlying framework to test
29
+ #
30
+ # Webrat assumes you're using rails by default but it can also work with sinatra
31
+ # and merb. To take advantage of this you can use the configuration block to
32
+ # set the application_framework variable.
33
+ # require "webrat"
34
+ #
35
+ # Webrat.configure do |config|
36
+ # config.mode = :selenium
37
+ # config.application_port = 4567
38
+ # config.application_framework = :sinatra # could also be :merb
39
+ # end
40
+ #
41
+ # == Auto-starting of the appserver and java server
42
+ #
43
+ # Webrat will automatically start the Selenium Java server process and an instance
44
+ # of Mongrel when a test is run. The Mongrel will run in the "selenium" environment
45
+ # instead of "test", so ensure you've got that defined, and will run on port
46
+ # Webrat.configuration.application_port.
47
+ #
48
+ # == Waiting
49
+ #
50
+ # In order to make writing Selenium tests as easy as possible, Webrat will automatically
51
+ # wait for the correct elements to exist on the page when trying to manipulate them
52
+ # with methods like <tt>fill_in</tt>, etc. In general, this means you should be able to write
53
+ # your Webrat::Selenium tests ignoring the concurrency issues that can plague in-browser
54
+ # testing, so long as you're using the Webrat API.
55
+ module Selenium
56
+ module Methods
57
+ def response
58
+ webrat_session.response
59
+ end
60
+
61
+ def wait_for(*args, &block)
62
+ webrat_session.wait_for(*args, &block)
63
+ end
64
+
65
+ def save_and_open_screengrab
66
+ webrat_session.save_and_open_screengrab
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ if defined?(ActionController::IntegrationTest)
73
+ module ActionController #:nodoc:
74
+ IntegrationTest.class_eval do
75
+ include Webrat::Methods
76
+ include Webrat::Selenium::Methods
77
+ include Webrat::Selenium::Matchers
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,44 @@
1
+ require "webrat/rack"
2
+ require "sinatra/test"
3
+
4
+ module Webrat
5
+ class SinatraSession < RackSession
6
+ include Sinatra::Test
7
+
8
+ attr_reader :request, :response
9
+
10
+ def initialize(context = nil)
11
+ super(context)
12
+
13
+ app = context.respond_to?(:app) ? context.app : Sinatra::Application
14
+ @browser = Sinatra::TestHarness.new(app)
15
+ end
16
+
17
+ %w(get head post put delete).each do |verb|
18
+ class_eval <<-RUBY
19
+ def #{verb}(path, data, headers = {})
20
+ params = data.inject({}) do |data, (key,value)|
21
+ data[key] = Rack::Utils.unescape(value)
22
+ data
23
+ end
24
+ headers["HTTP_HOST"] = "www.example.com"
25
+ @browser.#{verb}(path, params, headers)
26
+ end
27
+ RUBY
28
+ end
29
+
30
+ def response_body
31
+ @browser.body
32
+ end
33
+
34
+ def response_code
35
+ @browser.status
36
+ end
37
+
38
+ private
39
+
40
+ def response
41
+ @browser.response
42
+ end
43
+ end
44
+ end
data/lib/webrat.rb ADDED
@@ -0,0 +1,34 @@
1
+ require "rubygems"
2
+
3
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
4
+
5
+ module Webrat
6
+ # The common base class for all exceptions raised by Webrat.
7
+ class WebratError < StandardError
8
+ end
9
+
10
+ VERSION = '0.4.4'
11
+
12
+ def self.require_xml
13
+ gem "nokogiri", ">= 1.0.6"
14
+
15
+ if on_java?
16
+ # We need Nokogiri's CSS to XPath support, even if using REXML and Hpricot for parsing and searching
17
+ require "nokogiri/css"
18
+ require "hpricot"
19
+ require "rexml/document"
20
+ else
21
+ require "nokogiri"
22
+ require "webrat/core/xml/nokogiri"
23
+ end
24
+ end
25
+
26
+ def self.on_java?
27
+ RUBY_PLATFORM =~ /java/
28
+ end
29
+
30
+ end
31
+
32
+ Webrat.require_xml
33
+
34
+ require "webrat/core"
Binary file
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cavalle-webrat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.4.1
5
+ platform: ruby
6
+ authors:
7
+ - Bryan Helmkamp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-14 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.2.0
24
+ version:
25
+ description: Webrat. Ruby Acceptance Testing for Web applications
26
+ email: bryan@brynary.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README.rdoc
33
+ - MIT-LICENSE.txt
34
+ files:
35
+ - History.txt
36
+ - install.rb
37
+ - MIT-LICENSE.txt
38
+ - README.rdoc
39
+ - Rakefile
40
+ - lib/webrat
41
+ - lib/webrat/core
42
+ - lib/webrat/core/configuration.rb
43
+ - lib/webrat/core/elements
44
+ - lib/webrat/core/elements/area.rb
45
+ - lib/webrat/core/elements/element.rb
46
+ - lib/webrat/core/elements/field.rb
47
+ - lib/webrat/core/elements/form.rb
48
+ - lib/webrat/core/elements/label.rb
49
+ - lib/webrat/core/elements/link.rb
50
+ - lib/webrat/core/elements/select_option.rb
51
+ - lib/webrat/core/locators
52
+ - lib/webrat/core/locators/area_locator.rb
53
+ - lib/webrat/core/locators/button_locator.rb
54
+ - lib/webrat/core/locators/field_by_id_locator.rb
55
+ - lib/webrat/core/locators/field_labeled_locator.rb
56
+ - lib/webrat/core/locators/field_locator.rb
57
+ - lib/webrat/core/locators/field_named_locator.rb
58
+ - lib/webrat/core/locators/form_locator.rb
59
+ - lib/webrat/core/locators/label_locator.rb
60
+ - lib/webrat/core/locators/link_locator.rb
61
+ - lib/webrat/core/locators/locator.rb
62
+ - lib/webrat/core/locators/select_option_locator.rb
63
+ - lib/webrat/core/locators.rb
64
+ - lib/webrat/core/logging.rb
65
+ - lib/webrat/core/matchers
66
+ - lib/webrat/core/matchers/have_content.rb
67
+ - lib/webrat/core/matchers/have_selector.rb
68
+ - lib/webrat/core/matchers/have_tag.rb
69
+ - lib/webrat/core/matchers/have_xpath.rb
70
+ - lib/webrat/core/matchers.rb
71
+ - lib/webrat/core/methods.rb
72
+ - lib/webrat/core/mime.rb
73
+ - lib/webrat/core/save_and_open_page.rb
74
+ - lib/webrat/core/scope.rb
75
+ - lib/webrat/core/session.rb
76
+ - lib/webrat/core/xml
77
+ - lib/webrat/core/xml/hpricot.rb
78
+ - lib/webrat/core/xml/nokogiri.rb
79
+ - lib/webrat/core/xml/rexml.rb
80
+ - lib/webrat/core/xml.rb
81
+ - lib/webrat/core.rb
82
+ - lib/webrat/core_extensions
83
+ - lib/webrat/core_extensions/blank.rb
84
+ - lib/webrat/core_extensions/deprecate.rb
85
+ - lib/webrat/core_extensions/detect_mapped.rb
86
+ - lib/webrat/core_extensions/meta_class.rb
87
+ - lib/webrat/core_extensions/nil_to_param.rb
88
+ - lib/webrat/core_extensions/tcp_socket.rb
89
+ - lib/webrat/mechanize.rb
90
+ - lib/webrat/merb.rb
91
+ - lib/webrat/merb_session.rb
92
+ - lib/webrat/rack.rb
93
+ - lib/webrat/rails.rb
94
+ - lib/webrat/rspec-rails.rb
95
+ - lib/webrat/selenium
96
+ - lib/webrat/selenium/application_server.rb
97
+ - lib/webrat/selenium/location_strategy_javascript
98
+ - lib/webrat/selenium/location_strategy_javascript/button.js
99
+ - lib/webrat/selenium/location_strategy_javascript/label.js
100
+ - lib/webrat/selenium/location_strategy_javascript/webrat.js
101
+ - lib/webrat/selenium/location_strategy_javascript/webratlink.js
102
+ - lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js
103
+ - lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js
104
+ - lib/webrat/selenium/matchers
105
+ - lib/webrat/selenium/matchers/have_content.rb
106
+ - lib/webrat/selenium/matchers/have_selector.rb
107
+ - lib/webrat/selenium/matchers/have_tag.rb
108
+ - lib/webrat/selenium/matchers/have_xpath.rb
109
+ - lib/webrat/selenium/matchers.rb
110
+ - lib/webrat/selenium/merb_application_server.rb
111
+ - lib/webrat/selenium/rails_application_server.rb
112
+ - lib/webrat/selenium/selenium_extensions.js
113
+ - lib/webrat/selenium/selenium_rc_server.rb
114
+ - lib/webrat/selenium/selenium_session.rb
115
+ - lib/webrat/selenium/sinatra_application_server.rb
116
+ - lib/webrat/selenium.rb
117
+ - lib/webrat/sinatra.rb
118
+ - lib/webrat.rb
119
+ - vendor/selenium-server.jar
120
+ has_rdoc: true
121
+ homepage: http://github.com/brynary/webrat
122
+ post_install_message:
123
+ rdoc_options: []
124
+
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: "0"
132
+ version:
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: "0"
138
+ version:
139
+ requirements: []
140
+
141
+ rubyforge_project: webrat
142
+ rubygems_version: 1.2.0
143
+ signing_key:
144
+ specification_version: 2
145
+ summary: Webrat. Ruby Acceptance Testing for Web applications
146
+ test_files: []
147
+