class HtmlGenerator

Public Class Methods

new(data, externalDetails) click to toggle source
# File lib/html_generator.rb, line 6
def initialize data, externalDetails
  @baseData = JSON.parse(data)
  external = JSON.parse(externalDetails)
  @externalDetails = external['userDetails']
end

Public Instance Methods

createHtml() click to toggle source
# File lib/html_generator.rb, line 12
def createHtml
  summary = @baseData['summary']
  currentTime = Time.now.strftime("%A, %b %d %Y %r %z")
  suits = @baseData['suits']
  groupNames = @baseData['groupNames']

  footer = @externalDetails['footerMessage']
  outPath = @externalDetails['outPath']
  documentation = @externalDetails['documentation']

  path = 'reports'

  if(outPath != '')
    path = outPath
  end

  Dir.mkdir(path) unless File.exists?(path)
  Dir.mkdir(path + '/refs') unless File.exists?(path + '/refs')

  cssFile = File.expand_path(File.dirname(__FILE__)) + "/refs/main.min.css"
  jsFile = File.expand_path(File.dirname(__FILE__)) + "/refs/main.min.js"

  File.open path + "/refs/main.min.css", "w" do |c|
    c << IO.read(cssFile)
  end

  File.open path + "/refs/main.min.js", "w" do |c|
    c << IO.read(jsFile)
  end

  templateFile = File.expand_path(File.dirname(__FILE__)) + "/index.erb"
  File.open path + "/index.html", "w" do |f|
    f << ERB.new(IO.read(templateFile), nil, '>', 'output').result(binding)
  end

  File.open path + "/summary.json", "w" do |f|
    f.write summary.to_json
  end

  puts "\n"
  puts "---------------------------------------------------------"
  puts "Total Suits      : #{summary['groupCount']}"
  puts "Total Tests      : #{summary['testCount']}"
  puts "Total Passed     : #{summary['passCount']}"
  puts "Total Failed     : #{summary['failureCount']}"
  puts "Total Pending    : #{summary['pendingCount']}"
  puts "Total Time Taken : #{summary['duration']}"
  puts "---------------------------------------------------------"

  if(documentation)
    puts "=====================Exceptions=========================="
    cnt = 0
    @baseData['failed'].each do |failedTest|
      exMessage = failedTest['exception']['message'].gsub("\n","")
      exType = failedTest['exception']['type']
      puts "\n#{cnt + 1}. #{failedTest['fullName']}"
      puts "Exception : #{exType}"
      puts "Message   : #{exMessage}"
      cnt = cnt + 1
      puts "\n"
    end
    puts "========================================================="
  end
end