Merge branch 'master' of git@github.com:brynary/webrat

Conflicts:

	Rakefile
	lib/webrat/core/page.rb
This commit is contained in:
Bryan Helmkamp 2008-05-12 00:48:01 -04:00
commit 22048b5494
5 changed files with 63 additions and 5 deletions

View File

@ -7,6 +7,7 @@
* Support matching select options by regexp (Patch from Kyle Hargraves) * Support matching select options by regexp (Patch from Kyle Hargraves)
* Support relative links, including href="?foo=bar" (Patch from Kyle Hargraves) * Support relative links, including href="?foo=bar" (Patch from Kyle Hargraves)
* Support links to fully qualified URLs starting with http:// or https:// (Luke Melia) * Support links to fully qualified URLs starting with http:// or https:// (Luke Melia)
* save_and_open_page rewrites css and image references to provide a friendlier debugging experience (Luke Melia)
* Bug fixes * Bug fixes

View File

@ -34,6 +34,7 @@ spec/clicks_link_spec.rb
spec/fills_in_spec.rb spec/fills_in_spec.rb
spec/rcov.opts spec/rcov.opts
spec/reloads_spec.rb spec/reloads_spec.rb
spec/save_and_open_page_spec.rb
spec/selects_spec.rb spec/selects_spec.rb
spec/spec.opts spec/spec.opts
spec/spec_helper.rb spec/spec_helper.rb

View File

@ -56,7 +56,7 @@ end
require 'spec/rake/verify_rcov' require 'spec/rake/verify_rcov'
RCov::VerifyTask.new(:verify_rcov => :rcov) do |t| RCov::VerifyTask.new(:verify_rcov => :rcov) do |t|
t.threshold = 95.7 # Make sure you have rcov 0.7 or higher! t.threshold = 97.1 # Make sure you have rcov 0.7 or higher!
end end
remove_task "default" remove_task "default"

View File

@ -100,7 +100,7 @@ module Webrat
field.set(path) field.set(path)
end end
# Saves the currently loaded page out to RAILS_ROOT/tmp/ and opens it in the default # Saves the page out to RAILS_ROOT/tmp/ and opens it in the default
# web browser if on OS X. Useful for debugging. # web browser if on OS X. Useful for debugging.
# #
# Example: # Example:
@ -111,10 +111,14 @@ module Webrat
filename = "#{session.saved_page_dir}/webrat-#{Time.now.to_i}.html" filename = "#{session.saved_page_dir}/webrat-#{Time.now.to_i}.html"
File.open(filename, "w") do |f| File.open(filename, "w") do |f|
f.write session.response_body f.write rewrite_css_and_image_references(session.response_body)
end end
`open #{filename}` open_in_browser(filename)
end
def open_in_browser(path) # :nodoc
`open #{path}`
end end
# Issues a request for the URL pointed to by a link on the current page, # Issues a request for the URL pointed to by a link on the current page,
@ -286,5 +290,9 @@ module Webrat
raise message raise message
end end
def rewrite_css_and_image_references(response_html) # :nodoc
response_html.gsub(/"\/(stylesheets|images)/, RAILS_ROOT + '/public/\1')
end
end end
end end

View File

@ -0,0 +1,48 @@
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
RAILS_ROOT = "." unless defined?(RAILS_ROOT)
describe "save_and_open_page" do
before do
@session = Webrat::TestSession.new
@session.response_body = <<-HTML
<html><head>
<link href="/stylesheets/foo.css" media="screen" rel="stylesheet" type="text/css" />
</head><body>
<h1>Hello world</h1>
<img src="/images/bar.png" />
</body></html>
HTML
File.stubs(:exist?).returns(true)
Time.stubs(:now).returns(1234)
end
it "should rewrite css rules" do
file_handle = mock()
File.expects(:open).with(filename, 'w').yields(file_handle)
file_handle.expects(:write).with{|html| html =~ %r|#{RAILS_ROOT}/public/stylesheets/foo.css|s }
Webrat::Page.any_instance.stubs(:open_in_browser)
@session.save_and_open_page
end
it "should rewrite image paths" do
file_handle = mock()
File.expects(:open).with(filename, 'w').yields(file_handle)
file_handle.expects(:write).with{|html| html =~ %r|#{RAILS_ROOT}/public/images/bar.png|s }
Webrat::Page.any_instance.stubs(:open_in_browser)
@session.save_and_open_page
end
it "should open the temp file in a browser" do
File.stubs(:open)
Webrat::Page.any_instance.expects(:open_in_browser).with(filename)
@session.save_and_open_page
end
def filename
File.expand_path("./webrat-1234.html")
end
end