mkuklis-webrat 0.5.1 → 0.6.rc1

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 (211) hide show
  1. data/.document +3 -3
  2. data/.gitignore +14 -14
  3. data/History.txt +413 -413
  4. data/MIT-LICENSE.txt +19 -19
  5. data/README.rdoc +84 -84
  6. data/Rakefile +187 -187
  7. data/VERSION +1 -1
  8. data/install.rb +1 -1
  9. data/lib/webrat/adapters/mechanize.rb +78 -78
  10. data/lib/webrat/adapters/merb.rb +11 -11
  11. data/lib/webrat/adapters/rack.rb +25 -25
  12. data/lib/webrat/adapters/rails.rb +81 -81
  13. data/lib/webrat/adapters/sinatra.rb +9 -9
  14. data/lib/webrat/core/configuration.rb +92 -92
  15. data/lib/webrat/core/elements/area.rb +31 -31
  16. data/lib/webrat/core/elements/element.rb +33 -33
  17. data/lib/webrat/core/elements/field.rb +487 -487
  18. data/lib/webrat/core/elements/form.rb +103 -103
  19. data/lib/webrat/core/elements/label.rb +31 -31
  20. data/lib/webrat/core/elements/link.rb +93 -93
  21. data/lib/webrat/core/elements/select_option.rb +48 -48
  22. data/lib/webrat/core/locators/area_locator.rb +38 -38
  23. data/lib/webrat/core/locators/button_locator.rb +54 -54
  24. data/lib/webrat/core/locators/field_by_id_locator.rb +37 -37
  25. data/lib/webrat/core/locators/field_labeled_locator.rb +56 -56
  26. data/lib/webrat/core/locators/field_locator.rb +25 -25
  27. data/lib/webrat/core/locators/field_named_locator.rb +41 -41
  28. data/lib/webrat/core/locators/form_locator.rb +19 -19
  29. data/lib/webrat/core/locators/label_locator.rb +34 -34
  30. data/lib/webrat/core/locators/link_locator.rb +74 -74
  31. data/lib/webrat/core/locators/locator.rb +20 -20
  32. data/lib/webrat/core/locators/select_option_locator.rb +59 -59
  33. data/lib/webrat/core/locators.rb +20 -20
  34. data/lib/webrat/core/logging.rb +23 -23
  35. data/lib/webrat/core/matchers/have_content.rb +68 -68
  36. data/lib/webrat/core/matchers/have_selector.rb +74 -74
  37. data/lib/webrat/core/matchers/have_tag.rb +21 -21
  38. data/lib/webrat/core/matchers/have_xpath.rb +122 -122
  39. data/lib/webrat/core/matchers.rb +4 -4
  40. data/lib/webrat/core/methods.rb +64 -64
  41. data/lib/webrat/core/mime.rb +18 -18
  42. data/lib/webrat/core/save_and_open_page.rb +48 -48
  43. data/lib/webrat/core/scope.rb +365 -365
  44. data/lib/webrat/core/session.rb +306 -306
  45. data/lib/webrat/core/xml.rb +72 -72
  46. data/lib/webrat/core.rb +13 -13
  47. data/lib/webrat/core_extensions/blank.rb +58 -58
  48. data/lib/webrat/core_extensions/deprecate.rb +8 -8
  49. data/lib/webrat/core_extensions/detect_mapped.rb +12 -12
  50. data/lib/webrat/core_extensions/meta_class.rb +6 -6
  51. data/lib/webrat/core_extensions/nil_to_param.rb +5 -5
  52. data/lib/webrat/core_extensions/tcp_socket.rb +27 -27
  53. data/lib/webrat/integrations/merb.rb +10 -10
  54. data/lib/webrat/integrations/rails.rb +25 -25
  55. data/lib/webrat/integrations/rspec-rails.rb +10 -10
  56. data/lib/webrat/integrations/selenium.rb +11 -11
  57. data/lib/webrat/merb.rb +9 -9
  58. data/lib/webrat/rspec-rails.rb +2 -2
  59. data/lib/webrat/selenium/application_server_factory.rb +40 -40
  60. data/lib/webrat/selenium/application_servers/external.rb +26 -26
  61. data/lib/webrat/selenium/application_servers/merb.rb +50 -50
  62. data/lib/webrat/selenium/application_servers/rails.rb +3 -6
  63. data/lib/webrat/selenium/application_servers/sinatra.rb +37 -37
  64. data/lib/webrat/selenium/application_servers.rb +5 -5
  65. data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -19
  66. data/lib/webrat/selenium/location_strategy_javascript/label.js +42 -42
  67. data/lib/webrat/selenium/location_strategy_javascript/webrat.js +6 -6
  68. data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +32 -32
  69. data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -15
  70. data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -5
  71. data/lib/webrat/selenium/matchers/have_content.rb +66 -66
  72. data/lib/webrat/selenium/matchers/have_selector.rb +49 -49
  73. data/lib/webrat/selenium/matchers/have_tag.rb +72 -72
  74. data/lib/webrat/selenium/matchers/have_xpath.rb +45 -45
  75. data/lib/webrat/selenium/matchers.rb +4 -4
  76. data/lib/webrat/selenium/selenium_extensions.js +5 -5
  77. data/lib/webrat/selenium/selenium_rc_server.rb +86 -86
  78. data/lib/webrat/selenium/selenium_session.rb +267 -272
  79. data/lib/webrat/selenium/silence_stream.rb +18 -18
  80. data/lib/webrat/selenium.rb +70 -70
  81. data/lib/webrat.rb +18 -18
  82. data/spec/fakes/test_adapter.rb +37 -37
  83. data/spec/integration/mechanize/Rakefile +6 -6
  84. data/spec/integration/mechanize/config.ru +1 -1
  85. data/spec/integration/mechanize/sample_app.rb +20 -20
  86. data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -22
  87. data/spec/integration/mechanize/spec/spec_helper.rb +27 -27
  88. data/spec/integration/merb/.gitignore +20 -20
  89. data/spec/integration/merb/Rakefile +35 -35
  90. data/spec/integration/merb/app/controllers/application.rb +2 -2
  91. data/spec/integration/merb/app/controllers/exceptions.rb +13 -13
  92. data/spec/integration/merb/app/controllers/testing.rb +27 -27
  93. data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -63
  94. data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -47
  95. data/spec/integration/merb/app/views/layout/application.html.erb +11 -11
  96. data/spec/integration/merb/app/views/testing/show_form.html.erb +26 -26
  97. data/spec/integration/merb/app/views/testing/upload.html.erb +8 -8
  98. data/spec/integration/merb/config/environments/development.rb +15 -15
  99. data/spec/integration/merb/config/environments/rake.rb +11 -11
  100. data/spec/integration/merb/config/environments/test.rb +14 -14
  101. data/spec/integration/merb/config/init.rb +25 -25
  102. data/spec/integration/merb/config/rack.rb +11 -11
  103. data/spec/integration/merb/config/router.rb +34 -34
  104. data/spec/integration/merb/spec/spec.opts +1 -1
  105. data/spec/integration/merb/spec/spec_helper.rb +26 -26
  106. data/spec/integration/merb/spec/webrat_spec.rb +39 -39
  107. data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -31
  108. data/spec/integration/merb/tasks/merb.thor/common.rb +64 -64
  109. data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -124
  110. data/spec/integration/merb/tasks/merb.thor/main.thor +149 -149
  111. data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -93
  112. data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -40
  113. data/spec/integration/rack/Rakefile +5 -5
  114. data/spec/integration/rack/app.rb +89 -89
  115. data/spec/integration/rack/test/helper.rb +21 -21
  116. data/spec/integration/rack/test/webrat_rack_test.rb +73 -73
  117. data/spec/integration/rails/.gitignore +3 -3
  118. data/spec/integration/rails/Rakefile +30 -30
  119. data/spec/integration/rails/app/controllers/application.rb +15 -15
  120. data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -7
  121. data/spec/integration/rails/app/controllers/fields_controller.rb +4 -4
  122. data/spec/integration/rails/app/controllers/links_controller.rb +7 -7
  123. data/spec/integration/rails/app/controllers/webrat_controller.rb +46 -46
  124. data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -2
  125. data/spec/integration/rails/app/helpers/fields_helper.rb +2 -2
  126. data/spec/integration/rails/app/helpers/links_helper.rb +2 -2
  127. data/spec/integration/rails/app/views/buttons/show.html.erb +10 -10
  128. data/spec/integration/rails/app/views/fields/show.html.erb +8 -8
  129. data/spec/integration/rails/app/views/links/show.html.erb +5 -5
  130. data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +3 -3
  131. data/spec/integration/rails/app/views/webrat/buttons.html.erb +10 -10
  132. data/spec/integration/rails/app/views/webrat/form.html.erb +27 -27
  133. data/spec/integration/rails/app/views/webrat/within.html.erb +2 -2
  134. data/spec/integration/rails/config/boot.rb +109 -109
  135. data/spec/integration/rails/config/environment.rb +12 -12
  136. data/spec/integration/rails/config/environments/development.rb +17 -17
  137. data/spec/integration/rails/config/environments/selenium.rb +22 -22
  138. data/spec/integration/rails/config/environments/test.rb +22 -22
  139. data/spec/integration/rails/config/initializers/inflections.rb +10 -10
  140. data/spec/integration/rails/config/initializers/mime_types.rb +5 -5
  141. data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -17
  142. data/spec/integration/rails/config/locales/en.yml +4 -4
  143. data/spec/integration/rails/config/routes.rb +19 -19
  144. data/spec/integration/rails/public/404.html +29 -29
  145. data/spec/integration/rails/public/422.html +29 -29
  146. data/spec/integration/rails/public/500.html +33 -33
  147. data/spec/integration/rails/script/about +3 -3
  148. data/spec/integration/rails/script/console +3 -3
  149. data/spec/integration/rails/script/dbconsole +3 -3
  150. data/spec/integration/rails/script/destroy +3 -3
  151. data/spec/integration/rails/script/generate +3 -3
  152. data/spec/integration/rails/script/performance/benchmarker +3 -3
  153. data/spec/integration/rails/script/performance/profiler +3 -3
  154. data/spec/integration/rails/script/performance/request +3 -3
  155. data/spec/integration/rails/script/plugin +3 -3
  156. data/spec/integration/rails/script/process/inspector +3 -3
  157. data/spec/integration/rails/script/process/reaper +3 -3
  158. data/spec/integration/rails/script/process/spawner +3 -3
  159. data/spec/integration/rails/script/runner +3 -3
  160. data/spec/integration/rails/script/server +3 -3
  161. data/spec/integration/rails/test/integration/button_click_test.rb +80 -80
  162. data/spec/integration/rails/test/integration/fill_in_test.rb +24 -24
  163. data/spec/integration/rails/test/integration/link_click_test.rb +27 -27
  164. data/spec/integration/rails/test/integration/webrat_test.rb +122 -122
  165. data/spec/integration/rails/test/test_helper.rb +26 -26
  166. data/spec/integration/sinatra/Rakefile +5 -5
  167. data/spec/integration/sinatra/classic_app.rb +64 -64
  168. data/spec/integration/sinatra/modular_app.rb +16 -16
  169. data/spec/integration/sinatra/test/classic_app_test.rb +37 -37
  170. data/spec/integration/sinatra/test/modular_app_test.rb +18 -18
  171. data/spec/integration/sinatra/test/test_helper.rb +17 -17
  172. data/spec/private/core/configuration_spec.rb +87 -87
  173. data/spec/private/core/field_spec.rb +85 -85
  174. data/spec/private/core/link_spec.rb +24 -24
  175. data/spec/private/core/session_spec.rb +200 -200
  176. data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -73
  177. data/spec/private/nokogiri_spec.rb +77 -77
  178. data/spec/private/rails/attaches_file_spec.rb +81 -81
  179. data/spec/private/rails/rails_adapter_spec.rb +86 -86
  180. data/spec/private/selenium/application_servers/rails_spec.rb +26 -26
  181. data/spec/public/basic_auth_spec.rb +24 -24
  182. data/spec/public/check_spec.rb +191 -191
  183. data/spec/public/choose_spec.rb +118 -118
  184. data/spec/public/click_area_spec.rb +106 -106
  185. data/spec/public/click_button_spec.rb +494 -494
  186. data/spec/public/click_link_spec.rb +511 -511
  187. data/spec/public/fill_in_spec.rb +224 -224
  188. data/spec/public/locators/field_by_xpath_spec.rb +19 -19
  189. data/spec/public/locators/field_labeled_spec.rb +172 -172
  190. data/spec/public/locators/field_with_id_spec.rb +16 -16
  191. data/spec/public/matchers/contain_spec.rb +114 -114
  192. data/spec/public/matchers/have_selector_spec.rb +146 -146
  193. data/spec/public/matchers/have_tag_spec.rb +39 -39
  194. data/spec/public/matchers/have_xpath_spec.rb +136 -136
  195. data/spec/public/reload_spec.rb +10 -10
  196. data/spec/public/save_and_open_spec.rb +70 -70
  197. data/spec/public/select_date_spec.rb +112 -112
  198. data/spec/public/select_datetime_spec.rb +137 -137
  199. data/spec/public/select_spec.rb +455 -455
  200. data/spec/public/select_time_spec.rb +100 -100
  201. data/spec/public/selenium/application_server_factory_spec.rb +49 -49
  202. data/spec/public/selenium/application_servers/external_spec.rb +12 -12
  203. data/spec/public/selenium/selenium_session_spec.rb +37 -37
  204. data/spec/public/set_hidden_field_spec.rb +5 -5
  205. data/spec/public/submit_form_spec.rb +5 -5
  206. data/spec/public/visit_spec.rb +58 -58
  207. data/spec/public/within_spec.rb +177 -177
  208. data/spec/spec.opts +1 -1
  209. data/spec/spec_helper.rb +54 -54
  210. data/webrat.gemspec +360 -0
  211. metadata +6 -5
@@ -1,26 +1,26 @@
1
- require "webrat/selenium/application_servers/base"
2
-
3
- module Webrat
4
- module Selenium
5
- module ApplicationServers
6
- class External < Webrat::Selenium::ApplicationServers::Base
7
- def start
8
- warn "Webrat Ignoring Start Of Application Server Due to External Mode"
9
- end
10
-
11
- def stop
12
- end
13
-
14
- def fail
15
- end
16
-
17
- def pid_file
18
- end
19
-
20
- def wait
21
- end
22
-
23
- end
24
- end
25
- end
26
- end
1
+ require "webrat/selenium/application_servers/base"
2
+
3
+ module Webrat
4
+ module Selenium
5
+ module ApplicationServers
6
+ class External < Webrat::Selenium::ApplicationServers::Base
7
+ def start
8
+ warn "Webrat Ignoring Start Of Application Server Due to External Mode"
9
+ end
10
+
11
+ def stop
12
+ end
13
+
14
+ def fail
15
+ end
16
+
17
+ def pid_file
18
+ end
19
+
20
+ def wait
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,50 +1,50 @@
1
- require "webrat/selenium/application_servers/base"
2
-
3
- module Webrat
4
- module Selenium
5
- module ApplicationServers
6
- class Merb < Webrat::Selenium::ApplicationServers::Base
7
-
8
- def start
9
- system start_command
10
- end
11
-
12
- def stop
13
- silence_stream(STDOUT) do
14
- pid = File.read(pid_file)
15
- system("kill -9 #{pid}")
16
- FileUtils.rm_f pid_file
17
- end
18
- end
19
-
20
- def fail
21
- $stderr.puts
22
- $stderr.puts
23
- $stderr.puts "==> Failed to boot the Merb application server... exiting!"
24
- $stderr.puts
25
- $stderr.puts "Verify you can start a Merb server on port #{Webrat.configuration.application_port} with the following command:"
26
- $stderr.puts
27
- $stderr.puts " #{start_command}"
28
- exit
29
- end
30
-
31
- def pid_file
32
- "log/merb.#{Webrat.configuration.application_port}.pid"
33
- end
34
-
35
- def start_command
36
- "#{merb_command} -d -p #{Webrat.configuration.application_port} -e #{Webrat.configuration.application_environment}"
37
- end
38
-
39
- def merb_command
40
- if File.exist?('bin/merb')
41
- merb_cmd = 'bin/merb'
42
- else
43
- merb_cmd = 'merb'
44
- end
45
- end
46
-
47
- end
48
- end
49
- end
50
- end
1
+ require "webrat/selenium/application_servers/base"
2
+
3
+ module Webrat
4
+ module Selenium
5
+ module ApplicationServers
6
+ class Merb < Webrat::Selenium::ApplicationServers::Base
7
+
8
+ def start
9
+ system start_command
10
+ end
11
+
12
+ def stop
13
+ silence_stream(STDOUT) do
14
+ pid = File.read(pid_file)
15
+ system("kill -9 #{pid}")
16
+ FileUtils.rm_f pid_file
17
+ end
18
+ end
19
+
20
+ def fail
21
+ $stderr.puts
22
+ $stderr.puts
23
+ $stderr.puts "==> Failed to boot the Merb application server... exiting!"
24
+ $stderr.puts
25
+ $stderr.puts "Verify you can start a Merb server on port #{Webrat.configuration.application_port} with the following command:"
26
+ $stderr.puts
27
+ $stderr.puts " #{start_command}"
28
+ exit
29
+ end
30
+
31
+ def pid_file
32
+ "log/merb.#{Webrat.configuration.application_port}.pid"
33
+ end
34
+
35
+ def start_command
36
+ "#{merb_command} -d -p #{Webrat.configuration.application_port} -e #{Webrat.configuration.application_environment}"
37
+ end
38
+
39
+ def merb_command
40
+ if File.exist?('bin/merb')
41
+ merb_cmd = 'bin/merb'
42
+ else
43
+ merb_cmd = 'merb'
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
@@ -6,11 +6,7 @@ module Webrat
6
6
  class Rails < Webrat::Selenium::ApplicationServers::Base
7
7
 
8
8
  def start
9
- if windows?
10
- @shell.run remove_service, {:background => true }
11
- @shell.run install_service, {:background => false }
12
- end
13
- @shell.run start_command, {:background => true}
9
+ @shell.run start_command, {:background => true}
14
10
  end
15
11
 
16
12
  def stop
@@ -47,9 +43,10 @@ module Webrat
47
43
 
48
44
  def start_command
49
45
  if windows?
46
+ @shell.run install_service, {:background => false }
50
47
  "net start testapp"
51
48
  else
52
- "mongrel_rails start -d --chdir='#{RAILS_ROOT}' --port=#{Webrat.configuration.application_port} --environment=#{Webrat.configuration.application_environment} --pid #{pid_file}"
49
+ "mongrel_rails start -d --chdir='#{RAILS_ROOT}' --port=#{Webrat.configuration.application_port} --environment=#{Webrat.configuration.application_environment} --pid #{pid_file} &"
53
50
  end
54
51
  end
55
52
 
@@ -1,37 +1,37 @@
1
- require "webrat/selenium/application_servers/base"
2
-
3
- module Webrat
4
- module Selenium
5
- module ApplicationServers
6
- class Sinatra < Webrat::Selenium::ApplicationServers::Base
7
-
8
- def start
9
- fork do
10
- File.open('rack.pid', 'w') { |fp| fp.write Process.pid }
11
- exec 'rackup', File.expand_path(Dir.pwd + '/config.ru'), '-p', Webrat.configuration.application_port.to_s
12
- end
13
- end
14
-
15
- def stop
16
- silence_stream(STDOUT) do
17
- pid = File.read(pid_file)
18
- system("kill -9 #{pid}")
19
- FileUtils.rm_f pid_file
20
- end
21
- end
22
-
23
- def fail
24
- $stderr.puts
25
- $stderr.puts
26
- $stderr.puts "==> Failed to boot the Sinatra application server... exiting!"
27
- exit
28
- end
29
-
30
- def pid_file
31
- prepare_pid_file(Dir.pwd, 'rack.pid')
32
- end
33
-
34
- end
35
- end
36
- end
37
- end
1
+ require "webrat/selenium/application_servers/base"
2
+
3
+ module Webrat
4
+ module Selenium
5
+ module ApplicationServers
6
+ class Sinatra < Webrat::Selenium::ApplicationServers::Base
7
+
8
+ def start
9
+ fork do
10
+ File.open('rack.pid', 'w') { |fp| fp.write Process.pid }
11
+ exec 'rackup', File.expand_path(Dir.pwd + '/config.ru'), '-p', Webrat.configuration.application_port.to_s
12
+ end
13
+ end
14
+
15
+ def stop
16
+ silence_stream(STDOUT) do
17
+ pid = File.read(pid_file)
18
+ system("kill -9 #{pid}")
19
+ FileUtils.rm_f pid_file
20
+ end
21
+ end
22
+
23
+ def fail
24
+ $stderr.puts
25
+ $stderr.puts
26
+ $stderr.puts "==> Failed to boot the Sinatra application server... exiting!"
27
+ exit
28
+ end
29
+
30
+ def pid_file
31
+ prepare_pid_file(Dir.pwd, 'rack.pid')
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
- require "webrat/selenium/application_servers/base"
2
- require "webrat/selenium/application_servers/sinatra"
3
- require "webrat/selenium/application_servers/merb"
4
- require "webrat/selenium/application_servers/rails"
5
- require "webrat/selenium/application_servers/external"
1
+ require "webrat/selenium/application_servers/base"
2
+ require "webrat/selenium/application_servers/sinatra"
3
+ require "webrat/selenium/application_servers/merb"
4
+ require "webrat/selenium/application_servers/rails"
5
+ require "webrat/selenium/application_servers/external"
@@ -1,19 +1,19 @@
1
- if (locator == '*') {
2
- return selenium.browserbot.locationStrategies['xpath'].call(this, "//input[@type='submit']", inDocument, inWindow)
3
- }
4
- var buttons = inDocument.getElementsByTagName('button');
5
- var inputs = inDocument.getElementsByTagName('input');
6
- var result = $A(inputs).concat($A(buttons)).find(function(candidate){
7
- var type = candidate.getAttribute('type');
8
- if (type == 'submit' || type == 'image' || type == 'button') {
9
- var matches_id = PatternMatcher.matches(locator, candidate.id);
10
- var matches_value = PatternMatcher.matches(locator, candidate.value);
11
- var matches_html = PatternMatcher.matches(locator, candidate.innerHTML);
12
- var matches_alt = PatternMatcher.matches(locator, candidate.alt);
13
- if (matches_id || matches_value || matches_html || matches_alt) {
14
- return true;
15
- }
16
- }
17
- return false;
18
- });
19
- return result;
1
+ if (locator == '*') {
2
+ return selenium.browserbot.locationStrategies['xpath'].call(this, "//input[@type='submit']", inDocument, inWindow)
3
+ }
4
+ var buttons = inDocument.getElementsByTagName('button');
5
+ var inputs = inDocument.getElementsByTagName('input');
6
+ var result = $A(inputs).concat($A(buttons)).find(function(candidate){
7
+ var type = candidate.getAttribute('type');
8
+ if (type == 'submit' || type == 'image' || type == 'button') {
9
+ var matches_id = PatternMatcher.matches(locator, candidate.id);
10
+ var matches_value = PatternMatcher.matches(locator, candidate.value);
11
+ var matches_html = PatternMatcher.matches(locator, candidate.innerHTML);
12
+ var matches_alt = PatternMatcher.matches(locator, candidate.alt);
13
+ if (matches_id || matches_value || matches_html || matches_alt) {
14
+ return true;
15
+ }
16
+ }
17
+ return false;
18
+ });
19
+ return result;
@@ -1,42 +1,42 @@
1
- // Credit to: http://simonwillison.net/2006/Jan/20/escape/
2
- RegExp.escape = function(text) {
3
- if (!arguments.callee.sRE) {
4
- var specials = [
5
- '/', '.', '*', '+', '?', '|',
6
- '(', ')', '[', ']', '{', '}', '\\'
7
- ];
8
- arguments.callee.sRE = new RegExp(
9
- '(\\' + specials.join('|\\') + ')', 'g'
10
- );
11
- }
12
- return text.replace(arguments.callee.sRE, '\\$1');
13
- }
14
-
15
- var allLabels = inDocument.getElementsByTagName("label");
16
- var regExp = new RegExp('^\\W*' + RegExp.escape(locator) + '(\\b|$)', 'i');
17
-
18
- var candidateLabels = $A(allLabels).select(function(candidateLabel){
19
- var labelText = getText(candidateLabel).strip();
20
- return (labelText.search(regExp) >= 0);
21
- });
22
-
23
- if (candidateLabels.length == 0) {
24
- return null;
25
- }
26
-
27
- //reverse length sort
28
- candidateLabels = candidateLabels.sortBy(function(s) {
29
- return s.length * -1;
30
- });
31
-
32
- var locatedLabel = candidateLabels.first();
33
- var labelFor = locatedLabel.getAttribute('for');
34
-
35
- if ((labelFor == null) && (locatedLabel.hasChildNodes())) {
36
- return locatedLabel.getElementsByTagName('button')[0]
37
- || locatedLabel.getElementsByTagName('input')[0]
38
- || locatedLabel.getElementsByTagName('textarea')[0]
39
- || locatedLabel.getElementsByTagName('select')[0];
40
- }
41
-
42
- return selenium.browserbot.locationStrategies['id'].call(this, labelFor, inDocument, inWindow);
1
+ // Credit to: http://simonwillison.net/2006/Jan/20/escape/
2
+ RegExp.escape = function(text) {
3
+ if (!arguments.callee.sRE) {
4
+ var specials = [
5
+ '/', '.', '*', '+', '?', '|',
6
+ '(', ')', '[', ']', '{', '}', '\\'
7
+ ];
8
+ arguments.callee.sRE = new RegExp(
9
+ '(\\' + specials.join('|\\') + ')', 'g'
10
+ );
11
+ }
12
+ return text.replace(arguments.callee.sRE, '\\$1');
13
+ }
14
+
15
+ var allLabels = inDocument.getElementsByTagName("label");
16
+ var regExp = new RegExp('^\\W*' + RegExp.escape(locator) + '(\\b|$)', 'i');
17
+
18
+ var candidateLabels = $A(allLabels).select(function(candidateLabel){
19
+ var labelText = getText(candidateLabel).strip();
20
+ return (labelText.search(regExp) >= 0);
21
+ });
22
+
23
+ if (candidateLabels.length == 0) {
24
+ return null;
25
+ }
26
+
27
+ //reverse length sort
28
+ candidateLabels = candidateLabels.sortBy(function(s) {
29
+ return s.length * -1;
30
+ });
31
+
32
+ var locatedLabel = candidateLabels.first();
33
+ var labelFor = locatedLabel.getAttribute('for');
34
+
35
+ if ((labelFor == null) && (locatedLabel.hasChildNodes())) {
36
+ return locatedLabel.getElementsByTagName('button')[0]
37
+ || locatedLabel.getElementsByTagName('input')[0]
38
+ || locatedLabel.getElementsByTagName('textarea')[0]
39
+ || locatedLabel.getElementsByTagName('select')[0];
40
+ }
41
+
42
+ return selenium.browserbot.locationStrategies['id'].call(this, labelFor, inDocument, inWindow);
@@ -1,6 +1,6 @@
1
- var locationStrategies = selenium.browserbot.locationStrategies;
2
-
3
- return locationStrategies['id'].call(this, locator, inDocument, inWindow)
4
- || locationStrategies['name'].call(this, locator, inDocument, inWindow)
5
- || locationStrategies['label'].call(this, locator, inDocument, inWindow)
6
- || null;
1
+ var locationStrategies = selenium.browserbot.locationStrategies;
2
+
3
+ return locationStrategies['id'].call(this, locator, inDocument, inWindow)
4
+ || locationStrategies['name'].call(this, locator, inDocument, inWindow)
5
+ || locationStrategies['label'].call(this, locator, inDocument, inWindow)
6
+ || null;
@@ -1,32 +1,32 @@
1
- var links = inDocument.getElementsByTagName('a');
2
-
3
- var candidateLinks = $A(links).select(function(candidateLink) {
4
- var textMatched = false;
5
- var titleMatched = false;
6
- var idMatched = false;
7
-
8
- if (getText(candidateLink).toLowerCase().indexOf(locator.toLowerCase()) != -1) {
9
- textMatched = true;
10
- }
11
-
12
- if (candidateLink.title.toLowerCase().indexOf(locator.toLowerCase()) != -1) {
13
- titleMatched = true;
14
- }
15
-
16
- if (candidateLink.id.toLowerCase().indexOf(locator.toLowerCase()) != -1) {
17
- idMatched = true;
18
- }
19
-
20
- return textMatched || idMatched || titleMatched;
21
- });
22
-
23
- if (candidateLinks.length == 0) {
24
- return null;
25
- }
26
-
27
- //reverse length sort
28
- candidateLinks = candidateLinks.sortBy(function(s) {
29
- return s.length * -1;
30
- });
31
-
32
- return candidateLinks.first();
1
+ var links = inDocument.getElementsByTagName('a');
2
+
3
+ var candidateLinks = $A(links).select(function(candidateLink) {
4
+ var textMatched = false;
5
+ var titleMatched = false;
6
+ var idMatched = false;
7
+
8
+ if (getText(candidateLink).toLowerCase().indexOf(locator.toLowerCase()) != -1) {
9
+ textMatched = true;
10
+ }
11
+
12
+ if (candidateLink.title.toLowerCase().indexOf(locator.toLowerCase()) != -1) {
13
+ titleMatched = true;
14
+ }
15
+
16
+ if (candidateLink.id.toLowerCase().indexOf(locator.toLowerCase()) != -1) {
17
+ idMatched = true;
18
+ }
19
+
20
+ return textMatched || idMatched || titleMatched;
21
+ });
22
+
23
+ if (candidateLinks.length == 0) {
24
+ return null;
25
+ }
26
+
27
+ //reverse length sort
28
+ candidateLinks = candidateLinks.sortBy(function(s) {
29
+ return s.length * -1;
30
+ });
31
+
32
+ return candidateLinks.first();
@@ -1,15 +1,15 @@
1
- var locatorParts = locator.split('|');
2
- var cssAncestor = locatorParts[0];
3
- var linkText = locatorParts[1];
4
- var matchingElements = cssQuery(cssAncestor, inDocument);
5
- var candidateLinks = matchingElements.collect(function(ancestor){
6
- var links = ancestor.getElementsByTagName('a');
7
- return $A(links).select(function(candidateLink) {
8
- return PatternMatcher.matches(linkText, getText(candidateLink));
9
- });
10
- }).flatten().compact();
11
- if (candidateLinks.length == 0) {
12
- return null;
13
- }
14
- candidateLinks = candidateLinks.sortBy(function(s) { return s.length * -1; }); //reverse length sort
15
- return candidateLinks.first();
1
+ var locatorParts = locator.split('|');
2
+ var cssAncestor = locatorParts[0];
3
+ var linkText = locatorParts[1];
4
+ var matchingElements = cssQuery(cssAncestor, inDocument);
5
+ var candidateLinks = matchingElements.collect(function(ancestor){
6
+ var links = ancestor.getElementsByTagName('a');
7
+ return $A(links).select(function(candidateLink) {
8
+ return PatternMatcher.matches(linkText, getText(candidateLink));
9
+ });
10
+ }).flatten().compact();
11
+ if (candidateLinks.length == 0) {
12
+ return null;
13
+ }
14
+ candidateLinks = candidateLinks.sortBy(function(s) { return s.length * -1; }); //reverse length sort
15
+ return candidateLinks.first();
@@ -1,5 +1,5 @@
1
- var optionElements = inDocument.getElementsByTagName('option');
2
- var locatedOption = $A(optionElements).find(function(candidate){
3
- return (PatternMatcher.matches(locator, getText(candidate)));
4
- });
5
- return locatedOption ? locatedOption.parentNode : null;
1
+ var optionElements = inDocument.getElementsByTagName('option');
2
+ var locatedOption = $A(optionElements).find(function(candidate){
3
+ return (PatternMatcher.matches(locator, getText(candidate)));
4
+ });
5
+ return locatedOption ? locatedOption.parentNode : null;
@@ -1,66 +1,66 @@
1
- module Webrat
2
- module Selenium
3
- module Matchers
4
- class HasContent #:nodoc:
5
- def initialize(content)
6
- @content = content
7
- end
8
-
9
- def matches?(response)
10
- if @content.is_a?(Regexp)
11
- text_finder = "regexp:#{@content.source}"
12
- else
13
- text_finder = @content
14
- end
15
-
16
- response.session.wait_for do
17
- response.selenium.is_text_present(text_finder)
18
- end
19
- rescue Webrat::TimeoutError
20
- false
21
- end
22
-
23
- # ==== Returns
24
- # String:: The failure message.
25
- def failure_message
26
- "expected the following element's content to #{content_message}:\n#{@element}"
27
- end
28
-
29
- # ==== Returns
30
- # String:: The failure message to be displayed in negative matches.
31
- def negative_failure_message
32
- "expected the following element's content to not #{content_message}:\n#{@element}"
33
- end
34
-
35
- def content_message
36
- case @content
37
- when String
38
- "include \"#{@content}\""
39
- when Regexp
40
- "match #{@content.inspect}"
41
- end
42
- end
43
- end
44
-
45
- # Matches the contents of an HTML document with
46
- # whatever string is supplied
47
- def contain(content)
48
- HasContent.new(content)
49
- end
50
-
51
- # Asserts that the body of the response contain
52
- # the supplied string or regexp
53
- def assert_contain(content)
54
- hc = HasContent.new(content)
55
- assert hc.matches?(response), hc.failure_message
56
- end
57
-
58
- # Asserts that the body of the response
59
- # does not contain the supplied string or regepx
60
- def assert_not_contain(content)
61
- hc = HasContent.new(content)
62
- assert !hc.matches?(response), hc.negative_failure_message
63
- end
64
- end
65
- end
66
- end
1
+ module Webrat
2
+ module Selenium
3
+ module Matchers
4
+ class HasContent #:nodoc:
5
+ def initialize(content)
6
+ @content = content
7
+ end
8
+
9
+ def matches?(response)
10
+ if @content.is_a?(Regexp)
11
+ text_finder = "regexp:#{@content.source}"
12
+ else
13
+ text_finder = @content
14
+ end
15
+
16
+ response.session.wait_for do
17
+ response.selenium.is_text_present(text_finder)
18
+ end
19
+ rescue Webrat::TimeoutError
20
+ false
21
+ end
22
+
23
+ # ==== Returns
24
+ # String:: The failure message.
25
+ def failure_message
26
+ "expected the following element's content to #{content_message}:\n#{@element}"
27
+ end
28
+
29
+ # ==== Returns
30
+ # String:: The failure message to be displayed in negative matches.
31
+ def negative_failure_message
32
+ "expected the following element's content to not #{content_message}:\n#{@element}"
33
+ end
34
+
35
+ def content_message
36
+ case @content
37
+ when String
38
+ "include \"#{@content}\""
39
+ when Regexp
40
+ "match #{@content.inspect}"
41
+ end
42
+ end
43
+ end
44
+
45
+ # Matches the contents of an HTML document with
46
+ # whatever string is supplied
47
+ def contain(content)
48
+ HasContent.new(content)
49
+ end
50
+
51
+ # Asserts that the body of the response contain
52
+ # the supplied string or regexp
53
+ def assert_contain(content)
54
+ hc = HasContent.new(content)
55
+ assert hc.matches?(response), hc.failure_message
56
+ end
57
+
58
+ # Asserts that the body of the response
59
+ # does not contain the supplied string or regepx
60
+ def assert_not_contain(content)
61
+ hc = HasContent.new(content)
62
+ assert !hc.matches?(response), hc.negative_failure_message
63
+ end
64
+ end
65
+ end
66
+ end