class RspecHtmlFormatter
Constants
- DEFAULT_REPORT_PATH
- REPORT_PATH
- RESOURCE_DIR
- SCREENRECORD_DIR
- SCREENSHOT_DIR
Public Class Methods
new(io_standard_out)
click to toggle source
# File lib/rspec_html_formatter.rb, line 171 def initialize(io_standard_out) create_reports_dir create_screenshots_dir create_screenrecords_dir copy_resources @all_groups = {} @group_level = 0 end
Public Instance Methods
close(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 258 def close(notification) File.open("#{REPORT_PATH}/overview.html", 'w') do |f| @overview = @all_groups @passed = @overview.values.map { |g| g[:passed].size }.inject(0) { |sum, i| sum + i } @failed = @overview.values.map { |g| g[:failed].size }.inject(0) { |sum, i| sum + i } @pending = @overview.values.map { |g| g[:pending].size }.inject(0) { |sum, i| sum + i } duration_values = @overview.values.map { |e| e[:duration] } duration_keys = duration_values.size.times.to_a if duration_values.size < 2 duration_values.unshift(duration_values.first) duration_keys = duration_keys << 1 end @durations = duration_keys.zip(duration_values.map{|d| d.to_f.round(5)}) @summary_duration = duration_values.map{|d| d.to_f.round(5)}.inject(0) { |sum, i| sum + i }.to_s(:rounded, precision: 5) @total_examples = @passed + @failed + @pending template_file = File.read(File.dirname(__FILE__) + '/../templates/overview.erb') f.puts ERB.new(template_file).result(binding) end end
example_failed(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 203 def example_failed(notification) @group_example_failure_count += 1 @group_examples << Example.new(notification.example) end
example_group_finished(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 213 def example_group_finished(notification) @group_level -= 1 if @group_level == 0 File.open("#{REPORT_PATH}/#{notification.group.description.parameterize}.html", 'w') do |f| @passed = @group_example_success_count @failed = @group_example_failure_count @pending = @group_example_pending_count duration_values = @group_examples.map { |e| e.run_time } duration_keys = duration_values.size.times.to_a if duration_values.size < 2 and duration_values.size > 0 duration_values.unshift(duration_values.first) duration_keys = duration_keys << 1 end @title = notification.group.description @durations = duration_keys.zip(duration_values) @summary_duration = duration_values.inject(0) { |sum, i| sum + i }.to_s(:rounded, precision: 5) @examples = Specify.new(@group_examples).process class_map = {passed: 'success', failed: 'danger', pending: 'warning'} statuses = @examples.map { |e| e.status } status = statuses.include?('failed') ? 'failed' : (statuses.include?('passed') ? 'passed' : 'pending') @all_groups[notification.group.description.parameterize] = { group: notification.group.description, examples: @examples.size, status: status, klass: class_map[status.to_sym], passed: statuses.select { |s| s == 'passed' }, failed: statuses.select { |s| s == 'failed' }, pending: statuses.select { |s| s == 'pending' }, duration: @summary_duration } template_file = File.read(File.dirname(__FILE__) + '/../templates/report.erb') f.puts ERB.new(template_file).result(binding) end end end
example_group_started(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 181 def example_group_started(notification) if @group_level == 0 @example_group = {} @group_examples = [] @group_example_count = 0 @group_example_success_count = 0 @group_example_failure_count = 0 @group_example_pending_count = 0 end @group_level += 1 end
example_passed(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 198 def example_passed(notification) @group_example_success_count += 1 @group_examples << Example.new(notification.example) end
example_pending(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 208 def example_pending(notification) @group_example_pending_count += 1 @group_examples << Example.new(notification.example) end
example_started(notification)
click to toggle source
# File lib/rspec_html_formatter.rb, line 194 def example_started(notification) @group_example_count += 1 end
Private Instance Methods
copy_resources()
click to toggle source
# File lib/rspec_html_formatter.rb, line 296 def copy_resources FileUtils.cp_r(File.dirname(__FILE__) + '/../resources', REPORT_PATH) end
create_reports_dir()
click to toggle source
# File lib/rspec_html_formatter.rb, line 283 def create_reports_dir FileUtils.rm_rf(REPORT_PATH) if File.exists?(REPORT_PATH) FileUtils.mkpath(REPORT_PATH) end
create_screenrecords_dir()
click to toggle source
# File lib/rspec_html_formatter.rb, line 292 def create_screenrecords_dir FileUtils.mkdir_p SCREENRECORD_DIR unless File.exists?(SCREENRECORD_DIR) end
create_screenshots_dir()
click to toggle source
# File lib/rspec_html_formatter.rb, line 288 def create_screenshots_dir FileUtils.mkdir_p SCREENSHOT_DIR unless File.exists?(SCREENSHOT_DIR) end