diff --git a/lib/capybara.rb b/lib/capybara.rb index 6b395547..645033c6 100644 --- a/lib/capybara.rb +++ b/lib/capybara.rb @@ -15,7 +15,7 @@ module Capybara class InfiniteRedirectError < CapybaraError; end class << self - attr_accessor :asset_root, :app_host, :run_server, :default_host, :always_include_port + attr_accessor :asset_host, :app_host, :run_server, :default_host, :always_include_port attr_accessor :server_host, :server_port, :exact, :match, :exact_options, :visible_text_only attr_accessor :default_selector, :default_wait_time, :ignore_hidden_elements attr_accessor :save_and_open_page_path, :automatic_reload, :raise_server_errors @@ -33,9 +33,10 @@ module Capybara # # === Configurable options # - # [asset_root = String] Where static assets are located, used by save_and_open_page + # [asset_host = String] The hostname for a server from which assets can be loaded, used by save_and_open_page # [app_host = String] The default host to use when giving a relative URL to visit # [always_include_port = Boolean] Whether the Rack server's port should automatically be inserted into every visited URL (Default: false) + # [asset_host = String] Where dynamic assets are hosted - will be prepended to relative asset locations if present (Default: nil) # [run_server = Boolean] Whether to start a Rack server for the given Rack app (Default: true) # [default_selector = :css/:xpath] Methods which take a selector use the given type by default (Default: CSS) # [default_wait_time = Integer] The number of seconds to wait for asynchronous processes to finish (Default: 2) diff --git a/lib/capybara/rails.rb b/lib/capybara/rails.rb index 75d101b5..03ecd60e 100644 --- a/lib/capybara/rails.rb +++ b/lib/capybara/rails.rb @@ -12,7 +12,6 @@ Capybara.app = Rack::Builder.new do end end.to_app -Capybara.asset_root = Rails.root.join('public') Capybara.save_and_open_page_path = Rails.root.join('tmp/capybara') # Override default rack_test driver to respect data-method attributes. diff --git a/lib/capybara/session.rb b/lib/capybara/session.rb index 88ccdca9..663726b7 100644 --- a/lib/capybara/session.rb +++ b/lib/capybara/session.rb @@ -313,10 +313,18 @@ module Capybara def save_page(path=nil) path ||= "capybara-#{Time.new.strftime("%Y%m%d%H%M%S")}#{rand(10**10)}.html" path = File.expand_path(path, Capybara.save_and_open_page_path) if Capybara.save_and_open_page_path + body_to_write = body + + if Capybara.asset_host + parsed = Nokogiri::HTML(body_to_write) + if parsed.css("base").empty? && match = body_to_write.match(/
/) + body_to_write.insert match.end(0), "