report_builder 1.3 → 1.4
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/README.md +59 -30
- data/lib/report_builder.rb +18 -3
- data/lib/report_builder/builder.rb +54 -19
- data/report_builder.gemspec +4 -4
- data/template/error.erb +21 -0
- data/template/errors.erb +5 -0
- data/template/feature.erb +18 -0
- data/template/features.erb +6 -0
- data/template/footer.erb +20 -0
- data/template/group_errors.erb +18 -0
- data/template/group_features.erb +18 -0
- data/template/group_overview.erb +33 -0
- data/template/group_report.erb +39 -0
- data/template/group_summary.erb +25 -0
- data/template/head.erb +22 -0
- data/template/header.erb +29 -0
- data/template/hook.erb +28 -0
- data/template/overview.erb +29 -0
- data/template/report.erb +37 -0
- data/template/scenario.erb +35 -0
- data/template/scenarios.erb +14 -0
- data/template/step.erb +28 -0
- data/template/summary.erb +21 -0
- data/template/summary_row.erb +25 -0
- metadata +24 -10
- data/.gitignore +0 -6
- data/.travis.yml +0 -15
- data/Gemfile +0 -4
- data/Rakefile +0 -14
- data/lib/report_builder.rake +0 -6
- data/template/html_report.erb +0 -356
data/.gitignore
DELETED
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
os:
|
2
|
-
- linux
|
3
|
-
- osx
|
4
|
-
|
5
|
-
language: ruby
|
6
|
-
rvm:
|
7
|
-
- 1.9.3
|
8
|
-
- 2.4.0
|
9
|
-
- jruby-9.1.7.0
|
10
|
-
|
11
|
-
before_install:
|
12
|
-
# Using a recent version of bundler in order to avoid gem installation errors
|
13
|
-
- gem install bundler -v 1.15.4
|
14
|
-
|
15
|
-
script: bundle exec rake report_builder:test_everything
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'rspec/core/rake_task'
|
2
|
-
require "bundler/gem_tasks"
|
3
|
-
|
4
|
-
|
5
|
-
namespace 'report_builder' do
|
6
|
-
|
7
|
-
desc 'Test the project'
|
8
|
-
RSpec::Core::RakeTask.new(:test_everything) do |t, args|
|
9
|
-
t.rspec_opts = '--pattern testing/rspec/spec/**/*_spec.rb'
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
task :default => 'report_builder:test_everything'
|
data/lib/report_builder.rake
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
desc 'Sample rake task to build report'
|
2
|
-
task :report_builder, [:json_path, :report_path] do |t, args|
|
3
|
-
args.with_defaults(:json_path => nil, :report_path => 'test_report')
|
4
|
-
options = {:json_path => args.json_path, :report_path => args.report_path}
|
5
|
-
ReportBuilder.build_report options
|
6
|
-
end
|
data/template/html_report.erb
DELETED
@@ -1,356 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<title><%=options[:report_title]%></title>
|
6
|
-
<link rel="icon" href="http://reportbuilder.rajatthareja.com/rb.ico">
|
7
|
-
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
8
|
-
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet">
|
9
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css" media="screen,projection"/>
|
10
|
-
<link href="https://cdn.rawgit.com/rajatthareja/ReportBuilder/v1.3/css/report.builder.min.css" rel="stylesheet">
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
12
|
-
<%if options[:additional_css]%>
|
13
|
-
<%if options[:additional_css] =~ /^http(|s):\/\/.*\.css$/%>
|
14
|
-
<link rel="stylesheet" href="<%=options[:additional_css]%>" media="all"/>
|
15
|
-
<%else%>
|
16
|
-
<style type="text/css">
|
17
|
-
<%= options[:additional_css]%>
|
18
|
-
</style>
|
19
|
-
<%end%>
|
20
|
-
<%end%>
|
21
|
-
</head>
|
22
|
-
<body>
|
23
|
-
|
24
|
-
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
|
25
|
-
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
|
26
|
-
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.min.js"></script>
|
27
|
-
<script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
|
28
|
-
|
29
|
-
<%errors = []%>
|
30
|
-
<%features.each_with_index do |feature, f|%>
|
31
|
-
<%feature['elements'].each_with_index do |scenario, s|%>
|
32
|
-
<div id="f<%=f%>s<%=s%>" class="modal modal-fixed-footer">
|
33
|
-
<div class="modal-content">
|
34
|
-
|
35
|
-
<%if scenario['tags']%>
|
36
|
-
<%scenario['tags'].each do |tag|%>
|
37
|
-
<div class="chip"><i class="material-icons rotate-45">label</i><%=tag['name']%></div>
|
38
|
-
<%end%>
|
39
|
-
<%end%>
|
40
|
-
|
41
|
-
<h5><%=scenario['name']%> (<%=duration(scenario['duration'])%>)</h5>
|
42
|
-
<%=feature['uri']%>:<%=scenario['line']%>
|
43
|
-
|
44
|
-
<%if scenario['before']%>
|
45
|
-
<%scenario['before'].each do |before|%>
|
46
|
-
|
47
|
-
<%if before['output']%>
|
48
|
-
<%before['output'].each do |output|%>
|
49
|
-
<pre><%=output%></pre>
|
50
|
-
<%end%>
|
51
|
-
<%end%>
|
52
|
-
|
53
|
-
<%if before['result']['error_message']%>
|
54
|
-
<pre><%=before['result']['error_message']%></pre>
|
55
|
-
<%end%>
|
56
|
-
|
57
|
-
<%end%>
|
58
|
-
<%end%>
|
59
|
-
|
60
|
-
<ul class="collection stepList">
|
61
|
-
<%scenario['steps'].each do |step|%>
|
62
|
-
<li class="collection-item step <%=step['status']%>">
|
63
|
-
|
64
|
-
<%if scenario['before']%>
|
65
|
-
<%scenario['before'].each do |before|%>
|
66
|
-
|
67
|
-
<%if before['output']%>
|
68
|
-
<%before['output'].each do |output|%>
|
69
|
-
<pre><%=output%></pre>
|
70
|
-
<%end%>
|
71
|
-
<%end%>
|
72
|
-
|
73
|
-
<%if before['result']['error_message']%>
|
74
|
-
<pre><%=before['result']['error_message']%></pre>
|
75
|
-
<%end%>
|
76
|
-
|
77
|
-
<%end%>
|
78
|
-
<%end%>
|
79
|
-
|
80
|
-
<b><%=step['keyword']%></b> <%=step['name']%> (<%=duration(step['duration'])%>)
|
81
|
-
|
82
|
-
<%if step['rows']%>
|
83
|
-
<%step['rows'].each do |row|%>
|
84
|
-
<%='<br/>| '%>
|
85
|
-
<%row['cells'].each do |cell|%>
|
86
|
-
<%=cell + ' | '%>
|
87
|
-
<%end%>
|
88
|
-
<%end%>
|
89
|
-
<%end%>
|
90
|
-
|
91
|
-
<%if step['output']%>
|
92
|
-
<%step['output'].each do |output|%>
|
93
|
-
<pre><%=output%></pre>
|
94
|
-
<%end%>
|
95
|
-
<%end%>
|
96
|
-
|
97
|
-
<%if step['result']['error_message']%>
|
98
|
-
<%scenario['error'] = step['result']['error_message'].split("\n").first%>
|
99
|
-
<%errors << scenario['error']%>
|
100
|
-
<pre class="error"><%=step['result']['error_message']%></pre>
|
101
|
-
<%end%>
|
102
|
-
|
103
|
-
<%if step['embeddings']%>
|
104
|
-
<%step['embeddings'].each do |embedding|%>
|
105
|
-
<%if embedding['mime_type'] =~ /^image\/(png|gif|jpg|jpeg)/ %>
|
106
|
-
<%if options[:include_images]%>
|
107
|
-
<img class="materialboxed" data-caption='<%=scenario['name']%>' width="250" src="data:<%=embedding['mime_type']%>;base64,<%=embedding['data']%>">
|
108
|
-
<%end%>
|
109
|
-
<%elsif embedding['mime_type'] =~ /^text\/plain/%>
|
110
|
-
<%if embedding['data'].include?('|||')%>
|
111
|
-
<%title, link = embedding['data'].split('|||')%><a href="<%=link%>"><%=title%></a>
|
112
|
-
<%else%>
|
113
|
-
<%=embedding['data']%>
|
114
|
-
<%end%>
|
115
|
-
<%end%>
|
116
|
-
<%end%>
|
117
|
-
<%end%>
|
118
|
-
|
119
|
-
<%if step['after']%>
|
120
|
-
<%step['after'].each do |after|%>
|
121
|
-
|
122
|
-
<%if after['output']%>
|
123
|
-
<%after['output'].each do |output|%>
|
124
|
-
<pre><%=output%></pre>
|
125
|
-
<%end%>
|
126
|
-
<%end%>
|
127
|
-
|
128
|
-
<%if after['result']['error_message']%>
|
129
|
-
<pre><%=after['result']['error_message']%></pre>
|
130
|
-
<%end%>
|
131
|
-
|
132
|
-
<%if after['embeddings']%>
|
133
|
-
<%after['embeddings'].each do |embedding|%>
|
134
|
-
<%if embedding['mime_type'] =~ /^image\/(png|gif|jpg|jpeg)/ %>
|
135
|
-
<%if options[:include_images]%>
|
136
|
-
<img class="materialboxed" data-caption='<%=scenario['name']%>' width="250" src="data:<%=embedding['mime_type']%>;base64,<%=embedding['data']%>">
|
137
|
-
<%end%>
|
138
|
-
<%elsif embedding['mime_type'] =~ /^text\/plain/%>
|
139
|
-
<%if embedding['data'].include?('|||')%>
|
140
|
-
<%title, link = embedding['data'].split('|||')%><a href="<%=link%>"><%=title%></a>
|
141
|
-
<%else%>
|
142
|
-
<%=embedding['data']%>
|
143
|
-
<%end%>
|
144
|
-
<%end%>
|
145
|
-
<%end%>
|
146
|
-
<%end%>
|
147
|
-
|
148
|
-
<%end%>
|
149
|
-
<%end%>
|
150
|
-
|
151
|
-
</li>
|
152
|
-
<%end%>
|
153
|
-
|
154
|
-
<%if scenario['after']%>
|
155
|
-
<%scenario['after'].each do |after|%>
|
156
|
-
|
157
|
-
<%if after['output']%>
|
158
|
-
<%after['output'].each do |output|%>
|
159
|
-
<pre><%=output%></pre>
|
160
|
-
<%end%>
|
161
|
-
<%end%>
|
162
|
-
|
163
|
-
<%if after['result']['error_message']%>
|
164
|
-
<pre><%=after['result']['error_message']%></pre>
|
165
|
-
<%end%>
|
166
|
-
|
167
|
-
<%if after['embeddings']%>
|
168
|
-
<%after['embeddings'].each do |embedding|%>
|
169
|
-
<%if embedding['mime_type'] =~ /^image\/(png|gif|jpg|jpeg)/ %>
|
170
|
-
<%if options[:include_images]%>
|
171
|
-
<img class="materialboxed" data-caption='<%=scenario['name']%>' width="250" src="data:<%=embedding['mime_type']%>;base64,<%=embedding['data']%>">
|
172
|
-
<%end%>
|
173
|
-
<%elsif embedding['mime_type'] =~ /^text\/plain/%>
|
174
|
-
<%if embedding['data'].include?('|||')%>
|
175
|
-
<%title, link = embedding['data'].split('|||')%><a href="<%=link%>"><%=title%></a>
|
176
|
-
<%else%>
|
177
|
-
<%=embedding['data']%>
|
178
|
-
<%end%>
|
179
|
-
<%end%>
|
180
|
-
<%end%>
|
181
|
-
<%end%>
|
182
|
-
|
183
|
-
<%end%>
|
184
|
-
<%end%>
|
185
|
-
</ul>
|
186
|
-
</div>
|
187
|
-
<div class="modal-footer">
|
188
|
-
<span class="modal-action modal-close waves-effect waves-green btn-flat"><i class="material-icons">close</i></span>
|
189
|
-
</div>
|
190
|
-
</div>
|
191
|
-
<%end%>
|
192
|
-
<%end%>
|
193
|
-
|
194
|
-
<header class="brown lighten-5">
|
195
|
-
<div class="row brown lighten-1">
|
196
|
-
<div class="col m8 hide-on-small-only">
|
197
|
-
<h5 class="truncate white-text tooltipped" data-tooltip="<%=options[:report_title]%>"><%=options[:report_title]%></h5>
|
198
|
-
</div>
|
199
|
-
<div class="col m4 s12 brown lighten-1">
|
200
|
-
<ul class="tabs brown lighten-1">
|
201
|
-
<li class="tab col s3">
|
202
|
-
<a class="btn brown lighten-3 active blue-text waves-effect waves-light tooltipped" data-tooltip="Overview" href="#overview"><i class="material-icons">public</i></a>
|
203
|
-
</li>
|
204
|
-
<li class="tab col s3">
|
205
|
-
<a class="btn brown lighten-3 white-text waves-effect waves-light tooltipped" data-tooltip="Features" href="#features"><i class="material-icons">view_headline</i></a>
|
206
|
-
</li>
|
207
|
-
<li class="tab col s3">
|
208
|
-
<a class="btn brown lighten-3 white-text waves-effect waves-light tooltipped" data-tooltip="Summary" href="#summary"><i class="material-icons">view_comfy</i></a></li>
|
209
|
-
<li class="tab col s3">
|
210
|
-
<a class="btn brown lighten-3 white-text waves-effect waves-light tooltipped" data-tooltip="Errors" href="#errors"><i class="material-icons">bug_report</i></a>
|
211
|
-
</li>
|
212
|
-
</ul>
|
213
|
-
</div>
|
214
|
-
</div>
|
215
|
-
</header>
|
216
|
-
|
217
|
-
<main class="brown lighten-5">
|
218
|
-
<div class="row">
|
219
|
-
<div id="overview" class="col s12 brown lighten-5">
|
220
|
-
<div class="row">
|
221
|
-
<div class="col m4 s12">
|
222
|
-
<canvas id="featuresDoughnut" width="400" height="400"></canvas>
|
223
|
-
<table id="metaDataFeatures" class="bordered">
|
224
|
-
<tbody></tbody>
|
225
|
-
</table>
|
226
|
-
</div>
|
227
|
-
<div class="col m4 s12">
|
228
|
-
<canvas id="scenariosDoughnut" width="400" height="400"></canvas>
|
229
|
-
<table id="metaDataScenarios" class="bordered">
|
230
|
-
<tbody></tbody>
|
231
|
-
</table>
|
232
|
-
</div>
|
233
|
-
<div class="col m4 s12">
|
234
|
-
<table id="metaData" class="bordered">
|
235
|
-
<tbody>
|
236
|
-
<%options[:additional_info].each do |key, value|%>
|
237
|
-
<tr><th><%=key%></th><td><%=value%></td></tr>
|
238
|
-
<%end%>
|
239
|
-
</tbody>
|
240
|
-
</table>
|
241
|
-
</div>
|
242
|
-
</div>
|
243
|
-
</div>
|
244
|
-
<div id="features" class="col s12 brown lighten-5 white-text">
|
245
|
-
<ul class="featureList collapsible popout" data-collapsible="expandable">
|
246
|
-
<%features.each_with_index do |feature, f|%>
|
247
|
-
<li class="feature <%=feature['status']%>">
|
248
|
-
<div class="collapsible-header brown lighten-1 waves-effect waves-light">
|
249
|
-
<i class="material-icons">featured_play_list</i>
|
250
|
-
<b><%=feature['keyword']%></b> <%=feature['name']%> (<%=duration(feature['duration'])%>)
|
251
|
-
</div>
|
252
|
-
<div class="collapsible-body brown lighten-4">
|
253
|
-
<ul class="collection scenarioList">
|
254
|
-
<%feature['elements'].each_with_index do |scenario, s|%>
|
255
|
-
<li class="collection-item scenario <%=scenario['status']%>">
|
256
|
-
<a class="waves-effect waves-light modal-trigger white-text" href="#f<%=f%>s<%=s%>">
|
257
|
-
<b><%=scenario['keyword']%></b> <%=scenario['name']%> (<%=duration(scenario['duration'])%>)
|
258
|
-
</a>
|
259
|
-
</li>
|
260
|
-
<%end%>
|
261
|
-
</ul>
|
262
|
-
</div>
|
263
|
-
</li>
|
264
|
-
<%end%>
|
265
|
-
</ul>
|
266
|
-
</div>
|
267
|
-
<div id="summary" class="col s12 brown lighten-5">
|
268
|
-
<table id="summaryTable" class="bordered brown lighten-1 white-text">
|
269
|
-
<thead>
|
270
|
-
<tr>
|
271
|
-
<th class="hide-on-small-only">Feature</th>
|
272
|
-
<th>Scenario</th>
|
273
|
-
<th class="hide">Tags</th>
|
274
|
-
<th>Status</th>
|
275
|
-
<th class="hide-on-small-only">Error</th>
|
276
|
-
</tr>
|
277
|
-
</thead>
|
278
|
-
<tbody>
|
279
|
-
<%features.each_with_index do |feature, f|%>
|
280
|
-
<%feature['elements'].each_with_index do |scenario, s|%>
|
281
|
-
<tr class="<%=scenario['status']%>">
|
282
|
-
<td class="hide-on-small-only"><%=feature['name']%></td>
|
283
|
-
<td class="hoverable"><a class="modal-trigger white-text" href="#f<%=f%>s<%=s%>"><%=scenario['name']%></a></td>
|
284
|
-
<%# Scenarios Tags for search and filter %>
|
285
|
-
<td class="hide">
|
286
|
-
<%if scenario['tags']%>
|
287
|
-
<%scenario['tags'].each do |tag|%>
|
288
|
-
<%=tag['name'] + '. '%>
|
289
|
-
<%end%>
|
290
|
-
<%end%>
|
291
|
-
</td>
|
292
|
-
<td class="uppercase"><%=scenario['status']%></td>
|
293
|
-
<td class="hide-on-small-only"><%if scenario['error']%><%=scenario['error']%><%end%></td>
|
294
|
-
</tr>
|
295
|
-
<%end%>
|
296
|
-
<%end%>
|
297
|
-
</tbody>
|
298
|
-
</table>
|
299
|
-
</div>
|
300
|
-
<div id="errors" class="col s12 brown lighten-5">
|
301
|
-
<ul class="errorList collapsible popout" data-collapsible="expandable">
|
302
|
-
<%errors.uniq.each do |error|%>
|
303
|
-
<li class="error">
|
304
|
-
<div class="collapsible-header red lighten-2 white-text waves-effect waves-light">
|
305
|
-
<i class="material-icons">bug_report</i><%=error%>
|
306
|
-
</div>
|
307
|
-
<div class="collapsible-body brown lighten-4">
|
308
|
-
<ul class="collection failedScenarioList">
|
309
|
-
<%features.each_with_index do |feature, f|%>
|
310
|
-
<%feature['elements'].each_with_index do |scenario, s|%>
|
311
|
-
<%if scenario['error']%>
|
312
|
-
<%if scenario['error'] == error%>
|
313
|
-
<li class="collection-item failedScenario brown lighten-5 red-text">
|
314
|
-
<i class="material-icons">highlight_off</i> <a class="modal-trigger red-text"href="#f<%=f%>s<%=s%>"><%=scenario['name']%></a>
|
315
|
-
</li>
|
316
|
-
<%end%>
|
317
|
-
<%end%>
|
318
|
-
<%end%>
|
319
|
-
<%end%>
|
320
|
-
</ul>
|
321
|
-
</div>
|
322
|
-
</li>
|
323
|
-
<%end%>
|
324
|
-
</ul>
|
325
|
-
</div>
|
326
|
-
</div>
|
327
|
-
</main>
|
328
|
-
|
329
|
-
<footer class="page-footer brown lighten-4">
|
330
|
-
<div class="footer-copyright brown lighten-1">
|
331
|
-
<div class="container">
|
332
|
-
Happy Reporting!
|
333
|
-
<a class="white-text text-lighten-4 right" href="https://rubygems.org/gems/report_builder">Generated by Report Builder</a>
|
334
|
-
</div>
|
335
|
-
</div>
|
336
|
-
</footer>
|
337
|
-
|
338
|
-
<script type="text/javascript">
|
339
|
-
$(document).ready(function () {
|
340
|
-
<%features.each_with_index do |feature, f|%><%(0..feature['elements'].size).each do |s|%>
|
341
|
-
$('#f<%=f%>s<%=s%>').modal();
|
342
|
-
<%end%><%end%>
|
343
|
-
});
|
344
|
-
</script>
|
345
|
-
<script type="text/javascript" src="https://cdn.rawgit.com/rajatthareja/ReportBuilder/v1.3/js/report.builder.min.js"></script>
|
346
|
-
<%if options[:additional_js]%>
|
347
|
-
<%if options[:additional_js] =~ /^http(|s):\/\/.*\.js$/%>
|
348
|
-
<script src="<%=options[:additional_js]%>"></script>
|
349
|
-
<%else%>
|
350
|
-
<script type="text/javascript">
|
351
|
-
<%= options[:additional_js]%>
|
352
|
-
</script>
|
353
|
-
<%end%>
|
354
|
-
<%end%>
|
355
|
-
</body>
|
356
|
-
</html>
|