turnip_formatter 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rspec/core/formatters/turnip_formatter.rb +7 -34
- data/lib/turnip_formatter/ext/turnip/rspec.rb +2 -0
- data/lib/turnip_formatter/printer/index.rb +29 -0
- data/lib/turnip_formatter/printer/runtime_error.rb +41 -0
- data/lib/turnip_formatter/printer/scenario.rb +20 -0
- data/lib/turnip_formatter/printer/step.rb +34 -0
- data/lib/turnip_formatter/printer/step_extra_args.rb +21 -0
- data/lib/turnip_formatter/printer/tab_feature_statistics.rb +47 -0
- data/lib/turnip_formatter/printer/tab_speed_statistics.rb +34 -0
- data/lib/turnip_formatter/printer/tab_tag_statistics.rb +72 -0
- data/lib/turnip_formatter/printer.rb +34 -0
- data/lib/turnip_formatter/template/exception.erb +9 -25
- data/lib/turnip_formatter/template/index.erb +65 -0
- data/lib/turnip_formatter/template/runtime_exception.erb +16 -0
- data/lib/turnip_formatter/template/scenario.erb +9 -8
- data/lib/turnip_formatter/template/step.erb +4 -0
- data/lib/turnip_formatter/template/tab_feature_statistics.erb +24 -0
- data/lib/turnip_formatter/template/tab_speed_statistics.erb +18 -0
- data/lib/turnip_formatter/template/tab_tag_statistics.erb +24 -0
- data/lib/turnip_formatter/template/turnip_formatter.js +51 -0
- data/lib/turnip_formatter/{formatter.scss → template/turnip_formatter.scss} +0 -0
- data/lib/turnip_formatter/template.rb +21 -254
- data/lib/turnip_formatter/version.rb +1 -1
- data/lib/turnip_formatter.rb +1 -1
- data/spec/rspec/core/formatters/turnip_formatter_spec.rb +11 -28
- data/spec/turnip_formatter/printer/scenario_spec.rb +33 -0
- data/spec/turnip_formatter/printer/step_extra_args_spec.rb +32 -0
- data/spec/turnip_formatter/printer/step_spec.rb +86 -0
- data/spec/turnip_formatter/printer/tab_feature_statistics_spec.rb +83 -0
- data/spec/turnip_formatter/printer/tab_speed_statistics_spec.rb +51 -0
- data/spec/turnip_formatter/printer/tab_tag_statistics_spec.rb +90 -0
- data/spec/turnip_formatter/template_spec.rb +0 -173
- data/turnip_formatter.gemspec +2 -0
- metadata +63 -14
- data/lib/turnip_formatter/formatter.css +0 -205
- data/lib/turnip_formatter/template/scenario_tags.erb +0 -5
- data/lib/turnip_formatter/template/tab/feature_statistics.rb +0 -78
- data/lib/turnip_formatter/template/tab/speed_statistics.rb +0 -61
- data/lib/turnip_formatter/template/tab/tag_statistics.rb +0 -101
- data/spec/turnip_formatter/template/tab/feature_statistics_spec.rb +0 -87
- data/spec/turnip_formatter/template/tab/speed_statistics_spec.rb +0 -56
- data/spec/turnip_formatter/template/tab/tag_statistics_spec.rb +0 -88
@@ -4,7 +4,7 @@ require 'rspec/core/formatters/base_formatter'
|
|
4
4
|
require 'turnip_formatter/scenario/pass'
|
5
5
|
require 'turnip_formatter/scenario/failure'
|
6
6
|
require 'turnip_formatter/scenario/pending'
|
7
|
-
require 'turnip_formatter/
|
7
|
+
require 'turnip_formatter/printer/index'
|
8
8
|
|
9
9
|
module RSpec
|
10
10
|
module Core
|
@@ -15,25 +15,15 @@ module RSpec
|
|
15
15
|
|
16
16
|
def initialize(output)
|
17
17
|
super(output)
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@failed_scenarios = []
|
18
|
+
@passed_scenarios = []
|
19
|
+
@failed_scenarios = []
|
21
20
|
@pending_scenarios = []
|
22
21
|
@scenarios = []
|
23
22
|
end
|
24
23
|
|
25
|
-
def start(example_count)
|
26
|
-
super(example_count)
|
27
|
-
output.puts @template.print_header
|
28
|
-
output.puts @template.print_main_header
|
29
|
-
end
|
30
|
-
|
31
24
|
def dump_summary(duration, example_count, failure_count, pending_count)
|
32
|
-
|
33
|
-
output.puts
|
34
|
-
output.puts @template.print_tab_feature_statsitics(scenarios)
|
35
|
-
output.puts @template.print_tab_tag_statsitics(scenarios)
|
36
|
-
output.puts @template.print_footer
|
25
|
+
super(duration, example_count, failure_count, pending_count)
|
26
|
+
output.puts ::TurnipFormatter::Printer::Index.print_out(self)
|
37
27
|
end
|
38
28
|
|
39
29
|
def example_passed(example)
|
@@ -41,8 +31,7 @@ module RSpec
|
|
41
31
|
|
42
32
|
scenario = ::TurnipFormatter::Scenario::Pass.new(example)
|
43
33
|
@passed_scenarios << scenario
|
44
|
-
|
45
|
-
output_scenario(scenario)
|
34
|
+
@scenarios << scenario
|
46
35
|
end
|
47
36
|
|
48
37
|
def example_pending(example)
|
@@ -50,8 +39,7 @@ module RSpec
|
|
50
39
|
|
51
40
|
scenario = ::TurnipFormatter::Scenario::Pending.new(example)
|
52
41
|
@pending_scenarios << scenario
|
53
|
-
|
54
|
-
output_scenario(scenario)
|
42
|
+
@scenarios << scenario
|
55
43
|
end
|
56
44
|
|
57
45
|
def example_failed(example)
|
@@ -59,22 +47,7 @@ module RSpec
|
|
59
47
|
|
60
48
|
scenario = ::TurnipFormatter::Scenario::Failure.new(example)
|
61
49
|
@failed_scenarios << scenario
|
62
|
-
|
63
|
-
output_scenario(scenario)
|
64
|
-
end
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
def output_scenario(scenario)
|
69
|
-
scenario.validation
|
70
50
|
@scenarios << scenario
|
71
|
-
output.puts @template.print_scenario(scenario)
|
72
|
-
rescue => e
|
73
|
-
output_runtime_error(e)
|
74
|
-
end
|
75
|
-
|
76
|
-
def output_runtime_error(exception)
|
77
|
-
output.puts @template.print_runtime_error(examples.last, exception)
|
78
51
|
end
|
79
52
|
end
|
80
53
|
end
|
@@ -9,8 +9,10 @@ module Turnip
|
|
9
9
|
begin
|
10
10
|
step(step)
|
11
11
|
rescue Turnip::Pending
|
12
|
+
example.metadata[:line_number] = step.line
|
12
13
|
pending("No such step(#{index}): '#{step}'")
|
13
14
|
rescue StandardError => e
|
15
|
+
example.metadata[:line_number] = step.line
|
14
16
|
e.backtrace.push "#{feature_file}:#{step.line}:in step:#{index} `#{step.description}'"
|
15
17
|
raise e
|
16
18
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'turnip_formatter/printer'
|
2
|
+
require 'turnip_formatter/printer/scenario'
|
3
|
+
require 'turnip_formatter/printer/tab_feature_statistics'
|
4
|
+
require 'turnip_formatter/printer/tab_tag_statistics'
|
5
|
+
require 'turnip_formatter/printer/tab_speed_statistics'
|
6
|
+
|
7
|
+
module TurnipFormatter
|
8
|
+
module Printer
|
9
|
+
class Index
|
10
|
+
class << self
|
11
|
+
include TurnipFormatter::Printer
|
12
|
+
|
13
|
+
#
|
14
|
+
# @param RSpec::Core::Formatters::TurnipFormatter formatter
|
15
|
+
#
|
16
|
+
def print_out(formatter)
|
17
|
+
render_template(:index, {
|
18
|
+
scenarios: formatter.scenarios,
|
19
|
+
passed_scenarios: formatter.passed_scenarios,
|
20
|
+
failed_count: formatter.failure_count,
|
21
|
+
pending_count: formatter.pending_count,
|
22
|
+
total_time: formatter.duration,
|
23
|
+
}
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'turnip_formatter/printer'
|
2
|
+
require 'turnip_formatter/printer/step_extra_args'
|
3
|
+
|
4
|
+
module TurnipFormatter
|
5
|
+
module Printer
|
6
|
+
class RuntimeError
|
7
|
+
class << self
|
8
|
+
include TurnipFormatter::Printer
|
9
|
+
include RSpec::Core::BacktraceFormatter
|
10
|
+
|
11
|
+
def print_out(example, exception)
|
12
|
+
exception.set_backtrace(format_backtrace(exception.backtrace))
|
13
|
+
render_template(:runtime_exception, {
|
14
|
+
example: example,
|
15
|
+
runtime_exception: runtime_exception(exception),
|
16
|
+
example_exception: example_exception(example),
|
17
|
+
}
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def runtime_exception(exception)
|
24
|
+
render_template(:exception, { title: 'Runtime', exception: exception })
|
25
|
+
end
|
26
|
+
|
27
|
+
def example_exception(example)
|
28
|
+
unless example.exception
|
29
|
+
''
|
30
|
+
else
|
31
|
+
render_template(:exception, {
|
32
|
+
title: 'Example',
|
33
|
+
exception: example.exception
|
34
|
+
}
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'turnip_formatter/printer'
|
2
|
+
require 'turnip_formatter/printer/step'
|
3
|
+
require 'turnip_formatter/printer/runtime_error'
|
4
|
+
|
5
|
+
module TurnipFormatter
|
6
|
+
module Printer
|
7
|
+
class Scenario
|
8
|
+
class << self
|
9
|
+
include TurnipFormatter::Printer
|
10
|
+
|
11
|
+
def print_out(scenario)
|
12
|
+
scenario.validation
|
13
|
+
render_template(:scenario, scenario: scenario)
|
14
|
+
rescue => e
|
15
|
+
TurnipFormatter::Printer::RuntimeError.print_out(scenario.example, e)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'turnip_formatter/printer'
|
2
|
+
require 'turnip_formatter/printer/step_extra_args'
|
3
|
+
|
4
|
+
module TurnipFormatter
|
5
|
+
module Printer
|
6
|
+
class Step
|
7
|
+
class << self
|
8
|
+
include TurnipFormatter::Printer
|
9
|
+
|
10
|
+
def print_out(step)
|
11
|
+
render_template(:step, { step: step, step_docs: documents(step.docs) })
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def documents(docs)
|
17
|
+
docs.map do |style, template|
|
18
|
+
if style == :extra_args
|
19
|
+
TurnipFormatter::Printer::StepExtraArgs.print_out(template[:value])
|
20
|
+
else
|
21
|
+
#
|
22
|
+
# Template class which is registered in
|
23
|
+
# +Step::Failure.add_template+
|
24
|
+
# +Step::Pending.add_template+
|
25
|
+
# be called.
|
26
|
+
#
|
27
|
+
template[:klass].build(template[:value])
|
28
|
+
end
|
29
|
+
end.join("\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'turnip_formatter/printer'
|
2
|
+
|
3
|
+
module TurnipFormatter
|
4
|
+
module Printer
|
5
|
+
class StepExtraArgs
|
6
|
+
class << self
|
7
|
+
include TurnipFormatter::Printer
|
8
|
+
|
9
|
+
def print_out(args)
|
10
|
+
args.map do |arg|
|
11
|
+
if arg.instance_of?(Turnip::Table)
|
12
|
+
render_template(:step_outline, { table: arg.to_a })
|
13
|
+
else
|
14
|
+
render_template(:step_multiline, { lines: arg })
|
15
|
+
end
|
16
|
+
end.join
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'turnip_formatter/printer'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
module TurnipFormatter
|
7
|
+
module Printer
|
8
|
+
module TabFeatureStatistics
|
9
|
+
class << self
|
10
|
+
include TurnipFormatter::Printer
|
11
|
+
|
12
|
+
def print_out(scenarios)
|
13
|
+
features = scenarios.group_by { |s| s.feature_name }
|
14
|
+
|
15
|
+
results = features.map do |name, feature_scenarios|
|
16
|
+
feature_analysis(name, feature_scenarios)
|
17
|
+
end
|
18
|
+
|
19
|
+
render_template(:tab_feature_statistics, {analysis_results: results })
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def feature_analysis(name, scenarios)
|
25
|
+
status_group = scenarios.group_by { |s| s.status }
|
26
|
+
|
27
|
+
info = OpenStruct.new(
|
28
|
+
name: name,
|
29
|
+
scenarios: scenarios.count,
|
30
|
+
passed: status_count(status_group["passed"]),
|
31
|
+
failed: status_count(status_group["failed"]),
|
32
|
+
pending: status_count(status_group["pending"]),
|
33
|
+
status: 'failed'
|
34
|
+
)
|
35
|
+
|
36
|
+
info.status = (info.pending.zero? ? 'passed' : 'pending') if info.failed.zero?
|
37
|
+
|
38
|
+
info
|
39
|
+
end
|
40
|
+
|
41
|
+
def status_count(scenarios)
|
42
|
+
scenarios.nil? ? 0 : scenarios.count
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'turnip_formatter/printer'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
module TurnipFormatter
|
7
|
+
module Printer
|
8
|
+
class TabSpeedStatistics
|
9
|
+
class << self
|
10
|
+
include TurnipFormatter::Printer
|
11
|
+
|
12
|
+
def print_out(passed_scenarios)
|
13
|
+
results = speed_analysis(passed_scenarios)
|
14
|
+
render_template(:tab_speed_statistics, {analysis_results: results })
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def speed_analysis(scenarios)
|
20
|
+
scenarios.map do |s|
|
21
|
+
OpenStruct.new(
|
22
|
+
{
|
23
|
+
id: s.id,
|
24
|
+
feature_name: s.feature_name,
|
25
|
+
name: s.name,
|
26
|
+
run_time: s.run_time
|
27
|
+
}
|
28
|
+
)
|
29
|
+
end.sort { |a, b| a.run_time <=> b.run_time }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'turnip_formatter/printer'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
module TurnipFormatter
|
7
|
+
module Printer
|
8
|
+
class TabTagStatistics
|
9
|
+
class << self
|
10
|
+
include TurnipFormatter::Printer
|
11
|
+
|
12
|
+
def print_out(scenarios)
|
13
|
+
tags = group_by_tag(scenarios)
|
14
|
+
|
15
|
+
results = tags.map do |name, tag_scenarios|
|
16
|
+
tag_analysis(name, tag_scenarios)
|
17
|
+
end
|
18
|
+
|
19
|
+
render_template(:tab_tag_statistics, { analysis_results: results })
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def tag_analysis(name, scenarios)
|
25
|
+
status_group = scenarios.group_by { |s| s[:scenario].status }
|
26
|
+
|
27
|
+
info = OpenStruct.new(
|
28
|
+
name: name,
|
29
|
+
scenarios: scenarios.count,
|
30
|
+
passed: status_count(status_group["passed"]),
|
31
|
+
failed: status_count(status_group["failed"]),
|
32
|
+
pending: status_count(status_group["pending"]),
|
33
|
+
status: 'failed'
|
34
|
+
)
|
35
|
+
|
36
|
+
info.status = (info.pending.zero? ? 'passed' : 'pending') if info.failed.zero?
|
37
|
+
info
|
38
|
+
end
|
39
|
+
|
40
|
+
#
|
41
|
+
# Image...
|
42
|
+
#
|
43
|
+
# [
|
44
|
+
# { tags: [:a, :b], val: 3 },
|
45
|
+
# { tags: [:a], val: 4 },
|
46
|
+
# { tags: [:b], val: 5 },
|
47
|
+
# ]
|
48
|
+
# # => [
|
49
|
+
# [:a, [3, 4]],
|
50
|
+
# [:b, [3, 5]],
|
51
|
+
# ]
|
52
|
+
#
|
53
|
+
#
|
54
|
+
def group_by_tag(scenarios)
|
55
|
+
scenarios.map do |scenario|
|
56
|
+
if scenario.tags.empty?
|
57
|
+
{ name: 'turnip', scenario: scenario }
|
58
|
+
else
|
59
|
+
scenario.tags.map do |tag|
|
60
|
+
{ name: '@' + tag, scenario: scenario }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end.flatten.group_by { |s| s[:name] }.sort
|
64
|
+
end
|
65
|
+
|
66
|
+
def status_count(scenarios)
|
67
|
+
scenarios.nil? ? 0 : scenarios.count
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module TurnipFormatter
|
2
|
+
module Printer
|
3
|
+
include ERB::Util
|
4
|
+
|
5
|
+
#
|
6
|
+
# @example
|
7
|
+
# render_template(:main, { name: 'user' })
|
8
|
+
# # => ERB.new('/path/to/main.erb') render { name: 'user' }
|
9
|
+
#
|
10
|
+
def render_template(name, params = {})
|
11
|
+
render_template_list(name).result(template_params_binding(params))
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def render_template_list(name)
|
17
|
+
if templates[name].nil?
|
18
|
+
path = File.dirname(__FILE__) + "/template/#{name.to_s}.erb"
|
19
|
+
templates[name] = ERB.new(File.read(path))
|
20
|
+
end
|
21
|
+
|
22
|
+
templates[name]
|
23
|
+
end
|
24
|
+
|
25
|
+
def template_params_binding(params)
|
26
|
+
code = params.keys.map { |k| "#{k} = params[#{k.inspect}];" }.join
|
27
|
+
eval(code + ";binding")
|
28
|
+
end
|
29
|
+
|
30
|
+
def templates
|
31
|
+
@templates ||= {}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,26 +1,10 @@
|
|
1
|
-
<
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
<%= print_exception_backtrace(exception) %>
|
9
|
-
|
10
|
-
<dt>Example Full Description</dt>
|
11
|
-
<dd><%= h(example.metadata[:full_description]) %></dd>
|
12
|
-
|
13
|
-
<% if example.exception %>
|
14
|
-
<dt>Example Exception</dt>
|
15
|
-
<dd><%= h(example.exception.to_s) %></dd>
|
16
|
-
|
17
|
-
<dt>Example Backtrace</dt>
|
18
|
-
<%= print_exception_backtrace(example.exception) %>
|
1
|
+
<dt><%= h(title) %> Exception</dt>
|
2
|
+
<dd><%= h(exception.to_s) %></dd>
|
3
|
+
<dt><%= h(title) %> Exception Backtrace</dt>
|
4
|
+
<dd>
|
5
|
+
<ol>
|
6
|
+
<% exception.backtrace.each do |line| %>
|
7
|
+
<li><%= h(line) %></li>
|
19
8
|
<% end %>
|
20
|
-
|
21
|
-
|
22
|
-
<dt>Example Pending description</dt>
|
23
|
-
<dd><%= h(example.metadata[:description]) %></dd>
|
24
|
-
<% end %>
|
25
|
-
</dl>
|
26
|
-
</section>
|
9
|
+
</ol>
|
10
|
+
</dd>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title>turnip formatter report</title>
|
6
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
|
7
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
|
8
|
+
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.9.1/jquery.tablesorter.min.js"></script>
|
9
|
+
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/smoothness/jquery-ui.css">
|
10
|
+
|
11
|
+
<style><%= TurnipFormatter::Template.css_render %></style>
|
12
|
+
<script><%= TurnipFormatter::Template.js_render %></script>
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
<div id="report">
|
16
|
+
<h1>Turnip Report</h1>
|
17
|
+
<section class="checkbox">
|
18
|
+
<label for="passed_check">Passed</label><input type="checkbox" id="passed_check">
|
19
|
+
<label for="failed_check">Failed</label><input type="checkbox" checked id="failed_check">
|
20
|
+
<label for="pending_check">Pending</label><input type="checkbox" id="pending_check">
|
21
|
+
</section>
|
22
|
+
|
23
|
+
<section class="result">
|
24
|
+
<p>
|
25
|
+
<span id="total_count"><%= h(scenarios.size) %></span> Scenario
|
26
|
+
(<span id="failed_count"><%= h(failed_count) %></span> failed
|
27
|
+
<span id="pending_count"><%= h(pending_count) %></span> pending).
|
28
|
+
</p>
|
29
|
+
<p>Finished in <span id="total_time"><%= h(total_time) %></span></p>
|
30
|
+
</section>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div id="main" role="main">
|
34
|
+
<ul>
|
35
|
+
<li><a href="#steps-statistics">Steps</a></li>
|
36
|
+
<li><a href="#speed-statistics">Speed Statistics</a></li>
|
37
|
+
<li><a href="#feature-statistics">Feature Statistics</a></li>
|
38
|
+
<li><a href="#tag-statistics">Tag Statistics</a></li>
|
39
|
+
</ul>
|
40
|
+
<div id="steps-statistics">
|
41
|
+
<label><input type="checkbox" id="scenario_display_check" checked>step folding</label>
|
42
|
+
<% scenarios.each do |scenario| %>
|
43
|
+
<%= TurnipFormatter::Printer::Scenario.print_out(scenario) %>
|
44
|
+
<% end %>
|
45
|
+
</div>
|
46
|
+
<div id="feature-statistics">
|
47
|
+
<em>The results for the feature:</em>
|
48
|
+
<%= TurnipFormatter::Printer::TabFeatureStatistics.print_out(scenarios) %>
|
49
|
+
</div>
|
50
|
+
<div id="tag-statistics">
|
51
|
+
<em>The results for the tab:</em>
|
52
|
+
<%= TurnipFormatter::Printer::TabTagStatistics.print_out(scenarios) %>
|
53
|
+
</div>
|
54
|
+
<div id="speed-statistics">
|
55
|
+
<em>Ranking of running time of each <strong>successfully</strong> scenario:</em>
|
56
|
+
<%= TurnipFormatter::Printer::TabSpeedStatistics.print_out(passed_scenarios) %>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<footer>
|
61
|
+
<p>Generated by <a href="https://rubygems.org/gems/turnip_formatter">turnip_formatter</a> <%= TurnipFormatter::VERSION %></p>
|
62
|
+
<p>Powered by <a href="http://jquery.com/">jQuery</a> 1.9.1, <a href="http://jqueryui.com/">jQuery UI</a> 1.10.2 and <a href="http://mottie.github.io/tablesorter/">tablesorter</a> 2.9.1</p>
|
63
|
+
</footer>
|
64
|
+
</body>
|
65
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<section class="exception">
|
2
|
+
<h1>TurnipFormatter RuntimeError</h1>
|
3
|
+
<dl>
|
4
|
+
<%= runtime_exception %>
|
5
|
+
|
6
|
+
<dt>Example Full Description</dt>
|
7
|
+
<dd><%= h(example.metadata[:full_description]) %></dd>
|
8
|
+
|
9
|
+
<%= example_exception %>
|
10
|
+
|
11
|
+
<% if example.pending %>
|
12
|
+
<dt>Example Pending description</dt>
|
13
|
+
<dd><%= h(example.metadata[:description]) %></dd>
|
14
|
+
<% end %>
|
15
|
+
</dl>
|
16
|
+
</section>
|
@@ -7,18 +7,19 @@
|
|
7
7
|
Scenario: <%= h(scenario.name) %>
|
8
8
|
</span>
|
9
9
|
<span class="feature_name">
|
10
|
-
(Feature: <%= h(scenario.feature_info) %>)
|
11
|
-
at <%= h(scenario.run_time) %> sec
|
10
|
+
(Feature: <%= h(scenario.feature_info) %>) at <%= h(scenario.run_time) %> sec
|
12
11
|
</span>
|
13
12
|
</header>
|
14
|
-
|
13
|
+
|
14
|
+
<ul class="tags">
|
15
|
+
<% scenario.tags.each do |tag| %>
|
16
|
+
<li>@<%= h(tag) %></li>
|
17
|
+
<% end %>
|
18
|
+
</ul>
|
19
|
+
|
15
20
|
<ul class="steps">
|
16
21
|
<% scenario.steps.each do |step| %>
|
17
|
-
|
18
|
-
<div class="args">
|
19
|
-
<%= step_args(step) %>
|
20
|
-
</div>
|
21
|
-
</li>
|
22
|
+
<%= TurnipFormatter::Printer::Step.print_out(step) %>
|
22
23
|
<% end %>
|
23
24
|
</ul>
|
24
25
|
</section>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<table>
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th>Feature</th>
|
5
|
+
<th>Scearios</th>
|
6
|
+
<th>passed</th>
|
7
|
+
<th>failed</th>
|
8
|
+
<th>pending</th>
|
9
|
+
<th>status</th>
|
10
|
+
</tr>
|
11
|
+
</thead>
|
12
|
+
<tbody>
|
13
|
+
<% analysis_results.each do |info| %>
|
14
|
+
<tr>
|
15
|
+
<td><%= info.name %></td>
|
16
|
+
<td><%= info.scenarios %></td>
|
17
|
+
<td><%= info.passed %></td>
|
18
|
+
<td><%= info.failed %></td>
|
19
|
+
<td><%= info.pending %></td>
|
20
|
+
<td class="<%= info.status %>"><%= info.status %></td>
|
21
|
+
</tr>
|
22
|
+
<% end %>
|
23
|
+
</tbody>
|
24
|
+
</table>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<table>
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th>Feature</th>
|
5
|
+
<th>Scenario</th>
|
6
|
+
<th>Duration</th>
|
7
|
+
</tr>
|
8
|
+
</thead>
|
9
|
+
<tbody>
|
10
|
+
<% analysis_results.each do |info| %>
|
11
|
+
<tr>
|
12
|
+
<td><span><%= info.feature_name %></span></td>
|
13
|
+
<td><a href="#<%= info.id %>"><%= info.name %></a></td>
|
14
|
+
<td><span><%= info.run_time %></span> sec</td>
|
15
|
+
</tr>
|
16
|
+
<% end %>
|
17
|
+
</tbody>
|
18
|
+
</table>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<table>
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th>Tag</th>
|
5
|
+
<th>Scearios</th>
|
6
|
+
<th>passed</th>
|
7
|
+
<th>failed</th>
|
8
|
+
<th>pending</th>
|
9
|
+
<th>status</th>
|
10
|
+
</tr>
|
11
|
+
</thead>
|
12
|
+
<tbody>
|
13
|
+
<% analysis_results.each do |info| %>
|
14
|
+
<tr>
|
15
|
+
<td><%= info.name %></td>
|
16
|
+
<td><%= info.scenarios %></td>
|
17
|
+
<td><%= info.passed %></td>
|
18
|
+
<td><%= info.failed %></td>
|
19
|
+
<td><%= info.pending %></td>
|
20
|
+
<td class="<%= info.status %>"><%= info.status %></td>
|
21
|
+
</tr>
|
22
|
+
<% end %>
|
23
|
+
</tbody>
|
24
|
+
</table>
|