class Selenium::WebDriver::BiDi::LogInspector

Constants

EVENTS
LOG_LEVEL

Public Class Methods

new(driver, browsing_context_ids = nil) click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 43
def initialize(driver, browsing_context_ids = nil)
  WebDriver.logger.deprecate('LogInspector class',
                             'Script class with driver.script',
                             id: :log_inspector)

  unless driver.capabilities.web_socket_url
    raise Error::WebDriverError,
          'WebDriver instance must support BiDi protocol'
  end

  @bidi = driver.bidi
  @bidi.session.subscribe('log.entryAdded', browsing_context_ids)
end

Public Instance Methods

on_console_entry(filter_by = nil, &block) click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 57
def on_console_entry(filter_by = nil, &block)
  check_valid_filter(filter_by)

  on_log do |params|
    type = params['type']
    console_log_events(params, filter_by, &block) if type.eql?('console')
  end
end
on_javascript_exception(&block) click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 75
def on_javascript_exception(&block)
  on_log do |params|
    type = params['type']
    javascript_log_events(params, FilterBy.log_level('error'), &block) if type.eql?('javascript')
  end
end
on_javascript_log(filter_by = nil, &block) click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 66
def on_javascript_log(filter_by = nil, &block)
  check_valid_filter(filter_by)

  on_log do |params|
    type = params['type']
    javascript_log_events(params, filter_by, &block) if type.eql?('javascript')
  end
end
on_log(filter_by = nil, &) { |params| ... } click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 82
def on_log(filter_by = nil, &)
  unless filter_by.nil?
    check_valid_filter(filter_by)

    on(:entry_added) do |params|
      yield(params) if params['level'] == filter_by.level
    end
    return
  end

  on(:entry_added, &)
end

Private Instance Methods

check_valid_filter(filter_by) click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 102
def check_valid_filter(filter_by)
  return if filter_by.nil? || filter_by.instance_of?(FilterBy)

  raise "Pass valid FilterBy object. Received: #{filter_by.inspect}"
end
console_log_events(params, filter_by) { |event| ... } click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 108
def console_log_events(params, filter_by)
  event = ConsoleLogEntry.new(
    level: params['level'],
    text: params['text'],
    timestamp: params['timestamp'],
    type: params['type'],
    method: params['method'],
    realm: params['realm'],
    args: params['args'],
    stack_trace: params['stackTrace']
  )

  unless filter_by.nil?
    yield(event) if params['level'] == filter_by.level
    return
  end

  yield(event)
end
javascript_log_events(params, filter_by) { |event| ... } click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 128
def javascript_log_events(params, filter_by)
  event = JavascriptLogEntry.new(
    level: params['level'],
    text: params['text'],
    timestamp: params['timestamp'],
    type: params['type'],
    stack_trace: params['stackTrace']
  )

  unless filter_by.nil?
    yield(event) if params['level'] == filter_by.level
    return
  end

  yield(event)
end
on(event, &) click to toggle source
# File lib/selenium/webdriver/bidi/log_inspector.rb, line 97
def on(event, &)
  event = EVENTS[event] if event.is_a?(Symbol)
  @bidi.add_callback("log.#{event}", &)
end