Class Spec::Runner::Formatter::HtmlFormatter
In: lib/spec/runner/formatter/html_formatter.rb
Parent: BaseTextFormatter

Methods

Public Class methods

[Source]

   # File lib/spec/runner/formatter/html_formatter.rb, line 5
5:         def initialize(output, dry_run=false, colour=false)
6:           super
7:           @current_spec_number = 0
8:           @current_context_number = 0
9:         end

Public Instance methods

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 18
18:         def add_context(name, first)
19:           @current_context_number += 1
20:           unless first
21:             @output.puts "  </dl>"
22:             @output.puts "</div>"
23:           end
24:           @output.puts "<div class=\"context\">"
25:           @output.puts "  <dl>"
26:           @output.puts "  <dt id=\"context_#{@current_context_number}\">#{name}</dt>"
27:           STDOUT.flush
28:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 79
79:         def dump_failure(counter, failure)
80:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 82
82:         def dump_summary(duration, spec_count, failure_count)
83:           if @dry_run
84:             totals = "This was a dry-run"
85:           else
86:             totals = "#{spec_count} specification#{'s' unless spec_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
87:           end
88:           @output.puts "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{duration} seconds</strong>\";</script>"
89:           @output.puts "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{totals}\";</script>"
90:           @output.puts "</div>"
91:           @output.puts "</body>"
92:           @output.puts "</html>"
93:           STDOUT.flush
94:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 75
75:         def escape(string)
76:           string.gsub(/&/n, '&amp;').gsub(/\"/n, '&quot;').gsub(/>/n, '&gt;').gsub(/</n, '&lt;')
77:         end

Override this method if you wish to output extra HTML for a failed spec. For example, you could output links to images or other files produced during the specs. Example:

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 67
67:         def extra_failure_content
68:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 70
70:         def move_progress
71:           percent_done = @spec_count == 0 ? 100.0 : (@current_spec_number.to_f / @spec_count.to_f * 1000).to_i / 10.0
72:           @output.puts "    <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>"
73:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 48
48:         def spec_failed(name, counter, failure)
49:           @output.puts "    <script type=\"text/javascript\">makeRed('header');</script>"
50:           @output.puts "    <script type=\"text/javascript\">makeRed('context_#{@current_context_number}');</script>"
51:           move_progress
52:           @output.puts "    <dd class=\"spec failed\">"
53:           @output.puts "      <span class=\"failed_spec_name\">#{escape(@current_spec)}</span>"
54:           @output.puts "      <div class=\"failure\" id=\"failure_#{counter}\">"
55:           @output.puts "        <div class=\"message\"><pre>#{escape(failure.exception.message)}</pre></div>" unless failure.exception.nil?
56:           @output.puts "        <div class=\"backtrace\"><pre>#{format_backtrace(failure.exception.backtrace)}</pre></div>" unless failure.exception.nil?
57:           extra_failure_content
58:           @output.puts "      </div>"
59:           @output.puts "    </dd>"
60:           STDOUT.flush
61:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 42
42:         def spec_passed(name)
43:           move_progress
44:           @output.puts "    <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{escape(@current_spec)}</span></dd>"
45:           STDOUT.flush
46:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 36
36:         def spec_started(name)
37:           @current_spec = name
38:           @current_spec_number += 1
39:           STDOUT.flush
40:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 11
11:         def start(spec_count)
12:           @spec_count = spec_count
13: 
14:           @output.puts @@header
15:           STDOUT.flush
16:         end

[Source]

    # File lib/spec/runner/formatter/html_formatter.rb, line 30
30:         def start_dump
31:           @output.puts "  </dl>"
32:           @output.puts "</div>"
33:           STDOUT.flush
34:         end

[Validate]