class Capybara::Chromedriver::Logger::Collector

Attributes

errors[R]
filter_levels[R]
filters[R]
log_destination[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 5
def initialize(options = {})
  @errors = []
  @log_destination = options[:log_destination] || $stdout
  @filters = options[:filters] || Capybara::Chromedriver::Logger.filters
  @filter_levels = options[:filter_levels] ||
    Capybara::Chromedriver::Logger.filter_levels
end

Public Instance Methods

flush_and_check_errors!() click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 13
def flush_and_check_errors!
  flush_logs!

  raise_errors_if_needed!
  clear_errors!
end

Private Instance Methods

browser_logs() click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 48
def browser_logs
  logs(:browser)
end
clear_errors!() click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 44
def clear_errors!
  @errors = []
end
flush_logs!() click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 32
def flush_logs!
  browser_logs.each do |log|
    message = Message.new(log)
    
    next if should_filter?(message)

    errors << message if message.error?
    
    log_destination.puts message.to_s
  end
end
logs(type) click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 52
def logs(type)
  Capybara
    .current_session
    .driver.browser
    .manage
    .logs
    .get(type)
end
raise_errors_if_needed!() click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 22
def raise_errors_if_needed!
  return unless Capybara::Chromedriver::Logger.raise_js_errors?
  return if errors.empty?

  formatted_errors = errors.map(&:to_s)
  error_list = formatted_errors.join("\n")

  raise JsError, "Got some JS errors during testing:\n\n#{error_list}"
end
should_filter?(message) click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 61
def should_filter?(message)
  should_filter_by_level?(message) || should_filter_content?(message)
end
should_filter_by_level?(message) click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 65
def should_filter_by_level?(message)
  filter_levels.include?(message.level)
end
should_filter_content?(message) click to toggle source
# File lib/capybara/chromedriver/logger/collector.rb, line 69
def should_filter_content?(message)
  filters.any? { |filter| filter =~ message.message }
end