lib/bauxite/loggers/html.rb in bauxite-0.6.8 vs lib/bauxite/loggers/html.rb in bauxite-0.6.9

- old
+ new

@@ -33,60 +33,20 @@ # [<tt>html_package</tt>] If set, embed captures into the HTML report file # using the data URI scheme (base64 encoded). The # captures embedded into the report are deleted from # the filesystem. # -class Bauxite::Loggers::HtmlLogger < Bauxite::Loggers::NullLogger +class Bauxite::Loggers::HtmlLogger < Bauxite::Loggers::ReportLogger # Constructs a new null logger instance. # def initialize(options) super(options) - @data = [] @file = options[:html] || 'test.html' @imgs = [] end - # Logs the specified string. - # - # +type+, if specified, should be one of +:error+, +:warning+, - # +:info+ (default), +:debug+. - # - def log(s, type = :info) - end - - # Echoes the raw action text. - def log_cmd(action) - ret = yield || false - ensure - status = case ret; when nil; :error; when false; :skip; else :ok; end - - test_name = action.ctx.variables['__TEST__'] || 'Main' - test = @data.find { |t| t[:name] == test_name } - unless test - test = { :name => test_name, :actions => [] } - @data << test - end - - capture = action.ctx.variables['__CAPTURE__'] - if capture == @last_capture - capture = nil - else - @last_capture = capture - end - - test[:actions] << { - :cmd => action.cmd, - :args => action.args(true), - :action => action, - :status => status, - :capture => capture - } - - ret - end - # Completes the log execution. # def finalize(ctx) output = ctx.variables['__OUTPUT__'] || '' @@ -95,31 +55,33 @@ <head> <style type='text/css'> body { font: 10pt sans-serif; } .action div { display: inline-block; } .cmd { width: 100px } - .status { width: 100px; float: right; text-align: center; font-weight: bold } + .status { float: right; text-align: center; } + .status .text { width: 100px; font-weight: bold } .test { background-color: #DFDFFF; margin-top: 20px } - .ok .status { background-color: #DFFFDF } - .error .status { background-color: #FFDFDF } - .skip .status { background-color: #FFDFFF } + .ok .status .text { background-color: #DFFFDF } + .error .status .text { background-color: #FFDFDF } + .skip .status .text { background-color: #FFDFFF } .capture { border: 1px solid black } .capture img { max-width: 100% } .odd { background-color: #EEEEEE } .summary th { background-color: #DFDFFF; text-align: left } .summary td { cursor: pointer; } + .top { position: absolute; top: 0px; right: 0px; background-color: #DFDFFF; padding: 5px; border-radius: 0px 0px 0px 5px; } </style> <script type='text/javascript'> function show(target) { var e = document.getElementById(target+'_content'); window.location.href = '#'+target; } </script> </head> <body>" - + html << _d(2, "<div class='top'>Created using <a href='https://github.com/pzavolinsky/bauxite'>bauxite</a> on #{Time.new}</div>") if ctx.tests.any? html << _d(2, "<h1>Test Summary</h1>") html << _d(2, "<table class='summary'>") html << _d(3, "<tr><th>Name</th><th>Time</th><th>Status</th><th>Error</th></tr>") @@ -137,17 +99,20 @@ html << _d(2, "<h1>Test Details</h1>") @data.each do |test| name = test[:name] status = test[:actions].find { |a| a[:status] == :error } ? :error : :ok html << _d(2, "<a name='#{name}'></a>") - html << _d(2, "<div class='test #{status}'>#{name}<div class='status'>#{status.upcase}</div></div>") + html << _d(2, "<div class='test #{status}'>#{name}<div class='status'><div class='text'>#{status.upcase}</div></div></div>") html << _d(2, "<div id='#{name}_content' class='test-content'>") test[:actions].each_with_index do |action,idx| html << _d(3, "<div class='action #{action[:status]} #{(idx % 2) == 1 ? 'odd' : 'even'}'>") html << _d(4, "<div class='cmd'>#{action[:cmd]}</div>") html << _d(4, "<div class='args'>#{action[:args].join(' ')}</div>") - html << _d(4, "<div class='status'>#{action[:status].upcase}</div>") + html << _d(4, "<div class='status'>") + html << _d(5, "<div class='time'>(#{action[:time].round(2).to_s}s)</div>") + html << _d(5, "<div class='text'>#{action[:status].upcase}</div>") + html << _d(4, "</div>") html << _d(3, "</div>") capture = action[:capture] if capture html << _d(3, "<div class='capture'>#{_img(output, capture)}</div>") end \ No newline at end of file