Sha256: fffd1198dc4620f2c20c247592746f9a9070a6c6cdb3163cf2ffdd28f4b21eae

Contents?: true

Size: 1.41 KB

Versions: 19

Compression:

Stored size: 1.41 KB

Contents

module Capybara
  class << self
    def save_page(html, file_name=nil)
      file_name ||= "capybara-#{Time.new.strftime("%Y%m%d%H%M%S")}#{rand(10**10)}.html"
      name = File.join(*[Capybara.save_and_open_page_path, file_name].compact)

      unless Capybara.save_and_open_page_path.nil? || File.directory?(Capybara.save_and_open_page_path )
        FileUtils.mkdir_p(Capybara.save_and_open_page_path)
      end
      FileUtils.touch(name) unless File.exist?(name)

      tempfile = File.new(name,'w')
      tempfile.write(rewrite_css_and_image_references(html))
      tempfile.close
      tempfile.path
    end

    def save_and_open_page(html, file_name=nil)
      open_in_browser save_page(html, file_name)
    end

  protected

    def open_in_browser(path) # :nodoc
      require "launchy"
      Launchy.open(path)
    rescue LoadError
      warn "Sorry, you need to install launchy (`gem install launchy`) and " <<
        "make sure it's available to open pages with `save_and_open_page`."
    end

    def rewrite_css_and_image_references(response_html) # :nodoc:
      root = Capybara.asset_root
      return response_html unless root
      directories = Dir.new(root).entries.select { |name|
        (root+name).directory? and not name.to_s =~ /^\./
      }
      if not directories.empty?
        response_html.gsub!(/("|')\/(#{directories.join('|')})/, '\1' + root.to_s + '/\2')
      end
      return response_html
    end
  end
end

Version data entries

19 entries across 19 versions & 4 rubygems

Version Path
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/capybara-1.1.4/lib/capybara/util/save_and_open_page.rb
capybara-1.1.4 lib/capybara/util/save_and_open_page.rb
capybara-1.1.3 lib/capybara/util/save_and_open_page.rb
nimboids-capybara-1.1.2 lib/capybara/util/save_and_open_page.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
frameworks-capybara-0.2.0.rc6 vendor/bundle/ruby/1.8/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
frameworks-capybara-0.2.0.rc5 vendor/bundle/ruby/1.8/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
frameworks-capybara-0.2.0.rc4 vendor/bundle/ruby/1.8/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
frameworks-capybara-0.2.0.rc3 vendor/bundle/ruby/1.8/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
frameworks-capybara-0.2.0.rc2 vendor/bundle/ruby/1.8/gems/capybara-1.1.2/lib/capybara/util/save_and_open_page.rb
capybara-1.1.2 lib/capybara/util/save_and_open_page.rb
capybara-1.1.1 lib/capybara/util/save_and_open_page.rb
capybara-1.1.0 lib/capybara/util/save_and_open_page.rb
capybara-1.1.0.rc1 lib/capybara/util/save_and_open_page.rb
capybara-1.0.1 lib/capybara/util/save_and_open_page.rb