2016-03-08 00:52:19 +00:00
|
|
|
# frozen_string_literal: true
|
2012-07-24 07:02:05 +00:00
|
|
|
Capybara::SpecHelper.spec '#save_page' do
|
|
|
|
let(:alternative_path) { File.join(Dir.pwd, "save_and_open_page_tmp") }
|
|
|
|
before do
|
|
|
|
@session.visit("/foo")
|
|
|
|
end
|
|
|
|
|
|
|
|
after do
|
2016-04-05 16:33:19 +00:00
|
|
|
Capybara.save_path = nil
|
2012-07-24 07:02:05 +00:00
|
|
|
Dir.glob("capybara-*.html").each do |file|
|
|
|
|
FileUtils.rm(file)
|
|
|
|
end
|
|
|
|
FileUtils.rm_rf alternative_path
|
|
|
|
end
|
|
|
|
|
|
|
|
it "saves the page in the root directory" do
|
|
|
|
@session.save_page
|
|
|
|
path = Dir.glob("capybara-*.html").first
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(File.read(path)).to include("Another World")
|
2012-07-24 07:02:05 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "generates a sensible filename" do
|
|
|
|
@session.save_page
|
2014-08-24 11:48:20 +00:00
|
|
|
filename = Dir.glob("capybara-*.html").first
|
|
|
|
expect(filename).to match(/^capybara-\d+\.html$/)
|
2012-07-24 07:02:05 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "can store files in a specified directory" do
|
2016-04-05 16:33:19 +00:00
|
|
|
Capybara.save_path = alternative_path
|
2012-07-24 07:02:05 +00:00
|
|
|
@session.save_page
|
|
|
|
path = Dir.glob(alternative_path + "/capybara-*.html").first
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(File.read(path)).to include("Another World")
|
2012-07-24 07:02:05 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "uses the given filename" do
|
|
|
|
@session.save_page("capybara-001122.html")
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(File.read("capybara-001122.html")).to include("Another World")
|
2012-07-24 07:02:05 +00:00
|
|
|
end
|
|
|
|
|
2016-04-05 16:33:19 +00:00
|
|
|
it "can store files in a specified directory with a given filename" do
|
|
|
|
Capybara.save_path = alternative_path
|
|
|
|
@session.save_page("capybara-001133.html")
|
|
|
|
path = alternative_path + "/capybara-001133.html"
|
|
|
|
expect(File.read(path)).to include("Another World")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "can store files in a specified directory with a given relative filename" do
|
|
|
|
Capybara.save_path = alternative_path
|
|
|
|
@session.save_page("tmp/capybara-001144.html")
|
|
|
|
path = alternative_path + "/tmp/capybara-001144.html"
|
|
|
|
expect(File.read(path)).to include("Another World")
|
|
|
|
end
|
|
|
|
|
2013-08-26 12:54:30 +00:00
|
|
|
it "returns an absolute path in pwd" do
|
2012-07-24 07:02:05 +00:00
|
|
|
result = @session.save_page
|
2013-08-26 12:54:30 +00:00
|
|
|
path = File.expand_path(Dir.glob("capybara-*.html").first, Dir.pwd)
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(result).to eq(path)
|
2013-08-26 12:54:30 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "returns an absolute path in given directory" do
|
2016-04-05 16:33:19 +00:00
|
|
|
Capybara.save_path = alternative_path
|
2013-08-26 12:54:30 +00:00
|
|
|
result = @session.save_page
|
|
|
|
path = File.expand_path(Dir.glob(alternative_path + "/capybara-*.html").first, alternative_path)
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(result).to eq(path)
|
2012-07-24 07:02:05 +00:00
|
|
|
end
|
2013-02-09 09:33:49 +00:00
|
|
|
|
|
|
|
context "asset_host contains a string" do
|
|
|
|
before { Capybara.asset_host = "http://example.com" }
|
|
|
|
after { Capybara.asset_host = nil }
|
|
|
|
|
|
|
|
it "prepends base tag with value from asset_host to the head" do
|
|
|
|
@session.visit("/with_js")
|
|
|
|
path = @session.save_page
|
|
|
|
|
|
|
|
result = File.read(path)
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(result).to include("<head><base href='http://example.com' />")
|
2013-02-09 09:33:49 +00:00
|
|
|
end
|
|
|
|
|
2013-02-15 19:16:00 +00:00
|
|
|
it "doesn't prepend base tag to pages when asset_host is nil" do
|
|
|
|
Capybara.asset_host = nil
|
|
|
|
@session.visit("/with_js")
|
|
|
|
path = @session.save_page
|
|
|
|
|
|
|
|
result = File.read(path)
|
2014-08-24 11:48:20 +00:00
|
|
|
expect(result).to include('<html')
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(result).not_to include("http://example.com")
|
2013-02-15 19:16:00 +00:00
|
|
|
end
|
|
|
|
|
2013-02-09 09:33:49 +00:00
|
|
|
it "doesn't prepend base tag to pages which already have it" do
|
|
|
|
@session.visit("/with_base_tag")
|
|
|
|
path = @session.save_page
|
|
|
|
|
|
|
|
result = File.read(path)
|
2014-08-24 11:48:20 +00:00
|
|
|
expect(result).to include('<html')
|
2013-11-14 17:43:36 +00:00
|
|
|
expect(result).not_to include("http://example.com")
|
2013-02-09 09:33:49 +00:00
|
|
|
end
|
2015-05-04 02:13:35 +00:00
|
|
|
|
|
|
|
it "executes successfully even if the page is missing a <head>" do
|
|
|
|
@session.visit("/with_simple_html")
|
|
|
|
path = @session.save_page
|
|
|
|
|
|
|
|
result = File.read(path)
|
|
|
|
expect(result).to include("Bar")
|
|
|
|
end
|
2013-02-09 09:33:49 +00:00
|
|
|
end
|
2012-07-24 07:02:05 +00:00
|
|
|
end
|