jwilger-webrat 0.4.4.2 → 0.4.4.3

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 CHANGED
@@ -11,7 +11,11 @@
11
11
  * Filled in tests on click link lh 195 (diabolo)
12
12
  * Added current_url to selenium session lh 215 (Luke Amdor)
13
13
  * Added silence spec to selenium lh 238 (Martin Gamsjaeger aka snusnu)
14
- * Added ability to configure the browser startup timeout for selenium lh 242 (Mike Gaffney)
14
+ * Added ability to configure the browser startup timeout for selenium lh 242 (Mike Gaffney, Mark Dodwell)
15
+ * Added delegation for field_named lh194 (pivotal labs)
16
+ * Added fix to keep from escaping field values in mechanize mode lh256 (jish)
17
+ * Adding fixes for click button/link and made the integration specs pass for the same in selenium lh254 (Ldiehl, Matthias Marschall)
18
+ * Adding clicking link by id in selenium mode lh221 (larrytheliquid)
15
19
 
16
20
  == 0.4.4 / 2009-04-06
17
21
 
data/lib/webrat.rb CHANGED
@@ -7,7 +7,7 @@ module Webrat
7
7
  class WebratError < StandardError
8
8
  end
9
9
 
10
- VERSION = '0.4.4.2'
10
+ VERSION = '0.4.4.3'
11
11
 
12
12
  def self.require_xml
13
13
  if on_java?
@@ -29,7 +29,7 @@ module Webrat
29
29
  # Save and open pages with error status codes (500-599) in a browser? Defualts to true.
30
30
  attr_writer :open_error_files
31
31
 
32
- # Which rails environment should the selenium tests be run in? Defaults to selenium.
32
+ # Which rails environment should the selenium tests be run in? Defaults to test.
33
33
  attr_accessor :application_environment
34
34
  webrat_deprecate :selenium_environment, :application_environment
35
35
  webrat_deprecate :selenium_environment=, :application_environment=
@@ -57,6 +57,9 @@ module Webrat
57
57
  # Set the timeout for waiting for the browser process to start
58
58
  attr_accessor :selenium_browser_startup_timeout
59
59
 
60
+ # Set the timeout for waiting for actions within the browser
61
+ attr_accessor :browser_action_timeout
62
+
60
63
  # How many redirects to the same URL should be halted as an infinite redirect
61
64
  # loop? Defaults to 10
62
65
  attr_accessor :infinite_redirect_limit
@@ -72,6 +75,7 @@ module Webrat
72
75
  self.infinite_redirect_limit = 10
73
76
  self.selenium_browser_key = '*firefox'
74
77
  self.selenium_browser_startup_timeout = 5
78
+ self.browser_action_timeout = 5
75
79
  end
76
80
 
77
81
  def parse_with_nokogiri? #:nodoc:
@@ -87,6 +87,8 @@ module Webrat
87
87
  parse_rails_request_params("#{name}=#{escaped_value}")
88
88
  when :merb
89
89
  ::Merb::Parse.query("#{name}=#{escaped_value}")
90
+ when :mechanize
91
+ { name => value }
90
92
  else
91
93
  { name => escaped_value }
92
94
  end
@@ -57,9 +57,7 @@ module Webrat
57
57
  :field_by_xpath,
58
58
  :field_with_id,
59
59
  :selenium,
60
- :simulate, :automate
61
-
62
-
63
-
60
+ :simulate, :automate,
61
+ :field_named
64
62
  end
65
63
  end
@@ -255,6 +255,7 @@ For example:
255
255
  def_delegators :current_scope, :field_by_xpath
256
256
  def_delegators :current_scope, :field_with_id
257
257
  def_delegators :current_scope, :select_option
258
+ def_delegators :current_scope, :field_named
258
259
 
259
260
  private
260
261
 
@@ -271,7 +272,7 @@ For example:
271
272
  end
272
273
 
273
274
  def current_host
274
- URI.parse(current_url).host || "www.example.com"
275
+ URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com"
275
276
  end
276
277
 
277
278
  def response_location_host
@@ -1,7 +1,6 @@
1
1
  require "webrat"
2
2
  gem "selenium-client", ">=1.2.14"
3
3
  require "selenium/client"
4
-
5
4
  require "webrat/selenium/silence_stream"
6
5
  require "webrat/selenium/selenium_session"
7
6
  require "webrat/selenium/matchers"
@@ -1,12 +1,19 @@
1
1
  if (locator == '*') {
2
2
  return selenium.browserbot.locationStrategies['xpath'].call(this, "//input[@type='submit']", inDocument, inWindow)
3
3
  }
4
+ var buttons = inDocument.getElementsByTagName('button');
4
5
  var inputs = inDocument.getElementsByTagName('input');
5
- return $A(inputs).find(function(candidate){
6
- inputType = candidate.getAttribute('type');
7
- if (inputType == 'submit' || inputType == 'image') {
8
- var buttonText = $F(candidate);
9
- return (PatternMatcher.matches(locator, buttonText));
10
- }
11
- return false;
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;
12
18
  });
19
+ return result;
@@ -1,6 +1,8 @@
1
1
  var links = inDocument.getElementsByTagName('a');
2
2
  var candidateLinks = $A(links).select(function(candidateLink) {
3
- return PatternMatcher.matches(locator, getText(candidateLink));
3
+ var textMatched = PatternMatcher.matches(locator, getText(candidateLink));
4
+ var idMatched = PatternMatcher.matches(locator, candidateLink.id);
5
+ return textMatched || idMatched;
4
6
  });
5
7
  if (candidateLinks.length == 0) {
6
8
  return null;
@@ -34,15 +34,16 @@ module Webrat
34
34
  yield
35
35
  end
36
36
 
37
- def visit(url)
37
+ def visit(url, timeout = nil)
38
38
  selenium.open(url)
39
+ selenium.wait_for_page_to_load(timeout)
39
40
  end
40
41
 
41
42
  webrat_deprecate :visits, :visit
42
43
 
43
44
  def fill_in(field_identifier, options)
44
45
  locator = "webrat=#{Regexp.escape(field_identifier)}"
45
- selenium.wait_for_element locator, :timeout_in_seconds => 5
46
+ selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
46
47
  selenium.type(locator, "#{options[:with]}")
47
48
  end
48
49
 
@@ -69,7 +70,7 @@ module Webrat
69
70
  pattern ||= '*'
70
71
  locator = "button=#{pattern}"
71
72
 
72
- selenium.wait_for_element locator, :timeout_in_seconds => 5
73
+ selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
73
74
  selenium.click locator
74
75
  end
75
76
 
@@ -78,7 +79,7 @@ module Webrat
78
79
  def click_link(link_text_or_regexp, options = {})
79
80
  pattern = adjust_if_regexp(link_text_or_regexp)
80
81
  locator = "webratlink=#{pattern}"
81
- selenium.wait_for_element locator, :timeout_in_seconds => 5
82
+ selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
82
83
  selenium.click locator
83
84
  end
84
85
 
@@ -86,7 +87,7 @@ module Webrat
86
87
 
87
88
  def click_link_within(selector, link_text, options = {})
88
89
  locator = "webratlinkwithin=#{selector}|#{link_text}"
89
- selenium.wait_for_element locator, :timeout_in_seconds => 5
90
+ selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
90
91
  selenium.click locator
91
92
  end
92
93
 
@@ -101,7 +102,7 @@ module Webrat
101
102
  select_locator = "webratselectwithoption=#{option_text}"
102
103
  end
103
104
 
104
- selenium.wait_for_element select_locator, :timeout_in_seconds => 5
105
+ selenium.wait_for_element select_locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
105
106
  selenium.select(select_locator, option_text)
106
107
  end
107
108
 
@@ -109,7 +110,7 @@ module Webrat
109
110
 
110
111
  def choose(label_text)
111
112
  locator = "webrat=#{label_text}"
112
- selenium.wait_for_element locator, :timeout_in_seconds => 5
113
+ selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
113
114
  selenium.click locator
114
115
  end
115
116
 
@@ -117,7 +118,7 @@ module Webrat
117
118
 
118
119
  def check(label_text)
119
120
  locator = "webrat=#{label_text}"
120
- selenium.wait_for_element locator, :timeout_in_seconds => 5
121
+ selenium.wait_for_element locator, :timeout_in_seconds => Webrat.configuration.browser_action_timeout
121
122
  selenium.click locator
122
123
  end
123
124
  alias_method :uncheck, :check
@@ -1,14 +1,18 @@
1
1
  module Webrat
2
2
  module Selenium
3
3
  module SilenceStream
4
- def silence_stream(stream)
5
- old_stream = stream.dup
6
- stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
7
- stream.sync = true
8
- yield
9
- ensure
10
- stream.reopen(old_stream)
11
- end
4
+ # active_support already defines silence_stream, no need to do that again if it's already present.
5
+ # http://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb
6
+ unless Kernel.respond_to?(:silence_stream)
7
+ def silence_stream(stream)
8
+ old_stream = stream.dup
9
+ stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
10
+ stream.sync = true
11
+ yield
12
+ ensure
13
+ stream.reopen(old_stream)
14
+ end
15
+ end
12
16
  end
13
17
  end
14
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jwilger-webrat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4.2
4
+ version: 0.4.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Helmkamp
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-28 00:00:00 -07:00
12
+ date: 2009-06-01 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency