webrat 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +17 -0
- data/Thorfile +1 -0
- data/lib/webrat.rb +1 -1
- data/lib/webrat/adapters/rails.rb +0 -8
- data/lib/webrat/core/configuration.rb +8 -1
- data/lib/webrat/core/matchers/have_content.rb +1 -1
- data/lib/webrat/core/save_and_open_page.rb +3 -23
- data/lib/webrat/core/session.rb +0 -4
- data/lib/webrat/selenium/matchers/have_content.rb +22 -10
- data/lib/webrat/selenium/matchers/have_selector.rb +8 -0
- data/lib/webrat/selenium/matchers/have_xpath.rb +8 -0
- data/lib/webrat/selenium/selenium_rc_server.rb +1 -1
- data/lib/webrat/selenium/selenium_session.rb +2 -2
- data/spec/fakes/test_adapter.rb +0 -4
- data/spec/private/core/session_spec.rb +0 -5
- data/spec/private/rails/rails_adapter_spec.rb +0 -7
- data/spec/public/matchers/contain_spec.rb +8 -15
- data/spec/public/save_and_open_spec.rb +4 -25
- data/vendor/selenium-server.jar +0 -0
- data/webrat.gemspec +5 -2
- metadata +12 -2
data/History.txt
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
== 0.7.0 / 2010-01-17
|
2
|
+
|
3
|
+
* Major enhancements
|
4
|
+
|
5
|
+
* Upgrade bundled Selenium server JAR to 2.0a1 (Henry Poydar and Jake Scruggs)
|
6
|
+
|
7
|
+
* Minor enhancements
|
8
|
+
|
9
|
+
* Save and open page directory specified via configuration, defaults to tmp dir otherwise current dir (Noah Davis)
|
10
|
+
|
11
|
+
* Bug fixes
|
12
|
+
|
13
|
+
* Added missing dependency "rack-test" to gemspec (LH #339) (Noah Davis)
|
14
|
+
* Removed save_and_open_page's rewriting of static asset paths before saving (was not actually working) (Noah Davis)
|
15
|
+
* Make "should contain" ignore extra whitespace when doing string comparisons (Noah Davis)
|
16
|
+
* Make selenium matchers handle negative match more consistently with positive match (Luke Melia)
|
17
|
+
|
1
18
|
== 0.6.0 / 2009-11-28
|
2
19
|
|
3
20
|
REMOVED: Support for Hpricot + REXML as an alternative to Nokogiri.
|
data/Thorfile
CHANGED
data/lib/webrat.rb
CHANGED
@@ -11,14 +11,6 @@ module Webrat
|
|
11
11
|
@integration_session = session
|
12
12
|
end
|
13
13
|
|
14
|
-
def doc_root
|
15
|
-
File.expand_path(File.join(RAILS_ROOT, 'public'))
|
16
|
-
end
|
17
|
-
|
18
|
-
def saved_page_dir
|
19
|
-
File.expand_path(File.join(RAILS_ROOT, "tmp"))
|
20
|
-
end
|
21
|
-
|
22
14
|
def get(url, data, headers = nil)
|
23
15
|
do_request(:get, url, data, headers)
|
24
16
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "webrat/core_extensions/deprecate"
|
2
|
+
require "pathname"
|
2
3
|
|
3
4
|
module Webrat
|
4
5
|
|
@@ -26,7 +27,10 @@ module Webrat
|
|
26
27
|
# Save and open pages with error status codes (500-599) in a browser? Defualts to true.
|
27
28
|
attr_writer :open_error_files
|
28
29
|
|
29
|
-
#
|
30
|
+
# Save and open page storage directory, defaults to "tmp" under current directory if exists, otherwise current directory
|
31
|
+
attr_accessor :saved_pages_dir
|
32
|
+
|
33
|
+
# Which rails environment should the selenium tests be run in? Defaults to test.
|
30
34
|
attr_accessor :application_environment
|
31
35
|
webrat_deprecate :selenium_environment, :application_environment
|
32
36
|
webrat_deprecate :selenium_environment=, :application_environment=
|
@@ -68,6 +72,9 @@ module Webrat
|
|
68
72
|
self.infinite_redirect_limit = 10
|
69
73
|
self.selenium_browser_key = '*firefox'
|
70
74
|
self.selenium_browser_startup_timeout = 5
|
75
|
+
|
76
|
+
tmp_dir = Pathname.new(Dir.pwd).join("tmp")
|
77
|
+
self.saved_pages_dir = tmp_dir.exist? ? tmp_dir : Dir.pwd
|
71
78
|
end
|
72
79
|
|
73
80
|
def open_error_files? #:nodoc:
|
@@ -6,12 +6,12 @@ module Webrat
|
|
6
6
|
# Example:
|
7
7
|
# save_and_open_page
|
8
8
|
def save_and_open_page
|
9
|
-
return unless File.exist?(
|
9
|
+
return unless File.exist?(Webrat.configuration.saved_pages_dir)
|
10
10
|
|
11
|
-
filename = "#{
|
11
|
+
filename = "#{Webrat.configuration.saved_pages_dir}/webrat-#{Time.now.to_i}.html"
|
12
12
|
|
13
13
|
File.open(filename, "w") do |f|
|
14
|
-
f.write
|
14
|
+
f.write response_body
|
15
15
|
end
|
16
16
|
|
17
17
|
open_in_browser(filename)
|
@@ -24,25 +24,5 @@ module Webrat
|
|
24
24
|
warn "Sorry, you need to install launchy to open pages: `gem install launchy`"
|
25
25
|
end
|
26
26
|
|
27
|
-
def rewrite_css_and_image_references(response_html) # :nodoc:
|
28
|
-
return response_html unless doc_root
|
29
|
-
response_html.gsub(/("|')\/(stylesheets|images)/, '\1' + doc_root + '/\2')
|
30
|
-
end
|
31
|
-
|
32
|
-
def saved_page_dir #:nodoc:
|
33
|
-
File.expand_path(".")
|
34
|
-
end
|
35
|
-
|
36
|
-
def doc_root #:nodoc:
|
37
|
-
nil
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
# accessor for testing
|
43
|
-
def ruby_platform
|
44
|
-
RUBY_PLATFORM
|
45
|
-
end
|
46
|
-
|
47
27
|
end
|
48
28
|
end
|
data/lib/webrat/core/session.rb
CHANGED
@@ -7,29 +7,33 @@ module Webrat
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def matches?(response)
|
10
|
-
|
11
|
-
text_finder
|
12
|
-
else
|
13
|
-
text_finder = @content
|
10
|
+
response.session.wait_for do
|
11
|
+
response.selenium.is_text_present(text_finder)
|
14
12
|
end
|
13
|
+
rescue Webrat::TimeoutError => e
|
14
|
+
@error_message = e.message
|
15
|
+
false
|
16
|
+
end
|
15
17
|
|
18
|
+
def does_not_match?(response)
|
16
19
|
response.session.wait_for do
|
17
|
-
response.selenium.is_text_present(text_finder)
|
20
|
+
!response.selenium.is_text_present(text_finder)
|
18
21
|
end
|
19
|
-
|
20
|
-
|
22
|
+
rescue Webrat::TimeoutError => e
|
23
|
+
@error_message = e.message
|
24
|
+
false
|
21
25
|
end
|
22
26
|
|
23
27
|
# ==== Returns
|
24
28
|
# String:: The failure message.
|
25
29
|
def failure_message
|
26
|
-
"expected the
|
30
|
+
"expected the response to #{content_message}:\n#{@error_message}"
|
27
31
|
end
|
28
32
|
|
29
33
|
# ==== Returns
|
30
34
|
# String:: The failure message to be displayed in negative matches.
|
31
35
|
def negative_failure_message
|
32
|
-
"expected the
|
36
|
+
"expected the response to not #{content_message}"
|
33
37
|
end
|
34
38
|
|
35
39
|
def content_message
|
@@ -40,6 +44,14 @@ module Webrat
|
|
40
44
|
"match #{@content.inspect}"
|
41
45
|
end
|
42
46
|
end
|
47
|
+
|
48
|
+
def text_finder
|
49
|
+
if @content.is_a?(Regexp)
|
50
|
+
"regexp:#{@content.source}"
|
51
|
+
else
|
52
|
+
@content
|
53
|
+
end
|
54
|
+
end
|
43
55
|
end
|
44
56
|
|
45
57
|
# Matches the contents of an HTML document with
|
@@ -52,7 +64,7 @@ module Webrat
|
|
52
64
|
# the supplied string or regexp
|
53
65
|
def assert_contain(content)
|
54
66
|
hc = HasContent.new(content)
|
55
|
-
|
67
|
+
assert hc.matches?(response), hc.failure_message
|
56
68
|
end
|
57
69
|
|
58
70
|
# Asserts that the body of the response
|
@@ -14,6 +14,14 @@ module Webrat
|
|
14
14
|
false
|
15
15
|
end
|
16
16
|
|
17
|
+
def does_not_match?(response)
|
18
|
+
response.session.wait_for do
|
19
|
+
!response.selenium.is_element_present("css=#{@expected}")
|
20
|
+
end
|
21
|
+
rescue Webrat::TimeoutError
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
17
25
|
# ==== Returns
|
18
26
|
# String:: The failure message.
|
19
27
|
def failure_message
|
@@ -14,6 +14,14 @@ module Webrat
|
|
14
14
|
false
|
15
15
|
end
|
16
16
|
|
17
|
+
def does_not_match?(response)
|
18
|
+
response.session.wait_for do
|
19
|
+
!response.selenium.is_element_present("xpath=#{@expected}")
|
20
|
+
end
|
21
|
+
rescue Webrat::TimeoutError
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
17
25
|
# ==== Returns
|
18
26
|
# String:: The failure message.
|
19
27
|
def failure_message
|
@@ -195,9 +195,9 @@ EOS
|
|
195
195
|
|
196
196
|
|
197
197
|
def save_and_open_screengrab
|
198
|
-
return unless File.exist?(
|
198
|
+
return unless File.exist?(Webrat.configuration.saved_pages_dir)
|
199
199
|
|
200
|
-
filename = "#{
|
200
|
+
filename = "#{Webrat.configuration.saved_pages_dir}/webrat-#{Time.now.to_i}.png"
|
201
201
|
|
202
202
|
if $browser.chrome_backend?
|
203
203
|
$browser.capture_entire_page_screenshot(filename, '')
|
data/spec/fakes/test_adapter.rb
CHANGED
@@ -2,11 +2,6 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
|
2
2
|
|
3
3
|
describe Webrat::Session do
|
4
4
|
|
5
|
-
it "should not have a doc_root" do
|
6
|
-
session = Webrat::Session.new
|
7
|
-
session.doc_root.should be_nil
|
8
|
-
end
|
9
|
-
|
10
5
|
it "should expose the current_dom" do
|
11
6
|
session = Webrat::Session.new
|
12
7
|
|
@@ -76,11 +76,4 @@ describe Webrat::RailsAdapter do
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
it "should provide a saved_page_dir" do
|
80
|
-
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:saved_page_dir)
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should provide a doc_root" do
|
84
|
-
Webrat::RailsAdapter.new(mock("integration session")).should respond_to(:doc_root)
|
85
|
-
end
|
86
79
|
end
|
@@ -3,21 +3,6 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
|
3
3
|
describe "contain" do
|
4
4
|
include Webrat::Matchers
|
5
5
|
|
6
|
-
before(:each) do
|
7
|
-
@body = <<-HTML
|
8
|
-
<div id='main'>
|
9
|
-
<div class='inner'>hello, world!</div>
|
10
|
-
<h2>Welcome "Bryan"</h2>
|
11
|
-
<h3>Welcome 'Bryan'</h3>
|
12
|
-
<h4>Welcome 'Bryan"</h4>
|
13
|
-
<ul>
|
14
|
-
<li>First</li>
|
15
|
-
<li>Second</li>
|
16
|
-
</ul>
|
17
|
-
</div>
|
18
|
-
HTML
|
19
|
-
end
|
20
|
-
|
21
6
|
before(:each) do
|
22
7
|
@body = <<-EOF
|
23
8
|
<div id='main'>
|
@@ -34,6 +19,14 @@ describe "contain" do
|
|
34
19
|
it "should call element#matches? when the argument is a regular expression" do
|
35
20
|
@body.should contain(/hello, world/)
|
36
21
|
end
|
22
|
+
|
23
|
+
it "should treat newlines as spaces" do
|
24
|
+
"<div>it takes\ndifferent strokes</div>".should contain("it takes different strokes")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should multiple spaces as a single space" do
|
28
|
+
"<div>it takes different strokes</div>".should contain("it takes different strokes")
|
29
|
+
end
|
37
30
|
end
|
38
31
|
|
39
32
|
describe "asserts for contains," do
|
@@ -22,30 +22,13 @@ describe "save_and_open_page" do
|
|
22
22
|
Launchy::Browser.stub!(:run)
|
23
23
|
|
24
24
|
@file_handle = mock("file handle")
|
25
|
-
File.stub!(:open).
|
25
|
+
File.stub!(:open).and_yield(@file_handle)
|
26
26
|
@file_handle.stub!(:write)
|
27
27
|
end
|
28
28
|
|
29
|
-
it "should
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
save_and_open_page
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should rewrite image paths with double quotes" do
|
38
|
-
@file_handle.should_receive(:write) do |html|
|
39
|
-
html.should =~ %r|"#{webrat_session.doc_root}/images/bar.png"|s
|
40
|
-
end
|
41
|
-
|
42
|
-
save_and_open_page
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should rewrite image paths with single quotes" do
|
46
|
-
@file_handle.should_receive(:write) do |html|
|
47
|
-
html.should =~ %r|'#{webrat_session.doc_root}/images/foo.png'|s
|
48
|
-
end
|
29
|
+
it "should save pages to the directory configured" do
|
30
|
+
Webrat.configuration.stub!(:saved_pages_dir => "path/to/dir")
|
31
|
+
File.should_receive(:open).with("path/to/dir/webrat-1234.html", "w").and_yield(@file_handle)
|
49
32
|
|
50
33
|
save_and_open_page
|
51
34
|
end
|
@@ -63,8 +46,4 @@ describe "save_and_open_page" do
|
|
63
46
|
end.should_not raise_error
|
64
47
|
end
|
65
48
|
|
66
|
-
def filename
|
67
|
-
File.expand_path("./webrat-#{Time.now}.html")
|
68
|
-
end
|
69
|
-
|
70
49
|
end
|
data/vendor/selenium-server.jar
CHANGED
Binary file
|
data/webrat.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{webrat}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.7.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Bryan Helmkamp"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2010-01-17}
|
10
10
|
s.description = %q{Webrat lets you quickly write expressive and robust acceptance tests
|
11
11
|
for a Ruby web application. It supports simulating a browser inside
|
12
12
|
a Ruby process to avoid the performance hit and browser dependency of
|
@@ -337,12 +337,15 @@ Most Ruby web frameworks and testing frameworks are supported.}
|
|
337
337
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
338
338
|
s.add_runtime_dependency(%q<nokogiri>, [">= 1.2.0"])
|
339
339
|
s.add_runtime_dependency(%q<rack>, [">= 1.0"])
|
340
|
+
s.add_runtime_dependency(%q<rack-test>, [">= 0.5.3"])
|
340
341
|
else
|
341
342
|
s.add_dependency(%q<nokogiri>, [">= 1.2.0"])
|
342
343
|
s.add_dependency(%q<rack>, [">= 1.0"])
|
344
|
+
s.add_dependency(%q<rack-test>, [">= 0.5.3"])
|
343
345
|
end
|
344
346
|
else
|
345
347
|
s.add_dependency(%q<nokogiri>, [">= 1.2.0"])
|
346
348
|
s.add_dependency(%q<rack>, [">= 1.0"])
|
349
|
+
s.add_dependency(%q<rack-test>, [">= 0.5.3"])
|
347
350
|
end
|
348
351
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webrat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
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:
|
12
|
+
date: 2010-01-17 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +32,16 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: "1.0"
|
34
34
|
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rack-test
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.5.3
|
44
|
+
version:
|
35
45
|
description: |-
|
36
46
|
Webrat lets you quickly write expressive and robust acceptance tests
|
37
47
|
for a Ruby web application. It supports simulating a browser inside
|