module Cucumber::Blanket

Constants

VERSION

Public Class Methods

coverage_data() click to toggle source
# File lib/cucumber/blanket.rb, line 10
def coverage_data
  @@coverage_data
end
coverage_is_setup?() click to toggle source
# File lib/cucumber/blanket.rb, line 38
def coverage_is_setup?
  @page.evaluate_script("window.CUCUMBER_BLANKET.is_setup") rescue false
end
data_ready?() click to toggle source
# File lib/cucumber/blanket.rb, line 42
def data_ready?
  @page.evaluate_script("window.CUCUMBER_BLANKET.done") rescue false
end
extract_from(page) click to toggle source

Grab code coverage from the frontend Currently this adds something like a few second or more to every scenario The waits are lame but here’s what it’s trying to avoid

unknown error: You must call blanket.setupCoverage() first.
   (Session info: chrome=31.0.1650.63)
   (Driver info: chromedriver=2.6.232908,platform=Mac OS X 10.9.1 x86_64) (Selenium::WebDriver::Error::UnknownError)
# File lib/cucumber/blanket.rb, line 28
def extract_from page
  @page = page
  sleep(0.2) until coverage_is_setup?
  page.evaluate_script("blanket.onTestsDone();")
  sleep(0.2) until data_ready?
  page_data = page.evaluate_script("window.CUCUMBER_BLANKET")
  @@coverage_data.accrue! page_data
  return page_data
end
method_missing(*args) click to toggle source
# File lib/cucumber/blanket.rb, line 18
def method_missing *args
  self.coverage_data.send(*args)
end
percent() click to toggle source
# File lib/cucumber/blanket.rb, line 46
def percent
  total_lines = 0
  covered_lines = 0
  self.files.each do |filename, linedata|
    linedata.compact.each do |cov_stat|
      if cov_stat > 0
        covered_lines += 1
      end
      total_lines += 1
    end
  end
  if total_lines > 0
    return ((covered_lines.to_f / total_lines)*100).round(2)
  else
    return 0.0
  end
end
reset!() click to toggle source
# File lib/cucumber/blanket.rb, line 14
def reset!
  @@coverage_data = CoverageData.new
end
write_html_report(path) click to toggle source
# File lib/cucumber/blanket.rb, line 64
def write_html_report path
  generator = ReportGenerator.new(:html, self)
  File.open(path, 'w') do |file|
    file.write(generator.render)
  end
end