Class: Ferrum::Page::Tracing

Inherits:
Object
  • Object
show all
Defined in:
lib/ferrum/page/tracing.rb

Constant Summary collapse

EXCLUDED_CATEGORIES =
%w[*].freeze
SCREENSHOT_CATEGORIES =
%w[disabled-by-default-devtools.screenshot].freeze
INCLUDED_CATEGORIES =
%w[devtools.timeline v8.execute disabled-by-default-devtools.timeline
disabled-by-default-devtools.timeline.frame toplevel blink.console
blink.user_timing latencyInfo disabled-by-default-devtools.timeline.stack
disabled-by-default-v8.cpu_profiler disabled-by-default-v8.cpu_profiler.hires].freeze
DEFAULT_TRACE_CONFIG =
{
  includedCategories: INCLUDED_CATEGORIES,
  excludedCategories: EXCLUDED_CATEGORIES
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(page) ⇒ Tracing

Returns a new instance of Tracing.



17
18
19
20
# File 'lib/ferrum/page/tracing.rb', line 17

def initialize(page)
  @page = page
  @subscribed_tracing_complete = false
end

Instance Method Details

#record(path: nil, encoding: :binary, timeout: nil, trace_config: nil, screenshots: false) ⇒ String, true

Accepts block, records trace and by default returns trace data from Tracing.tracingComplete event as output.

Parameters:

Returns:

  • (String, true)

    The trace data from the Tracing.tracingComplete event. When path is specified returns true and stores trace data into file.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/ferrum/page/tracing.rb', line 48

def record(path: nil, encoding: :binary, timeout: nil, trace_config: nil, screenshots: false)
  @path = path
  @encoding = encoding
  @pending = Concurrent::IVar.new
  trace_config ||= DEFAULT_TRACE_CONFIG.dup

  if screenshots
    included = trace_config.fetch(:includedCategories, [])
    trace_config.merge!(includedCategories: included | SCREENSHOT_CATEGORIES)
  end

  subscribe_tracing_complete

  start(trace_config)
  yield
  stop

  @pending.value!(timeout || @page.timeout)
end