class Screenpress::Saver
Attributes
capybara[R]
filename[R]
page[R]
Public Class Methods
new(filename, capybara = nil, page = nil)
click to toggle source
# File lib/screenpress/saver.rb, line 7 def initialize(filename, capybara = nil, page = nil) @capybara = capybara || Capybara @page = page || @capybara.page @filename = filename end
Public Instance Methods
comparator()
click to toggle source
# File lib/screenpress/saver.rb, line 71 def comparator case Screenpress.config.comparator when "bits" Screenpress::Compare::Bits when "phashion", "phash" Screenpress::Compare::Phashion when "magick" raise "ImageMagick comparator not yet implemented" when "perceptualdiff" raise "perceptualdiff comparator not yet implemented" else raise "Unknown comparator" end end
ensure_directory()
click to toggle source
# File lib/screenpress/saver.rb, line 86 def ensure_directory folder = File.dirname(filename) return if File.directory?(folder) FileUtils.mkdir_p(folder) end
same?(filename, tmp_file)
click to toggle source
# File lib/screenpress/saver.rb, line 43 def same?(filename, tmp_file) return !File.exists?(tmp_file) if !File.exists?(filename) compare = comparator.new(filename, tmp_file) if compare.respond_to?(:difference) difference = compare.difference if compare.respond_to?(:threshold) threshold = compare.threshold else threshold = Screenpress.config.threshold || 0 end if difference > threshold puts " Screenpress #{filename} different: #{difference} > #{threshold}" return false else puts " Screenpress #{filename} same: #{difference} <= #{threshold}" return true end else if compare.same? return true else puts " Screenpress #{filename} different!" return false end end end
save()
click to toggle source
# File lib/screenpress/saver.rb, line 13 def save # if current_path empty then nothing to screen shot as browser has not loaded any URL return false if capybara.current_path.to_s.empty? save_screenshot end
save_screenshot()
click to toggle source
# File lib/screenpress/saver.rb, line 19 def save_screenshot tmp_file = self.tmp_filename # settings to nil because of issues in some version of capybara old_path = Capybara.save_and_open_page_path Capybara.save_and_open_page_path = nil ensure_directory return false unless Screenpress::Saver::Proxy.save!(capybara.current_driver, page.driver, tmp_file) # is it different? if same?(filename, tmp_file) File.delete(tmp_file) else FileUtils.mv(tmp_file, filename) end return true rescue Exception => e File.delete(tmp_file) if tmp_file && File.exists?(tmp_file) raise e end
tmp_filename()
click to toggle source
# File lib/screenpress/saver.rb, line 92 def tmp_filename tmp_dir = Screenpress.config.full_tmp_path.to_s tmp_file = "#{tmp_dir}/screenpress_#{File.basename(filename)}" tmp_file end