turnip_formatter 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|