From 7604f9bce0a163a56bf258de7e704fc1151b34df Mon Sep 17 00:00:00 2001 From: Oli Peate Date: Wed, 11 May 2022 09:52:49 +0100 Subject: [PATCH] Support custom save_path option Allows paths other than Capybara.save_path to be specified --- lib/capybara/cuprite/driver.rb | 2 +- spec/lib/driver_spec.rb | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 spec/lib/driver_spec.rb diff --git a/lib/capybara/cuprite/driver.rb b/lib/capybara/cuprite/driver.rb index f0d4729f..c88923ed 100644 --- a/lib/capybara/cuprite/driver.rb +++ b/lib/capybara/cuprite/driver.rb @@ -33,7 +33,7 @@ def initialize(app, options = {}) @screen_size = @options.delete(:screen_size) @screen_size ||= DEFAULT_MAXIMIZE_SCREEN_SIZE - @options[:save_path] = Capybara.save_path.to_s if Capybara.save_path + @options[:save_path] ||= Capybara.save_path.to_s if Capybara.save_path ENV["FERRUM_DEBUG"] = "true" if ENV["CUPRITE_DEBUG"] diff --git a/spec/lib/driver_spec.rb b/spec/lib/driver_spec.rb new file mode 100644 index 00000000..169be96d --- /dev/null +++ b/spec/lib/driver_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +describe Capybara::Cuprite::Driver do + describe "save_path configuration" do + it "defaults to the Capybara save path" do + driver = with_capybara_save_path("/tmp/capybara-save-path") do + described_class.new(nil) + end + + expect(driver.browser.options).to include(save_path: "/tmp/capybara-save-path") + end + + it "allows a custom path to be specified" do + custom_path = Dir.mktmpdir + + driver = with_capybara_save_path("/tmp/capybara-save-path") do + described_class.new(nil, { save_path: custom_path }) + end + + expect(driver.browser.options).to include(save_path: custom_path) + end + end + + private + + def with_capybara_save_path(path) + original_capybara_save_path = Capybara.save_path + Capybara.save_path = path + yield + ensure + Capybara.save_path = original_capybara_save_path + end +end