class Baraviz::ScreenshotObserver

Public Class Methods

new(session, screenshot_dir) click to toggle source
Calls superclass method Baraviz::Observer::new
# File lib/baraviz/screenshot_observer.rb, line 6
def initialize session, screenshot_dir
  @screenshots = {}
  @dir = screenshot_dir
  super session
end

Public Instance Methods

make_node(v) click to toggle source
# File lib/baraviz/screenshot_observer.rb, line 26
def make_node v
  uri = URI.parse v.to_s
  RGL::DOT::Node.new({'name' => v, 'label' => uri.path, 'image' => @screenshots[v], 'URL' => @screenshots[v]}, RGL::DOT::NODE_OPTS + ['image'])
end
observe_page(page) click to toggle source
Calls superclass method Baraviz::Observer#observe_page
# File lib/baraviz/screenshot_observer.rb, line 12
def observe_page page
  @screenshots[page] ||= take_screenshot
  super
end
take_screenshot() click to toggle source
# File lib/baraviz/screenshot_observer.rb, line 17
def take_screenshot
  path = File.join @dir, "#{Capybara.current_url.gsub(/[^A-Za-z0-9_\-]/, '-')}.png"
  result = Capybara::Screenshot.registered_drivers.fetch(Capybara.current_driver) do |driver_name|
    warn "capybara-screenshot could not detect a screenshot driver for '#{Capybara.current_driver}'. Saving with default with unknown results."
    Capybara::Screenshot.registered_drivers[:default]
  end.call(Capybara.page.driver, path)
  if (result == :not_supported) then nil else File.basename(path) end
end