class Jscov::Collector
Public Class Methods
new(session, logs)
click to toggle source
# File lib/jscov/collector.rb, line 6 def initialize(session, logs) @session = session || Capybara.current_session @logs = logs end
Public Instance Methods
browser_logs()
click to toggle source
# File lib/jscov/collector.rb, line 33 def browser_logs logs = @session.driver.browser.manage.logs.get(:browser) (@logs || []) + logs end
coverages()
click to toggle source
# File lib/jscov/collector.rb, line 11 def coverages return [] unless selenium? dump_coverage browser_logs .map { |log| parse(log.message) } .compact .map { |cov| Coverage.new(cov) } end
dump_coverage()
click to toggle source
# File lib/jscov/collector.rb, line 26 def dump_coverage code = <<~JS typeof __jscov_dumpCoverage === 'function' && __jscov_dumpCoverage() JS @session.execute_script(code) end
parse(message)
click to toggle source
# File lib/jscov/collector.rb, line 38 def parse(message) json_string = message[/__jscov" (.*)/, 1] return if json_string.nil? json = JSON.parse(json_string) JSON.parse(json) rescue JSON::ParserError nil end
selenium?()
click to toggle source
# File lib/jscov/collector.rb, line 22 def selenium? @session.driver.browser.respond_to?(:manage) end