save_and_open_page rewrites css and image references to provide a friendlier debugging experience
This commit is contained in:
parent
c7765a1e6c
commit
3bc2af2c14
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
2
Rakefile
2
Rakefile
@ -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.5 # Make sure you have rcov 0.7 or higher!
|
t.threshold = 96.3
|
||||||
end
|
end
|
||||||
|
|
||||||
remove_task "default"
|
remove_task "default"
|
||||||
|
@ -99,7 +99,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:
|
||||||
@ -108,10 +108,15 @@ module Webrat
|
|||||||
return unless File.exist?(RAILS_ROOT + "/tmp")
|
return unless File.exist?(RAILS_ROOT + "/tmp")
|
||||||
|
|
||||||
filename = "webrat-#{Time.now.to_i}.html"
|
filename = "webrat-#{Time.now.to_i}.html"
|
||||||
File.open(RAILS_ROOT + "/tmp/#{filename}", "w") do |f|
|
path = RAILS_ROOT + "/tmp/#{filename}"
|
||||||
f.write response.body
|
File.open(path, "w") do |f|
|
||||||
|
f.write rewrite_css_and_image_references(response.body)
|
||||||
end
|
end
|
||||||
`open tmp/#{filename}`
|
open_in_browser(path)
|
||||||
|
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,
|
||||||
@ -292,5 +297,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
|
45
spec/save_and_open_spec.rb
Normal file
45
spec/save_and_open_spec.rb
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
||||||
|
|
||||||
|
RAILS_ROOT = "." unless defined?(RAILS_ROOT)
|
||||||
|
|
||||||
|
describe "save_and_open_page" do
|
||||||
|
before do
|
||||||
|
@session = ActionController::Integration::Session.new
|
||||||
|
@response = mock
|
||||||
|
@session.stubs(:response).returns(@response)
|
||||||
|
@response.stubs(:body).returns(<<-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(RAILS_ROOT + "/tmp/webrat-1234.html", '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(RAILS_ROOT + "/tmp/webrat-1234.html", '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(RAILS_ROOT + "/tmp/webrat-1234.html")
|
||||||
|
@session.save_and_open_page
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user