report_builder 1.8 → 1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +6 -1
- data/README.md +0 -7
- data/bin/report_builder +3 -2
- data/lib/report_builder/builder.rb +11 -6
- data/report_builder.gemspec +3 -3
- data/template/error.erb +5 -5
- data/template/feature.erb +5 -7
- data/template/footer.erb +1 -1
- data/template/head.erb +1 -1
- data/template/summary.erb +6 -0
- data/template/summary_row.erb +12 -2
- metadata +16 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0aa1ff8b4caff189599fe6e76c52a49c43dbdbd47d8e099ab9aa81055d0703cd
|
4
|
+
data.tar.gz: 3e1fbfed2f713b8319b1fa01e3a9ab9d3fabdf80a48e00c64d8fd7c48019c614
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57bff744c235ba470d960f116eb5d28883e224d0d72910012e5264e24ae0c51e68618366255746bc07803aa7d934b55667e4b3df9bc6c1b9a66b523d171c4cef
|
7
|
+
data.tar.gz: b9cf16c68a1fd6e92c97f037f2dd55ccbb321fda0574e5fef651702982939758c786d8f60da6f5d884ed9d682fd17327716eedf10a50d6c5ea13ba266305f3dc
|
data/CHANGELOG.md
CHANGED
@@ -3,8 +3,13 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
5
5
|
|
6
|
-
## [Unreleased](https://github.com/rajatthareja/ReportBuilder/compare/v1.
|
6
|
+
## [Unreleased](https://github.com/rajatthareja/ReportBuilder/compare/v1.9...master)
|
7
7
|
|
8
|
+
## [1.9](https://github.com/rajatthareja/ReportBuilder/compare/v1.8...v1.9) - 2020-06-06
|
9
|
+
### Changed
|
10
|
+
- Json 1.8.1 to 2.3.0
|
11
|
+
- Include last fail run instead of first
|
12
|
+
- [Few other small changes](https://github.com/rajatthareja/ReportBuilder/compare/v1.8...v1.9)
|
8
13
|
|
9
14
|
## [1.8](https://github.com/rajatthareja/ReportBuilder/compare/v1.7...v1.8) - 2018-09-02
|
10
15
|
### Fixed
|
data/README.md
CHANGED
@@ -175,13 +175,6 @@ Use voice commands for easy navigation and search
|
|
175
175
|
|
176
176
|
We're open to any contribution. It has to be tested properly though.
|
177
177
|
|
178
|
-
## Collaborators
|
179
|
-
|
180
|
-
* [Rajat Thareja](https://rajatthareja.com)
|
181
|
-
* [Justin Commu](https://github.com/tk8817)
|
182
|
-
* [Eric Kessler](https://github.com/enkessler)
|
183
|
-
* [Jeff Morgan](https://github.com/cheezy)
|
184
|
-
|
185
178
|
## License
|
186
179
|
|
187
180
|
Copyright (c) 2017 [MIT LICENSE](LICENSE)
|
data/bin/report_builder
CHANGED
@@ -37,7 +37,7 @@ opt_parser = OptionParser.new do |opts|
|
|
37
37
|
options[:include_images] = include_images
|
38
38
|
end
|
39
39
|
|
40
|
-
opts.on('
|
40
|
+
opts.on('--voice_commands', 'Enable voice commands for easy navigation and search') do |voice_commands|
|
41
41
|
options[:voice_commands] = voice_commands
|
42
42
|
end
|
43
43
|
|
@@ -50,8 +50,9 @@ opt_parser = OptionParser.new do |opts|
|
|
50
50
|
end
|
51
51
|
|
52
52
|
opts.on('-I', '--info a:x,b:y,c:z', Array, 'List of additional info') do |list|
|
53
|
+
options[:additional_info] = { }
|
53
54
|
list.each do |i|
|
54
|
-
key, value = i.split(':')
|
55
|
+
key, value = i.split(':', 2)
|
55
56
|
options[:additional_info][key] = value
|
56
57
|
end
|
57
58
|
end
|
@@ -39,7 +39,7 @@ module ReportBuilder
|
|
39
39
|
html_report_path = options[:html_report_path] || options[:report_path]
|
40
40
|
if options[:report_types].include? 'HTML'
|
41
41
|
File.open(html_report_path + '.html', 'w') do |file|
|
42
|
-
file.write get(groups.size > 1 ? 'group_report' : 'report').result(binding)
|
42
|
+
file.write get(groups.size > 1 ? 'group_report' : 'report').result(binding)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -73,13 +73,17 @@ module ReportBuilder
|
|
73
73
|
input_path.each do |group_name, group_path|
|
74
74
|
files = get_files group_path
|
75
75
|
puts "Error:: No file(s) found at #{group_path}" if files.empty?
|
76
|
-
groups << {'name' => group_name, 'features' => get_features(files)}
|
76
|
+
groups << {'name' => group_name, 'features' => get_features(files)}
|
77
77
|
end
|
78
|
-
raise 'Error:: Invalid Input File(s). Please provide valid cucumber JSON output file(s)' if groups.empty?
|
79
78
|
else
|
80
79
|
files = get_files input_path
|
81
80
|
raise "Error:: No file(s) found at #{input_path}" if files.empty?
|
82
|
-
groups << {'features' => get_features(files)}
|
81
|
+
groups << {'features' => get_features(files)}
|
82
|
+
end
|
83
|
+
groups.each do |this_group|
|
84
|
+
this_group['features'].each do |feature|
|
85
|
+
feature['elements'] = feature['elements'].sort_by { |v| v['line']}
|
86
|
+
end
|
83
87
|
end
|
84
88
|
groups
|
85
89
|
end
|
@@ -116,6 +120,7 @@ module ReportBuilder
|
|
116
120
|
features << JSON.parse(data)
|
117
121
|
rescue StandardError
|
118
122
|
puts 'Warning:: Invalid Input File ' + file
|
123
|
+
puts 'JSON Error:: ' + $!.to_s
|
119
124
|
next
|
120
125
|
end
|
121
126
|
end.flatten.group_by do |feature|
|
@@ -190,11 +195,11 @@ module ReportBuilder
|
|
190
195
|
scenario.merge! 'status' => scenario_status(scenario), 'duration' => total_time(scenario['before']) + total_time(scenario['steps']) + total_time(scenario['after'])
|
191
196
|
end
|
192
197
|
feature['elements'] = feature['elements'].group_by do |scenario|
|
193
|
-
scenario['id'] + scenario['line'].to_s
|
198
|
+
scenario['id'] + ':' + scenario['line'].to_s
|
194
199
|
end.values.map do |scenario_group|
|
195
200
|
the_scenario = scenario_group.find do |scenario|
|
196
201
|
scenario['status'] == 'passed'
|
197
|
-
end || scenario_group.
|
202
|
+
end || scenario_group.last
|
198
203
|
if scenario_group.size > 1
|
199
204
|
the_scenario['name'] += " (x#{scenario_group.size})"
|
200
205
|
end
|
data/report_builder.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'report_builder'
|
3
|
-
s.version = '1.
|
3
|
+
s.version = '1.9'
|
4
4
|
s.bindir = 'bin'
|
5
5
|
s.summary = 'ReportBuilder'
|
6
6
|
s.description = 'Ruby gem to merge Cucumber JSON reports and build mobile-friendly HTML Test Report, JSON report and retry file.'
|
@@ -9,14 +9,14 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.email = 'rajat.thareja.1990@gmail.com'
|
10
10
|
s.homepage = 'https://reportbuilder.rajatthareja.com'
|
11
11
|
s.license = 'MIT'
|
12
|
-
s.required_ruby_version = '>=
|
12
|
+
s.required_ruby_version = '>= 2.0.0'
|
13
13
|
s.requirements << 'Cucumber >= 2.1.0 test results in JSON format'
|
14
14
|
|
15
15
|
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(sample/|css/|js/|pkg/|testing/|coverage/|CNAME|.gitignore|appveyor.yml|.travis.yml|_config.yml|Gemfile|Rakefile|rb.ico)}) }
|
16
16
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
s.test_files = s.files.grep(%r{^(testing)/})
|
18
18
|
|
19
|
-
s.add_runtime_dependency 'json', '>=
|
19
|
+
s.add_runtime_dependency 'json', '>= 2.3.0'
|
20
20
|
|
21
21
|
s.add_development_dependency 'rake', '< 13.0'
|
22
22
|
s.add_development_dependency 'rspec', '< 4.0'
|
data/template/error.erb
CHANGED
@@ -4,18 +4,18 @@
|
|
4
4
|
</div>
|
5
5
|
|
6
6
|
<div class="collapsible-body <%= options[:color] %> lighten-4">
|
7
|
-
<
|
7
|
+
<div class="collection failedScenarioList">
|
8
8
|
<% features.each_with_index do |feature, f| %>
|
9
9
|
<% feature['elements'].each_with_index do |scenario, s| %>
|
10
10
|
<% if scenario['error'] %>
|
11
11
|
<% if scenario['error'] == error %>
|
12
|
-
<
|
13
|
-
<i class="material-icons">highlight_off</i> 
|
14
|
-
</
|
12
|
+
<a class="collection-item failedScenario <%= options[:color] %> lighten-5 red-text modal-trigger waves-effect waves-light" href="#<%= "#{gid}f#{f}s#{s}" %>">
|
13
|
+
<i class="material-icons">highlight_off</i> <%= scenario['name'] %>
|
14
|
+
</a>
|
15
15
|
<% end %>
|
16
16
|
<% end %>
|
17
17
|
<% end %>
|
18
18
|
<% end %>
|
19
|
-
</
|
19
|
+
</div>
|
20
20
|
</div>
|
21
21
|
</li>
|
data/template/feature.erb
CHANGED
@@ -5,14 +5,12 @@
|
|
5
5
|
</div>
|
6
6
|
|
7
7
|
<div class="collapsible-body <%= options[:color] %> lighten-4">
|
8
|
-
<
|
8
|
+
<div class="collection scenarioList <%= options[:color] %>">
|
9
9
|
<% feature['elements'].each_with_index do |scenario, s| %>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
</a>
|
14
|
-
</li>
|
10
|
+
<a class="collection-item scenario modal-trigger waves-effect waves-light white-text <%= scenario['status'] %>" href="#<%= "#{fid}s#{s}" %>">
|
11
|
+
<b><%= scenario['keyword'] %></b> <%= scenario['name'] %> (<%= duration(scenario['duration']) %>)
|
12
|
+
</a>
|
15
13
|
<% end %>
|
16
|
-
</
|
14
|
+
</div>
|
17
15
|
</div>
|
18
16
|
</li>
|
data/template/footer.erb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
</div>
|
8
8
|
</footer>
|
9
9
|
|
10
|
-
<script type="text/javascript" src="https://cdn.rawgit.com/rajatthareja/ReportBuilder/v1.
|
10
|
+
<script type="text/javascript" src="https://cdn.rawgit.com/rajatthareja/ReportBuilder/v1.9/js/report.builder.min.js"></script>
|
11
11
|
|
12
12
|
<% if options[:voice_commands] %>
|
13
13
|
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.6.0/annyang.min.js"></script>
|
data/template/head.erb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
9
9
|
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet">
|
10
10
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css" media="screen,projection"/>
|
11
|
-
<link href="https://cdn.rawgit.com/rajatthareja/ReportBuilder/v1.
|
11
|
+
<link href="https://cdn.rawgit.com/rajatthareja/ReportBuilder/v1.9/css/report.builder.min.css" rel="stylesheet">
|
12
12
|
|
13
13
|
<% if options[:additional_css] %>
|
14
14
|
<% if options[:additional_css] =~ /^http(|s):\/\/.*\.css$/ %>
|
data/template/summary.erb
CHANGED
data/template/summary_row.erb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
<%= feature['name'] %>
|
3
3
|
</td>
|
4
4
|
|
5
|
-
<td class="hoverable">
|
6
|
-
|
5
|
+
<td class="hoverable modal-trigger white-text" data-target="<%= sid %>">
|
6
|
+
<%= scenario['name'] %>
|
7
7
|
</td>
|
8
8
|
|
9
9
|
<td class="hide">
|
@@ -18,6 +18,16 @@
|
|
18
18
|
<%= scenario['status'] %>
|
19
19
|
</td>
|
20
20
|
|
21
|
+
<% if options[:tag_filter] %>
|
22
|
+
<td class="hide-on-small-only">
|
23
|
+
<% scenario['tags'].each do |tag| %>
|
24
|
+
<% if tag['name'].match(/#{options[:tag_filter]}/) %>
|
25
|
+
<%= tag['name'] %>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
28
|
+
</td>
|
29
|
+
<% end %>
|
30
|
+
|
21
31
|
<td class="hide-on-small-only">
|
22
32
|
<% if scenario['error'] %>
|
23
33
|
<%= scenario['error'] %>
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: report_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.9'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rajat Thareja
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - <
|
31
|
+
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - <
|
38
|
+
- - "<"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - <
|
45
|
+
- - "<"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '4.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - <
|
52
|
+
- - "<"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '4.0'
|
55
55
|
description: Ruby gem to merge Cucumber JSON reports and build mobile-friendly HTML
|
@@ -98,19 +98,18 @@ require_paths:
|
|
98
98
|
- lib
|
99
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 2.0.0
|
104
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
|
-
- -
|
106
|
+
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: '0'
|
109
109
|
requirements:
|
110
110
|
- Cucumber >= 2.1.0 test results in JSON format
|
111
|
-
|
112
|
-
|
113
|
-
signing_key:
|
111
|
+
rubygems_version: 3.1.2
|
112
|
+
signing_key:
|
114
113
|
specification_version: 4
|
115
114
|
summary: ReportBuilder
|
116
115
|
test_files: []
|