cucumber_statistics 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cucumber_statistics/configuration.rb +2 -10
- data/lib/cucumber_statistics/formatter.rb +1 -3
- data/lib/cucumber_statistics/renderer.rb +9 -28
- data/lib/cucumber_statistics/renderer_helper.rb +13 -0
- data/lib/cucumber_statistics/version.rb +1 -1
- data/lib/cucumber_statistics/view/combined_statistics.html +299 -0
- data/lib/cucumber_statistics/view/combined_statistics.html.haml +169 -0
- data/spec/cucumber_statistics/renderer_spec.rb +12 -15
- metadata +4 -6
- data/lib/cucumber_statistics/view/feature_statistics.html.haml +0 -116
- data/lib/cucumber_statistics/view/scenario_statistics.html.haml +0 -116
- data/lib/cucumber_statistics/view/step_statistics.html +0 -162
- data/lib/cucumber_statistics/view/step_statistics.html.haml +0 -145
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec19a04037a81f031163499e648d8c9992df1b86
|
4
|
+
data.tar.gz: 543274b36cd231069f5d1870ff96632d1292a2e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 242840c624086bdba0cbc5b6c620200281fb297ff6b0d446dca93639c4a3619e04a3aaa1db887dabe711a6174fed3b85d6a62e6ecd28b2064b6f48873380f3a7
|
7
|
+
data.tar.gz: 2c07d22f8633436e1037090e63594d83821dc691431755aea3e7da1733ca1bc066d633786ee7ba7d1ff95389cd7c8e54c07fd6fbc4b49d98c7b7e3828cf5875e
|
@@ -22,16 +22,8 @@ module CucumberStatistics
|
|
22
22
|
"#{tmp_dir}/#{filename}"
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
tmp_file('
|
27
|
-
end
|
28
|
-
|
29
|
-
def result_scenario_statistics
|
30
|
-
tmp_file('scenario_statistics.html')
|
31
|
-
end
|
32
|
-
|
33
|
-
def result_feature_statistics
|
34
|
-
tmp_file('feature_statistics.html')
|
25
|
+
def result_combined_statistics
|
26
|
+
tmp_file('combined_statistics.html')
|
35
27
|
end
|
36
28
|
|
37
29
|
def resolve_path_from_root(relative_path)
|
@@ -95,9 +95,7 @@ module CucumberStatistics
|
|
95
95
|
|
96
96
|
@step_statistics.calculate
|
97
97
|
|
98
|
-
|
99
|
-
Renderer.render_scenario_statistics @scenario_statistics, @overall_statistics
|
100
|
-
Renderer.render_feature_statistics @feature_statistics, @overall_statistics
|
98
|
+
Renderer.render_combined_statistics @step_statistics, @scenario_statistics, @feature_statistics, @overall_statistics
|
101
99
|
end
|
102
100
|
end
|
103
101
|
end
|
@@ -9,23 +9,15 @@ module CucumberStatistics
|
|
9
9
|
|
10
10
|
$renderer_helper ||=
|
11
11
|
|
12
|
-
def
|
13
|
-
template = Tilt::HamlTemplate.new(File.expand_path('../view/
|
14
|
-
rendered_content = template.render(RendererHelper.new,
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
absolute_file_name
|
22
|
-
end
|
23
|
-
|
24
|
-
def render_scenario_statistics(scenario_statistics, overall_statistics)
|
25
|
-
template = Tilt::HamlTemplate.new(File.expand_path('../view/scenario_statistics.html.haml', __FILE__))
|
26
|
-
rendered_content = template.render(RendererHelper.new, scenario_statistics: scenario_statistics, overall_statistics: overall_statistics)
|
27
|
-
|
28
|
-
absolute_file_name = Configuration.result_scenario_statistics
|
12
|
+
def render_combined_statistics(step_statistics, scenario_statistics, feature_statistics, overall_statistics)
|
13
|
+
template = Tilt::HamlTemplate.new(File.expand_path('../view/combined_statistics.html.haml', __FILE__))
|
14
|
+
rendered_content = template.render(RendererHelper.new,
|
15
|
+
step_statistics: step_statistics,
|
16
|
+
scenario_statistics: scenario_statistics,
|
17
|
+
feature_statistics: feature_statistics,
|
18
|
+
overall_statistics: overall_statistics)
|
19
|
+
|
20
|
+
absolute_file_name = Configuration.result_combined_statistics
|
29
21
|
File.open(absolute_file_name, 'w') do |f|
|
30
22
|
f.write rendered_content
|
31
23
|
end
|
@@ -33,17 +25,6 @@ module CucumberStatistics
|
|
33
25
|
absolute_file_name
|
34
26
|
end
|
35
27
|
|
36
|
-
def render_feature_statistics(feature_statistics, overall_statistics)
|
37
|
-
template = Tilt::HamlTemplate.new(File.expand_path('../view/feature_statistics.html.haml', __FILE__))
|
38
|
-
rendered_content = template.render(RendererHelper.new, feature_statistics: feature_statistics, overall_statistics: overall_statistics)
|
39
|
-
|
40
|
-
absolute_file_name = Configuration.result_feature_statistics
|
41
|
-
File.open(absolute_file_name, 'w') do |f|
|
42
|
-
f.write rendered_content
|
43
|
-
end
|
44
|
-
|
45
|
-
absolute_file_name
|
46
|
-
end
|
47
28
|
end
|
48
29
|
end
|
49
30
|
end
|
@@ -28,6 +28,19 @@ module CucumberStatistics
|
|
28
28
|
%{<td data-value="#{duration}" title="#{duration}">#{format(duration)}</td>}
|
29
29
|
end
|
30
30
|
|
31
|
+
def alert_info_text(overall_statistics)
|
32
|
+
<<-HTML
|
33
|
+
<span>
|
34
|
+
#{overall_statistics.feature_count} Features,
|
35
|
+
#{overall_statistics.scenario_count} Scenarios,
|
36
|
+
#{overall_statistics.step_count} Steps completed in #{format(overall_statistics.duration)}.
|
37
|
+
<span class='text-muted pull-right small'>
|
38
|
+
Finished on #{format_date_time(overall_statistics.end_time)}
|
39
|
+
</span>
|
40
|
+
</span>
|
41
|
+
HTML
|
42
|
+
end
|
43
|
+
|
31
44
|
def warning_class(results, warning_results)
|
32
45
|
|
33
46
|
if warning_results.nil? || warning_results.empty?
|
@@ -0,0 +1,299 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang='en'>
|
3
|
+
<head>
|
4
|
+
<meta charset='utf-8'>
|
5
|
+
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
|
6
|
+
<meta content='width=device-width, initial-scale=1' name='viewport'>
|
7
|
+
<meta content='Cucumber Scenario Statistics' name='description'>
|
8
|
+
<meta content='AlienFast' name='author'>
|
9
|
+
<title>Cucumber Scenario Statistics</title>
|
10
|
+
<!-- Bootstrap core CSS -->
|
11
|
+
<link href='http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css' rel='stylesheet'>
|
12
|
+
<!-- Custom styles for this layout -->
|
13
|
+
<style>
|
14
|
+
body {
|
15
|
+
min-height: 2000px;
|
16
|
+
padding-top: 70px;
|
17
|
+
}
|
18
|
+
|
19
|
+
td {
|
20
|
+
white-space: nowrap;
|
21
|
+
/*max-width: 100px;*/
|
22
|
+
}
|
23
|
+
tr td:first-child {
|
24
|
+
overflow: hidden;
|
25
|
+
text-overflow: ellipsis;
|
26
|
+
max-width: 300px;
|
27
|
+
}
|
28
|
+
</style>
|
29
|
+
<link href='https://raw.githack.com/drvic10k/bootstrap-sortable/master/Contents/bootstrap-sortable.css' rel='stylesheet'>
|
30
|
+
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
31
|
+
<!--[if lt IE 9]>
|
32
|
+
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
33
|
+
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
34
|
+
<![endif]-->
|
35
|
+
</head>
|
36
|
+
<body>
|
37
|
+
<!-- Fixed navbar -->
|
38
|
+
<div class='navbar navbar-default navbar-fixed-top' role='navigation'>
|
39
|
+
<div class='container'>
|
40
|
+
<div class='navbar-header'>
|
41
|
+
<button class='navbar-toggle' data-target='.navbar-collapse' data-toggle='collapse' type='button'>
|
42
|
+
<span class='sr-only'>Toggle navigation</span>
|
43
|
+
<span class='icon-bar'></span>
|
44
|
+
<span class='icon-bar'></span>
|
45
|
+
<span class='icon-bar'></span>
|
46
|
+
</button>
|
47
|
+
<a class='navbar-brand' href='#'>cucumber_statistics</a>
|
48
|
+
</div>
|
49
|
+
<div class='navbar-collapse collapse'>
|
50
|
+
<ul class='nav navbar-nav navbar-right'>
|
51
|
+
<li>
|
52
|
+
<a href='https://github.com/alienfast/cucumber_statistics' target='other'>Github</a>
|
53
|
+
</li>
|
54
|
+
</ul>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
<!-- /.nav-collapse -->
|
59
|
+
<div class='container'>
|
60
|
+
<div class='navbar'>
|
61
|
+
<div class='tabbable'>
|
62
|
+
<ul class='nav nav-tabs'>
|
63
|
+
<li class='active'>
|
64
|
+
<a class='content_tab' href='#steps_tab' toggle='tab'>
|
65
|
+
Steps
|
66
|
+
</a>
|
67
|
+
</li>
|
68
|
+
<li>
|
69
|
+
<a class='content_tab' href='#scenarios_tab' toggle='tab'>
|
70
|
+
Scenarios
|
71
|
+
</a>
|
72
|
+
</li>
|
73
|
+
<li>
|
74
|
+
<a class='content_tab' href='#features_tab' toggle='tab'>
|
75
|
+
Features
|
76
|
+
</a>
|
77
|
+
</li>
|
78
|
+
</ul>
|
79
|
+
</div>
|
80
|
+
<div class='container'>
|
81
|
+
<div class='tab-content'>
|
82
|
+
<div class='tab-pane active' id='steps_tab'>
|
83
|
+
<!-- Main component for a primary marketing message or call to action -->
|
84
|
+
<div class='jumbotron'>
|
85
|
+
<h1>Cucumber step statistics</h1>
|
86
|
+
<p>... allows you to easily identify long running steps.</p>
|
87
|
+
</div>
|
88
|
+
<div class='alert alert-info'>
|
89
|
+
<span>
|
90
|
+
2 Features,
|
91
|
+
6 Scenarios,
|
92
|
+
24 Steps completed in 13.190s.
|
93
|
+
<span class='text-muted pull-right small'>
|
94
|
+
Finished on 08/11/2016 at 06:19PM
|
95
|
+
</span>
|
96
|
+
</span>
|
97
|
+
</div>
|
98
|
+
<table class='table table-bordered table-striped sortable'>
|
99
|
+
<thead>
|
100
|
+
<tr>
|
101
|
+
<th>Step</th>
|
102
|
+
<th>Fastest</th>
|
103
|
+
<th>Slowest</th>
|
104
|
+
<th>Variation</th>
|
105
|
+
<th>Variance</th>
|
106
|
+
<th>Std Deviation</th>
|
107
|
+
<th>Count</th>
|
108
|
+
<th>Average</th>
|
109
|
+
<th data-defaultsort='desc'>Total</th>
|
110
|
+
</tr>
|
111
|
+
</thead>
|
112
|
+
<tbody>
|
113
|
+
<tr>
|
114
|
+
<td title="features/scenarios/calculator2.feature:7">/^I have a calculator$/</td>
|
115
|
+
<td data-value="0.303663" title="0.303663">0.303s</td>
|
116
|
+
<td data-value="0.303663" title="0.303663">0.303s</td>
|
117
|
+
<td data-value="0.0" title="0.0">-</td>
|
118
|
+
<td data-value="" title="">-</td>
|
119
|
+
<td data-value="" title="">-</td>
|
120
|
+
<td data-value="1">1</td>
|
121
|
+
<td data-value="0.303663" title="0.303663">0.303s</td>
|
122
|
+
<td data-value="0.303663" title="0.303663">0.303s</td>
|
123
|
+
</tr>
|
124
|
+
<tr>
|
125
|
+
<td title="features/scenarios/calculator2.feature:31">/^I have entered (\d+(?:.\d+)?) into the calculator$/</td>
|
126
|
+
<td data-value="0.202248" title="0.202248">0.202s</td>
|
127
|
+
<td data-value="0.20617" title="0.20617">0.206s</td>
|
128
|
+
<td class="danger" data-value="0.003921999999999981" title="0.003921999999999981">0.003s</td>
|
129
|
+
<td data-value="1.7393255535714161e-06" title="1.7393255535714161e-06">< 0.000s</td>
|
130
|
+
<td data-value="0.0013188349227903453" title="0.0013188349227903453">0.001s</td>
|
131
|
+
<td data-value="8">8</td>
|
132
|
+
<td data-value="0.204455875" title="0.204455875">0.204s</td>
|
133
|
+
<td data-value="1.635647" title="1.635647">1.635s</td>
|
134
|
+
</tr>
|
135
|
+
<tr>
|
136
|
+
<td title="features/scenarios/calculator2.feature:31">/^I add$/</td>
|
137
|
+
<td data-value="0.503672" title="0.503672">0.503s</td>
|
138
|
+
<td data-value="0.505097" title="0.505097">0.505s</td>
|
139
|
+
<td data-value="0.0014250000000000096" title="0.0014250000000000096">0.001s</td>
|
140
|
+
<td data-value="4.3458091666665543e-07" title="4.3458091666665543e-07">< 0.000s</td>
|
141
|
+
<td data-value="0.0006592275151013157" title="0.0006592275151013157">< 0.000s</td>
|
142
|
+
<td data-value="4">4</td>
|
143
|
+
<td data-value="0.5045937500000001" title="0.5045937500000001">0.504s</td>
|
144
|
+
<td data-value="2.0183750000000003" title="2.0183750000000003">2.018s</td>
|
145
|
+
</tr>
|
146
|
+
<tr>
|
147
|
+
<td title="features/scenarios/calculator2.feature:31">/^the result should be (\d+(?:.\d+)?) on the screen$/</td>
|
148
|
+
<td data-value="0.60374" title="0.60374">0.603s</td>
|
149
|
+
<td data-value="0.605351" title="0.605351">0.605s</td>
|
150
|
+
<td data-value="0.001610999999999918" title="0.001610999999999918">0.001s</td>
|
151
|
+
<td data-value="5.657283333333006e-07" title="5.657283333333006e-07">< 0.000s</td>
|
152
|
+
<td data-value="0.0007521491430117437" title="0.0007521491430117437">< 0.000s</td>
|
153
|
+
<td data-value="4">4</td>
|
154
|
+
<td data-value="0.6043245" title="0.6043245">0.604s</td>
|
155
|
+
<td data-value="2.417298" title="2.417298">2.417s</td>
|
156
|
+
</tr>
|
157
|
+
<tr>
|
158
|
+
<td title="features/scenarios/demo.feature:5">/^I enter (.*) into google$/</td>
|
159
|
+
<td data-value="3.148444" title="3.148444">3.148s</td>
|
160
|
+
<td data-value="3.148444" title="3.148444">3.148s</td>
|
161
|
+
<td data-value="0.0" title="0.0">-</td>
|
162
|
+
<td data-value="" title="">-</td>
|
163
|
+
<td data-value="" title="">-</td>
|
164
|
+
<td data-value="1">1</td>
|
165
|
+
<td class="danger" data-value="3.148444" title="3.148444">3.148s</td>
|
166
|
+
<td class="danger" data-value="3.148444" title="3.148444">3.148s</td>
|
167
|
+
</tr>
|
168
|
+
<tr>
|
169
|
+
<td title="features/scenarios/demo.feature:6">/^I run the search$/</td>
|
170
|
+
<td data-value="1.820547" title="1.820547">1.820s</td>
|
171
|
+
<td data-value="1.820547" title="1.820547">1.820s</td>
|
172
|
+
<td data-value="0.0" title="0.0">-</td>
|
173
|
+
<td data-value="" title="">-</td>
|
174
|
+
<td data-value="" title="">-</td>
|
175
|
+
<td data-value="1">1</td>
|
176
|
+
<td data-value="1.820547" title="1.820547">1.820s</td>
|
177
|
+
<td data-value="1.820547" title="1.820547">1.820s</td>
|
178
|
+
</tr>
|
179
|
+
<tr>
|
180
|
+
<td title="features/scenarios/demo.feature:7">/^I see results$/</td>
|
181
|
+
<td data-value="0.855183" title="0.855183">0.855s</td>
|
182
|
+
<td data-value="0.855183" title="0.855183">0.855s</td>
|
183
|
+
<td data-value="0.0" title="0.0">-</td>
|
184
|
+
<td data-value="" title="">-</td>
|
185
|
+
<td data-value="" title="">-</td>
|
186
|
+
<td data-value="1">1</td>
|
187
|
+
<td data-value="0.855183" title="0.855183">0.855s</td>
|
188
|
+
<td data-value="0.855183" title="0.855183">0.855s</td>
|
189
|
+
</tr>
|
190
|
+
</tbody>
|
191
|
+
</table>
|
192
|
+
</div>
|
193
|
+
<!-- /container -->
|
194
|
+
<div class='tab-pane' id='scenarios_tab'>
|
195
|
+
<!-- Main component for a primary marketing message or call to action -->
|
196
|
+
<div class='jumbotron'>
|
197
|
+
<h1>Cucumber scenario statistics</h1>
|
198
|
+
<p>... find those slow scenarios.</p>
|
199
|
+
</div>
|
200
|
+
<div class='alert alert-info'>
|
201
|
+
<span>
|
202
|
+
2 Features,
|
203
|
+
6 Scenarios,
|
204
|
+
24 Steps completed in 13.190s.
|
205
|
+
<span class='text-muted pull-right small'>
|
206
|
+
Finished on 08/11/2016 at 06:19PM
|
207
|
+
</span>
|
208
|
+
</span>
|
209
|
+
</div>
|
210
|
+
<table class='table table-bordered table-striped sortable'>
|
211
|
+
<thead>
|
212
|
+
<tr>
|
213
|
+
<th>Scenario File</th>
|
214
|
+
<th data-defaultsort='desc'>Time</th>
|
215
|
+
</tr>
|
216
|
+
</thead>
|
217
|
+
<tbody>
|
218
|
+
<tr>
|
219
|
+
<td title="Regular numbers">features/scenarios/calculator2.feature:10</td>
|
220
|
+
<td data-value="1.316579" title="1.316579">1.316s</td>
|
221
|
+
</tr>
|
222
|
+
<tr>
|
223
|
+
<td title="Regular numbers again">features/scenarios/calculator2.feature:16</td>
|
224
|
+
<td data-value="1.314667" title="1.314667">1.314s</td>
|
225
|
+
</tr>
|
226
|
+
<tr>
|
227
|
+
<td title="| 3.5 | 5.2 | 8.7 |">features/scenarios/calculator2.feature:31</td>
|
228
|
+
<td data-value="3.136923" title="3.136923">3.136s</td>
|
229
|
+
</tr>
|
230
|
+
<tr>
|
231
|
+
<td title="Run a google search">features/scenarios/demo.feature:4</td>
|
232
|
+
<td data-value="2.730182" title="2.730182">2.730s</td>
|
233
|
+
</tr>
|
234
|
+
</tbody>
|
235
|
+
</table>
|
236
|
+
</div>
|
237
|
+
<!-- /container -->
|
238
|
+
<div class='tab-pane' id='features_tab'>
|
239
|
+
<!-- Main component for a primary marketing message or call to action -->
|
240
|
+
<div class='jumbotron'>
|
241
|
+
<h1>Cucumber feature statistics</h1>
|
242
|
+
<p>... find those slow features.</p>
|
243
|
+
</div>
|
244
|
+
<div class='alert alert-info'>
|
245
|
+
<span>
|
246
|
+
2 Features,
|
247
|
+
6 Scenarios,
|
248
|
+
24 Steps completed in 13.190s.
|
249
|
+
<span class='text-muted pull-right small'>
|
250
|
+
Finished on 08/11/2016 at 06:19PM
|
251
|
+
</span>
|
252
|
+
</span>
|
253
|
+
</div>
|
254
|
+
<table class='table table-bordered table-striped sortable'>
|
255
|
+
<thead>
|
256
|
+
<tr>
|
257
|
+
<th>Feature File</th>
|
258
|
+
<th data-defaultsort='desc'>Time</th>
|
259
|
+
</tr>
|
260
|
+
</thead>
|
261
|
+
<tbody>
|
262
|
+
<tr>
|
263
|
+
<td title="Addition
|
264
|
+
In order to check my work
|
265
|
+
As a mathematician
|
266
|
+
I want to be told the sum of two numbers">features/scenarios/calculator2.feature:1</td>
|
267
|
+
<td data-value="7.309345" title="7.309345">7.309s</td>
|
268
|
+
</tr>
|
269
|
+
<tr>
|
270
|
+
<td title="A simple test to show custom format methods">features/scenarios/demo.feature:1</td>
|
271
|
+
<td data-value="5.880826" title="5.880826">5.880s</td>
|
272
|
+
</tr>
|
273
|
+
</tbody>
|
274
|
+
</table>
|
275
|
+
</div>
|
276
|
+
</div>
|
277
|
+
</div>
|
278
|
+
</div>
|
279
|
+
</div>
|
280
|
+
<!-- /container -->
|
281
|
+
<!-- Bootstrap core JavaScript -->
|
282
|
+
<!-- \================================================== -->
|
283
|
+
<!-- Placed at the end of the document so the pages load faster -->
|
284
|
+
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js'></script>
|
285
|
+
<script src='http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js'></script>
|
286
|
+
<script src='https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/moment.min.js'></script>
|
287
|
+
<script src='https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/bootstrap-sortable.js'></script>
|
288
|
+
<script>
|
289
|
+
// Initialise on DOM ready
|
290
|
+
$(function() {
|
291
|
+
$.bootstrapSortable(true, 'reversed');
|
292
|
+
});
|
293
|
+
$('a.content_tab').click(function (e) {
|
294
|
+
e.preventDefault();
|
295
|
+
$(e.target).tab('show');
|
296
|
+
});
|
297
|
+
</script>
|
298
|
+
</body>
|
299
|
+
</html>
|
@@ -0,0 +1,169 @@
|
|
1
|
+
!!!
|
2
|
+
%html{:lang => "en"}
|
3
|
+
%head
|
4
|
+
%meta{:charset => "utf-8"}/
|
5
|
+
%meta{:content => "IE=edge", "http-equiv" => "X-UA-Compatible"}/
|
6
|
+
%meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}/
|
7
|
+
%meta{:content => "Cucumber Scenario Statistics", :name => "description"}/
|
8
|
+
%meta{:content => "AlienFast", :name => "author"}/
|
9
|
+
%title Cucumber Scenario Statistics
|
10
|
+
/ Bootstrap core CSS
|
11
|
+
%link{:href => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css", :rel => "stylesheet"}/
|
12
|
+
/ Custom styles for this layout
|
13
|
+
:css
|
14
|
+
body {
|
15
|
+
min-height: 2000px;
|
16
|
+
padding-top: 70px;
|
17
|
+
}
|
18
|
+
|
19
|
+
td {
|
20
|
+
white-space: nowrap;
|
21
|
+
/*max-width: 100px;*/
|
22
|
+
}
|
23
|
+
tr td:first-child {
|
24
|
+
overflow: hidden;
|
25
|
+
text-overflow: ellipsis;
|
26
|
+
max-width: 300px;
|
27
|
+
}
|
28
|
+
%link{:href => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Contents/bootstrap-sortable.css", :rel => "stylesheet"}/
|
29
|
+
/ HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
|
30
|
+
/[if lt IE 9]
|
31
|
+
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
32
|
+
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
33
|
+
%body
|
34
|
+
/ Fixed navbar
|
35
|
+
.navbar.navbar-default.navbar-fixed-top{:role => "navigation"}
|
36
|
+
.container
|
37
|
+
.navbar-header
|
38
|
+
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", :type => "button"}
|
39
|
+
%span.sr-only Toggle navigation
|
40
|
+
%span.icon-bar
|
41
|
+
%span.icon-bar
|
42
|
+
%span.icon-bar
|
43
|
+
%a.navbar-brand{:href => "#"} cucumber_statistics
|
44
|
+
.navbar-collapse.collapse
|
45
|
+
%ul.nav.navbar-nav.navbar-right
|
46
|
+
%li
|
47
|
+
%a{:href => "https://github.com/alienfast/cucumber_statistics", :target => 'other'} Github
|
48
|
+
/ /.nav-collapse
|
49
|
+
|
50
|
+
.container
|
51
|
+
.navbar
|
52
|
+
.tabbable
|
53
|
+
%ul.nav.nav-tabs
|
54
|
+
%li.active
|
55
|
+
%a.content_tab{:href => "#steps_tab",:toggle=>"tab"}
|
56
|
+
Steps
|
57
|
+
%li
|
58
|
+
%a.content_tab{:href => "#scenarios_tab", :toggle=>"tab"}
|
59
|
+
Scenarios
|
60
|
+
%li
|
61
|
+
%a.content_tab{:href => "#features_tab", :toggle=>"tab"}
|
62
|
+
Features
|
63
|
+
|
64
|
+
.container
|
65
|
+
.tab-content
|
66
|
+
#steps_tab.tab-pane.active
|
67
|
+
/ Main component for a primary marketing message or call to action
|
68
|
+
.jumbotron
|
69
|
+
%h1 Cucumber step statistics
|
70
|
+
%p ... allows you to easily identify long running steps.
|
71
|
+
|
72
|
+
.alert.alert-info
|
73
|
+
#{alert_info_text(overall_statistics)}
|
74
|
+
|
75
|
+
%table.table.table-bordered.table-striped.sortable
|
76
|
+
%thead
|
77
|
+
%tr
|
78
|
+
%th Step
|
79
|
+
%th Fastest
|
80
|
+
%th Slowest
|
81
|
+
%th Variation
|
82
|
+
%th Variance
|
83
|
+
%th Std Deviation
|
84
|
+
%th Count
|
85
|
+
%th Average
|
86
|
+
%th{"data-defaultsort" => "desc"} Total
|
87
|
+
%tbody
|
88
|
+
|
89
|
+
- highest_average = step_statistics.highest_average
|
90
|
+
- highest_total = step_statistics.highest_total
|
91
|
+
- highest_variation = step_statistics.highest_variation
|
92
|
+
|
93
|
+
- step_statistics.all.each do |step_results|
|
94
|
+
|
95
|
+
%tr
|
96
|
+
= name_td step_results
|
97
|
+
= time_td step_results, :fastest
|
98
|
+
= time_td step_results, :slowest
|
99
|
+
= time_td step_results, :variation, highest_variation
|
100
|
+
= time_td step_results, :variance
|
101
|
+
= time_td step_results, :standard_deviation
|
102
|
+
= count_td step_results, :count
|
103
|
+
= time_td step_results, :average, highest_average
|
104
|
+
= time_td step_results, :total, highest_total
|
105
|
+
/ /container
|
106
|
+
|
107
|
+
|
108
|
+
#scenarios_tab.tab-pane
|
109
|
+
/ Main component for a primary marketing message or call to action
|
110
|
+
.jumbotron
|
111
|
+
%h1 Cucumber scenario statistics
|
112
|
+
%p ... find those slow scenarios.
|
113
|
+
|
114
|
+
.alert.alert-info
|
115
|
+
#{alert_info_text(overall_statistics)}
|
116
|
+
|
117
|
+
%table.table.table-bordered.table-striped.sortable
|
118
|
+
%thead
|
119
|
+
%tr
|
120
|
+
%th Scenario File
|
121
|
+
%th{"data-defaultsort" => "desc"} Time
|
122
|
+
%tbody
|
123
|
+
- scenario_statistics.all.each do |file_name, scenario_result|
|
124
|
+
%tr
|
125
|
+
= std_file_td file_name, scenario_result[:scenario_name]
|
126
|
+
= std_time_td scenario_result[:duration]
|
127
|
+
/ /container
|
128
|
+
|
129
|
+
|
130
|
+
#features_tab.tab-pane
|
131
|
+
/ Main component for a primary marketing message or call to action
|
132
|
+
.jumbotron
|
133
|
+
%h1 Cucumber feature statistics
|
134
|
+
%p ... find those slow features.
|
135
|
+
|
136
|
+
.alert.alert-info
|
137
|
+
#{alert_info_text(overall_statistics)}
|
138
|
+
|
139
|
+
%table.table.table-bordered.table-striped.sortable
|
140
|
+
%thead
|
141
|
+
%tr
|
142
|
+
%th Feature File
|
143
|
+
%th{"data-defaultsort" => "desc"} Time
|
144
|
+
%tbody
|
145
|
+
- feature_statistics.all.each do |file_name, feature_result|
|
146
|
+
|
147
|
+
%tr
|
148
|
+
= std_file_td file_name, feature_result[:feature_name]
|
149
|
+
= std_time_td feature_result[:duration]
|
150
|
+
/ /container
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
/ Bootstrap core JavaScript
|
155
|
+
/ \==================================================
|
156
|
+
/ Placed at the end of the document so the pages load faster
|
157
|
+
%script{:src => "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"}
|
158
|
+
%script{:src => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"}
|
159
|
+
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/moment.min.js"}
|
160
|
+
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/bootstrap-sortable.js"}
|
161
|
+
:javascript
|
162
|
+
// Initialise on DOM ready
|
163
|
+
$(function() {
|
164
|
+
$.bootstrapSortable(true, 'reversed');
|
165
|
+
});
|
166
|
+
$('a.content_tab').click(function (e) {
|
167
|
+
e.preventDefault();
|
168
|
+
$(e.target).tab('show');
|
169
|
+
});
|
@@ -30,6 +30,9 @@ module CucumberStatistics
|
|
30
30
|
record_scenario 'my scenario 3', 17.342, '/Users/kross/alienfast/acme/features/user experience/view.feature:2'
|
31
31
|
record_scenario 'my scenario 3', 3.2, '/Users/kross/alienfast/acme/features/user experience/view.feature:23'
|
32
32
|
|
33
|
+
record_feature 'my admin feature', 50, '/Users/kross/alienfast/acme/features/account management/admin_cancel_account.feature'
|
34
|
+
record_feature 'my user feature', 50, '/Users/kross/alienfast/acme/features/user experience/view.feature'
|
35
|
+
|
33
36
|
overall_statistics.end_time = Time.now
|
34
37
|
step_statistics.calculate
|
35
38
|
end
|
@@ -38,21 +41,9 @@ module CucumberStatistics
|
|
38
41
|
describe 'render statistics' do
|
39
42
|
context 'should render content' do
|
40
43
|
|
41
|
-
it 'renders
|
42
|
-
expect(File.exists?(Configuration.
|
43
|
-
absolute_file_name = Renderer.
|
44
|
-
expect(File.exists?(absolute_file_name)).to eql true
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'renders scenario results file' do
|
48
|
-
expect(File.exists?(Configuration.result_scenario_statistics)).to eql false
|
49
|
-
absolute_file_name = Renderer.render_scenario_statistics scenario_statistics, overall_statistics
|
50
|
-
expect(File.exists?(absolute_file_name)).to eql true
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'renders feature results file' do
|
54
|
-
expect(File.exists?(Configuration.result_feature_statistics)).to eql false
|
55
|
-
absolute_file_name = Renderer.render_feature_statistics feature_statistics, overall_statistics
|
44
|
+
it 'renders combined results file' do
|
45
|
+
expect(File.exists?(Configuration.result_combined_statistics)).to eql false
|
46
|
+
absolute_file_name = Renderer.render_combined_statistics step_statistics, scenario_statistics, feature_statistics, overall_statistics
|
56
47
|
expect(File.exists?(absolute_file_name)).to eql true
|
57
48
|
end
|
58
49
|
|
@@ -70,5 +61,11 @@ module CucumberStatistics
|
|
70
61
|
scenario_statistics.record scenario_name, duration, file_colon_line
|
71
62
|
overall_statistics.scenario_count_inc
|
72
63
|
end
|
64
|
+
|
65
|
+
def record_feature(feature_name, duration, file_colon_line)
|
66
|
+
# fake a source for convenience
|
67
|
+
feature_statistics.record feature_name, duration, file_colon_line
|
68
|
+
overall_statistics.feature_count_inc
|
69
|
+
end
|
73
70
|
end
|
74
71
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber_statistics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Ross
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,10 +136,8 @@ files:
|
|
136
136
|
- lib/cucumber_statistics/step_statistics.rb
|
137
137
|
- lib/cucumber_statistics/unused_steps.rb
|
138
138
|
- lib/cucumber_statistics/version.rb
|
139
|
-
- lib/cucumber_statistics/view/
|
140
|
-
- lib/cucumber_statistics/view/
|
141
|
-
- lib/cucumber_statistics/view/step_statistics.html
|
142
|
-
- lib/cucumber_statistics/view/step_statistics.html.haml
|
139
|
+
- lib/cucumber_statistics/view/combined_statistics.html
|
140
|
+
- lib/cucumber_statistics/view/combined_statistics.html.haml
|
143
141
|
- notes.txt
|
144
142
|
- spec/cucumber_statistics/configuration_spec.rb
|
145
143
|
- spec/cucumber_statistics/feature_statistics_spec.rb
|
@@ -1,116 +0,0 @@
|
|
1
|
-
!!!
|
2
|
-
%html{:lang => "en"}
|
3
|
-
%head
|
4
|
-
%meta{:charset => "utf-8"}/
|
5
|
-
%meta{:content => "IE=edge", "http-equiv" => "X-UA-Compatible"}/
|
6
|
-
%meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}/
|
7
|
-
%meta{:content => "Cucumber Feature Statistics", :name => "description"}/
|
8
|
-
%meta{:content => "AlienFast", :name => "author"}/
|
9
|
-
%title Cucumber Feature Statistics
|
10
|
-
/ Bootstrap core CSS
|
11
|
-
%link{:href => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css", :rel => "stylesheet"}/
|
12
|
-
/ Custom styles for this layout
|
13
|
-
:css
|
14
|
-
body {
|
15
|
-
min-height: 2000px;
|
16
|
-
padding-top: 70px;
|
17
|
-
}
|
18
|
-
|
19
|
-
td {
|
20
|
-
white-space: nowrap;
|
21
|
-
/*max-width: 100px;*/
|
22
|
-
}
|
23
|
-
tr td:first-child {
|
24
|
-
overflow: hidden;
|
25
|
-
text-overflow: ellipsis;
|
26
|
-
max-width: 300px;
|
27
|
-
}
|
28
|
-
%link{:href => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Contents/bootstrap-sortable.css", :rel => "stylesheet"}/
|
29
|
-
/ HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
|
30
|
-
/[if lt IE 9]
|
31
|
-
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
32
|
-
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
33
|
-
%body
|
34
|
-
/ Fixed navbar
|
35
|
-
.navbar.navbar-default.navbar-fixed-top{:role => "navigation"}
|
36
|
-
.container
|
37
|
-
.navbar-header
|
38
|
-
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", :type => "button"}
|
39
|
-
%span.sr-only Toggle navigation
|
40
|
-
%span.icon-bar
|
41
|
-
%span.icon-bar
|
42
|
-
%span.icon-bar
|
43
|
-
%a.navbar-brand{:href => "#"} cucumber_statistics
|
44
|
-
.navbar-collapse.collapse
|
45
|
-
-#%ul.nav.navbar-nav
|
46
|
-
%li.active
|
47
|
-
%a{:href => "#"} Home
|
48
|
-
%li
|
49
|
-
%a{:href => "#about"} About
|
50
|
-
%li
|
51
|
-
%a{:href => "#contact"} Contact
|
52
|
-
%li.dropdown
|
53
|
-
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
|
54
|
-
Dropdown
|
55
|
-
%b.caret
|
56
|
-
%ul.dropdown-menu
|
57
|
-
%li
|
58
|
-
%a{:href => "#"} Action
|
59
|
-
%li
|
60
|
-
%a{:href => "#"} Another action
|
61
|
-
%li
|
62
|
-
%a{:href => "#"} Something else here
|
63
|
-
%li.divider
|
64
|
-
%li.dropdown-header Nav header
|
65
|
-
%li
|
66
|
-
%a{:href => "#"} Separated link
|
67
|
-
%li
|
68
|
-
%a{:href => "#"} One more separated link
|
69
|
-
%ul.nav.navbar-nav.navbar-right
|
70
|
-
-#%li
|
71
|
-
-# %a{:href => "../navbar/"} Default
|
72
|
-
-#%li
|
73
|
-
-# %a{:href => "../navbar-static-top/"} Static top
|
74
|
-
%li
|
75
|
-
%a{:href => "https://github.com/alienfast/cucumber_statistics", :target => 'other'} Github
|
76
|
-
/ /.nav-collapse
|
77
|
-
.container
|
78
|
-
/ Main component for a primary marketing message or call to action
|
79
|
-
.jumbotron
|
80
|
-
%h1 Cucumber feature statistics
|
81
|
-
%p ... find those slow features.
|
82
|
-
|
83
|
-
.alert.alert-info
|
84
|
-
%span
|
85
|
-
#{overall_statistics.feature_count} Features,
|
86
|
-
#{overall_statistics.scenario_count} Scenarios,
|
87
|
-
#{overall_statistics.step_count} Steps completed in #{format(overall_statistics.duration)}.
|
88
|
-
%span.text-muted.pull-right.small
|
89
|
-
Finished on #{format_date_time(overall_statistics.end_time)}
|
90
|
-
|
91
|
-
%table.table.table-bordered.table-striped.sortable
|
92
|
-
%thead
|
93
|
-
%tr
|
94
|
-
%th Feature File
|
95
|
-
%th{"data-defaultsort" => "desc"} Time
|
96
|
-
%tbody
|
97
|
-
|
98
|
-
- feature_statistics.all.each do |file_name, feature_result|
|
99
|
-
|
100
|
-
%tr
|
101
|
-
= std_file_td file_name, feature_result[:feature_name]
|
102
|
-
= std_time_td feature_result[:duration]
|
103
|
-
/ /container
|
104
|
-
/
|
105
|
-
Bootstrap core JavaScript
|
106
|
-
\==================================================
|
107
|
-
/ Placed at the end of the document so the pages load faster
|
108
|
-
%script{:src => "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"}
|
109
|
-
%script{:src => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"}
|
110
|
-
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/moment.min.js"}
|
111
|
-
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/bootstrap-sortable.js"}
|
112
|
-
:javascript
|
113
|
-
// Initialise on DOM ready
|
114
|
-
$(function() {
|
115
|
-
$.bootstrapSortable(true, 'reversed');
|
116
|
-
});
|
@@ -1,116 +0,0 @@
|
|
1
|
-
!!!
|
2
|
-
%html{:lang => "en"}
|
3
|
-
%head
|
4
|
-
%meta{:charset => "utf-8"}/
|
5
|
-
%meta{:content => "IE=edge", "http-equiv" => "X-UA-Compatible"}/
|
6
|
-
%meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}/
|
7
|
-
%meta{:content => "Cucumber Scenario Statistics", :name => "description"}/
|
8
|
-
%meta{:content => "AlienFast", :name => "author"}/
|
9
|
-
%title Cucumber Scenario Statistics
|
10
|
-
/ Bootstrap core CSS
|
11
|
-
%link{:href => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css", :rel => "stylesheet"}/
|
12
|
-
/ Custom styles for this layout
|
13
|
-
:css
|
14
|
-
body {
|
15
|
-
min-height: 2000px;
|
16
|
-
padding-top: 70px;
|
17
|
-
}
|
18
|
-
|
19
|
-
td {
|
20
|
-
white-space: nowrap;
|
21
|
-
/*max-width: 100px;*/
|
22
|
-
}
|
23
|
-
tr td:first-child {
|
24
|
-
overflow: hidden;
|
25
|
-
text-overflow: ellipsis;
|
26
|
-
max-width: 300px;
|
27
|
-
}
|
28
|
-
%link{:href => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Contents/bootstrap-sortable.css", :rel => "stylesheet"}/
|
29
|
-
/ HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
|
30
|
-
/[if lt IE 9]
|
31
|
-
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
32
|
-
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
33
|
-
%body
|
34
|
-
/ Fixed navbar
|
35
|
-
.navbar.navbar-default.navbar-fixed-top{:role => "navigation"}
|
36
|
-
.container
|
37
|
-
.navbar-header
|
38
|
-
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", :type => "button"}
|
39
|
-
%span.sr-only Toggle navigation
|
40
|
-
%span.icon-bar
|
41
|
-
%span.icon-bar
|
42
|
-
%span.icon-bar
|
43
|
-
%a.navbar-brand{:href => "#"} cucumber_statistics
|
44
|
-
.navbar-collapse.collapse
|
45
|
-
-#%ul.nav.navbar-nav
|
46
|
-
%li.active
|
47
|
-
%a{:href => "#"} Home
|
48
|
-
%li
|
49
|
-
%a{:href => "#about"} About
|
50
|
-
%li
|
51
|
-
%a{:href => "#contact"} Contact
|
52
|
-
%li.dropdown
|
53
|
-
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
|
54
|
-
Dropdown
|
55
|
-
%b.caret
|
56
|
-
%ul.dropdown-menu
|
57
|
-
%li
|
58
|
-
%a{:href => "#"} Action
|
59
|
-
%li
|
60
|
-
%a{:href => "#"} Another action
|
61
|
-
%li
|
62
|
-
%a{:href => "#"} Something else here
|
63
|
-
%li.divider
|
64
|
-
%li.dropdown-header Nav header
|
65
|
-
%li
|
66
|
-
%a{:href => "#"} Separated link
|
67
|
-
%li
|
68
|
-
%a{:href => "#"} One more separated link
|
69
|
-
%ul.nav.navbar-nav.navbar-right
|
70
|
-
-#%li
|
71
|
-
-# %a{:href => "../navbar/"} Default
|
72
|
-
-#%li
|
73
|
-
-# %a{:href => "../navbar-static-top/"} Static top
|
74
|
-
%li
|
75
|
-
%a{:href => "https://github.com/alienfast/cucumber_statistics", :target => 'other'} Github
|
76
|
-
/ /.nav-collapse
|
77
|
-
.container
|
78
|
-
/ Main component for a primary marketing message or call to action
|
79
|
-
.jumbotron
|
80
|
-
%h1 Cucumber scenario statistics
|
81
|
-
%p ... find those slow scenarios.
|
82
|
-
|
83
|
-
.alert.alert-info
|
84
|
-
%span
|
85
|
-
#{overall_statistics.feature_count} Features,
|
86
|
-
#{overall_statistics.scenario_count} Scenarios,
|
87
|
-
#{overall_statistics.step_count} Steps completed in #{format(overall_statistics.duration)}.
|
88
|
-
%span.text-muted.pull-right.small
|
89
|
-
Finished on #{format_date_time(overall_statistics.end_time)}
|
90
|
-
|
91
|
-
%table.table.table-bordered.table-striped.sortable
|
92
|
-
%thead
|
93
|
-
%tr
|
94
|
-
%th Scenario File
|
95
|
-
%th{"data-defaultsort" => "desc"} Time
|
96
|
-
%tbody
|
97
|
-
|
98
|
-
- scenario_statistics.all.each do |file_name, scenario_result|
|
99
|
-
|
100
|
-
%tr
|
101
|
-
= std_file_td file_name, scenario_result[:scenario_name]
|
102
|
-
= std_time_td scenario_result[:duration]
|
103
|
-
/ /container
|
104
|
-
/
|
105
|
-
Bootstrap core JavaScript
|
106
|
-
\==================================================
|
107
|
-
/ Placed at the end of the document so the pages load faster
|
108
|
-
%script{:src => "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"}
|
109
|
-
%script{:src => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"}
|
110
|
-
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/moment.min.js"}
|
111
|
-
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/bootstrap-sortable.js"}
|
112
|
-
:javascript
|
113
|
-
// Initialise on DOM ready
|
114
|
-
$(function() {
|
115
|
-
$.bootstrapSortable(true, 'reversed');
|
116
|
-
});
|
@@ -1,162 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html lang="en">
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
-
<meta name="description" content="Cucumber Step Statistics">
|
8
|
-
<meta name="author" content="AlienFast">
|
9
|
-
|
10
|
-
<title>Cucumber Step Statistics</title>
|
11
|
-
|
12
|
-
<!-- Bootstrap core CSS -->
|
13
|
-
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
|
14
|
-
|
15
|
-
<!-- Custom styles for this layout -->
|
16
|
-
<style type="text/css">
|
17
|
-
body {
|
18
|
-
min-height: 2000px;
|
19
|
-
padding-top: 70px;
|
20
|
-
}
|
21
|
-
|
22
|
-
td {
|
23
|
-
white-space: nowrap;
|
24
|
-
/*max-width: 100px;*/
|
25
|
-
}
|
26
|
-
tr td:first-child {
|
27
|
-
overflow: hidden;
|
28
|
-
text-overflow: ellipsis;
|
29
|
-
max-width: 300px;
|
30
|
-
}
|
31
|
-
</style>
|
32
|
-
|
33
|
-
<link href="https://raw.githack.com/drvic10k/bootstrap-sortable/master/Contents/bootstrap-sortable.css" rel="stylesheet">
|
34
|
-
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
35
|
-
<!--[if lt IE 9]>
|
36
|
-
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
37
|
-
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
38
|
-
<![endif]-->
|
39
|
-
</head>
|
40
|
-
|
41
|
-
<body>
|
42
|
-
|
43
|
-
<!-- Fixed navbar -->
|
44
|
-
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
|
45
|
-
<div class="container">
|
46
|
-
<div class="navbar-header">
|
47
|
-
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
48
|
-
<span class="sr-only">Toggle navigation</span>
|
49
|
-
<span class="icon-bar"></span>
|
50
|
-
<span class="icon-bar"></span>
|
51
|
-
<span class="icon-bar"></span>
|
52
|
-
</button>
|
53
|
-
<a class="navbar-brand" href="#">cucumber_statistics</a>
|
54
|
-
</div>
|
55
|
-
<div class="navbar-collapse collapse">
|
56
|
-
<ul class="nav navbar-nav">
|
57
|
-
<li class="active"><a href="#">Home</a></li>
|
58
|
-
<li><a href="#about">About</a></li>
|
59
|
-
<li><a href="#contact">Contact</a></li>
|
60
|
-
<li class="dropdown">
|
61
|
-
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
62
|
-
<ul class="dropdown-menu">
|
63
|
-
<li><a href="#">Action</a></li>
|
64
|
-
<li><a href="#">Another action</a></li>
|
65
|
-
<li><a href="#">Something else here</a></li>
|
66
|
-
<li class="divider"></li>
|
67
|
-
<li class="dropdown-header">Nav header</li>
|
68
|
-
<li><a href="#">Separated link</a></li>
|
69
|
-
<li><a href="#">One more separated link</a></li>
|
70
|
-
</ul>
|
71
|
-
</li>
|
72
|
-
</ul>
|
73
|
-
<ul class="nav navbar-nav navbar-right">
|
74
|
-
<li><a href="../navbar/">Default</a></li>
|
75
|
-
<li><a href="../navbar-static-top/">Static top</a></li>
|
76
|
-
<li class="active"><a href="./">Fixed top</a></li>
|
77
|
-
</ul>
|
78
|
-
</div>
|
79
|
-
<!--/.nav-collapse -->
|
80
|
-
</div>
|
81
|
-
</div>
|
82
|
-
|
83
|
-
<div class="container">
|
84
|
-
|
85
|
-
<!-- Main component for a primary marketing message or call to action -->
|
86
|
-
<div class="jumbotron">
|
87
|
-
<h1>Cucumber step statistics</h1>
|
88
|
-
|
89
|
-
<p>... allows you to easily diagnose long running steps.</p>
|
90
|
-
</div>
|
91
|
-
|
92
|
-
<!--
|
93
|
-
step
|
94
|
-
fastest
|
95
|
-
slowest
|
96
|
-
variation
|
97
|
-
variance
|
98
|
-
standard_deviation
|
99
|
-
count
|
100
|
-
average
|
101
|
-
total
|
102
|
-
-->
|
103
|
-
<table class="table table-bordered table-striped sortable">
|
104
|
-
<thead>
|
105
|
-
<tr>
|
106
|
-
<th>Step</th>
|
107
|
-
<th>Fastest</th>
|
108
|
-
<th>Slowest</th>
|
109
|
-
<th>Variation</th>
|
110
|
-
<th>Variance</th>
|
111
|
-
<th>Std Deviation</th>
|
112
|
-
<th>Count</th>
|
113
|
-
<th>Average</th>
|
114
|
-
<th data-defaultsort="desc">Total</th>
|
115
|
-
</tr>
|
116
|
-
|
117
|
-
</thead>
|
118
|
-
<tbody>
|
119
|
-
<tr>
|
120
|
-
<td>/^I am logged in as ((?:(?:)|(?:(?:a|an|another|the|that) )?(?:(?:(?:(?:first|last|(?:\d+(?:st|nd|rd|th))) )?(?:paper[_ ]trail[_ ]version|acts[_ ]as[_ ]taggable[_ ]on[_ ]tag|acts[_ ]as[_ ]taggable[_ ]on[_ ]tagging|user|active[_ ]record[_ ]schema[_ ]migration|plan|feature|reference[_ ]type|allergy|relationship[_ ]type|allergy[_ ]type|medical[_ ]condition[_ ]type|account|rspec[_ ]account|address|sacred[_ ]heart[_ ]address|calendar[_ ]item|catalog|child|jack|jennifer[_ ]dillon|coupon|employment|enrollment|medical[_ ]condition|membership|organization|sacredheart|participation|person|sacredheart[_ ]person|bob|perry|carla|jordan|alienfast|alienfast[_ ]person|blake|kevin|alicia|product|relationship|subscription|rspec[_ ]subscription|tenant|transaction|admin|admin[_ ]not[_ ]owner|staff|consumer|consumer[_ ]dad|support|bmcdaniel|kross|awaters|verification))|(?:(?:paper[_ ]trail[_ ]version|acts[_ ]as[_ ]taggable[_ ]on[_ ]tag|acts[_ ]as[_ ]taggable[_ ]on[_ ]tagging|user|active[_ ]record[_ ]schema[_ ]migration|plan|feature|reference[_ ]type|allergy|relationship[_ ]type|allergy[_ ]type|medical[_ ]condition[_ ]type|account|rspec[_ ]account|address|sacred[_ ]heart[_ ]address|calendar[_ ]item|catalog|child|jack|jennifer[_ ]dillon|coupon|employment|enrollment|medical[_ ]condition|membership|organization|sacredheart|participation|person|sacredheart[_ ]person|bob|perry|carla|jordan|alienfast|alienfast[_ ]person|blake|kevin|alicia|product|relationship|subscription|rspec[_ ]subscription|tenant|transaction|admin|admin[_ ]not[_ ]owner|staff|consumer|consumer[_ ]dad|support|bmcdaniel|kross|awaters|verification)(?::? "(?:\\"|[^\"]|\.)*"))))) at (\w+)$/</td>
|
121
|
-
<td>7.051</td>
|
122
|
-
<td>4.099</td>
|
123
|
-
<td>4.099</td>
|
124
|
-
<td>0.320</td>
|
125
|
-
<td>0.566</td>
|
126
|
-
<td>76</td>
|
127
|
-
<td>0.490</td>
|
128
|
-
<td>37.288</td>
|
129
|
-
</tr>
|
130
|
-
<tr>
|
131
|
-
<td>/^Blah I am logged in as ((?:(?:)|(?:(?:a|an|another|the|that) )?(?:(?:(?:(?:first|last|(?:\d+(?:st|nd|rd|th))) )?(?:paper[_ ]trail[_ ]version|acts[_ ]as[_ ]taggable[_ ]on[_ ]tag|acts[_ ]as[_ ]taggable[_ ]on[_ ]tagging|user|active[_ ]record[_ ]schema[_ ]migration|plan|feature|reference[_ ]type|allergy|relationship[_ ]type|allergy[_ ]type|medical[_ ]condition[_ ]type|account|rspec[_ ]account|address|sacred[_ ]heart[_ ]address|calendar[_ ]item|catalog|child|jack|jennifer[_ ]dillon|coupon|employment|enrollment|medical[_ ]condition|membership|organization|sacredheart|participation|person|sacredheart[_ ]person|bob|perry|carla|jordan|alienfast|alienfast[_ ]person|blake|kevin|alicia|product|relationship|subscription|rspec[_ ]subscription|tenant|transaction|admin|admin[_ ]not[_ ]owner|staff|consumer|consumer[_ ]dad|support|bmcdaniel|kross|awaters|verification))|(?:(?:paper[_ ]trail[_ ]version|acts[_ ]as[_ ]taggable[_ ]on[_ ]tag|acts[_ ]as[_ ]taggable[_ ]on[_ ]tagging|user|active[_ ]record[_ ]schema[_ ]migration|plan|feature|reference[_ ]type|allergy|relationship[_ ]type|allergy[_ ]type|medical[_ ]condition[_ ]type|account|rspec[_ ]account|address|sacred[_ ]heart[_ ]address|calendar[_ ]item|catalog|child|jack|jennifer[_ ]dillon|coupon|employment|enrollment|medical[_ ]condition|membership|organization|sacredheart|participation|person|sacredheart[_ ]person|bob|perry|carla|jordan|alienfast|alienfast[_ ]person|blake|kevin|alicia|product|relationship|subscription|rspec[_ ]subscription|tenant|transaction|admin|admin[_ ]not[_ ]owner|staff|consumer|consumer[_ ]dad|support|bmcdaniel|kross|awaters|verification)(?::? "(?:\\"|[^\"]|\.)*"))))) at (\w+)$/</td>
|
132
|
-
<td>4.051</td>
|
133
|
-
<td>8.099</td>
|
134
|
-
<td>5.099</td>
|
135
|
-
<td>0.420</td>
|
136
|
-
<td>0.966</td>
|
137
|
-
<td>6</td>
|
138
|
-
<td>1.490</td>
|
139
|
-
<td>31.288</td>
|
140
|
-
</tr>
|
141
|
-
</tbody>
|
142
|
-
</table>
|
143
|
-
|
144
|
-
</div>
|
145
|
-
<!-- /container -->
|
146
|
-
|
147
|
-
|
148
|
-
<!-- Bootstrap core JavaScript
|
149
|
-
================================================== -->
|
150
|
-
<!-- Placed at the end of the document so the pages load faster -->
|
151
|
-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
152
|
-
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
153
|
-
<script src="https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/moment.min.js"></script>
|
154
|
-
<script src="https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/bootstrap-sortable.js"></script>
|
155
|
-
<script type="text/javascript">
|
156
|
-
// Initialise on DOM ready
|
157
|
-
$(function() {
|
158
|
-
$.bootstrapSortable(true, 'reversed');
|
159
|
-
});
|
160
|
-
</script>
|
161
|
-
</body>
|
162
|
-
</html>
|
@@ -1,145 +0,0 @@
|
|
1
|
-
!!!
|
2
|
-
%html{:lang => "en"}
|
3
|
-
%head
|
4
|
-
%meta{:charset => "utf-8"}/
|
5
|
-
%meta{:content => "IE=edge", "http-equiv" => "X-UA-Compatible"}/
|
6
|
-
%meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}/
|
7
|
-
%meta{:content => "Cucumber Step Statistics", :name => "description"}/
|
8
|
-
%meta{:content => "AlienFast", :name => "author"}/
|
9
|
-
%title Cucumber Step Statistics
|
10
|
-
/ Bootstrap core CSS
|
11
|
-
%link{:href => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css", :rel => "stylesheet"}/
|
12
|
-
/ Custom styles for this layout
|
13
|
-
:css
|
14
|
-
body {
|
15
|
-
min-height: 2000px;
|
16
|
-
padding-top: 70px;
|
17
|
-
}
|
18
|
-
|
19
|
-
td {
|
20
|
-
white-space: nowrap;
|
21
|
-
/*max-width: 100px;*/
|
22
|
-
}
|
23
|
-
tr td:first-child {
|
24
|
-
overflow: hidden;
|
25
|
-
text-overflow: ellipsis;
|
26
|
-
max-width: 300px;
|
27
|
-
}
|
28
|
-
%link{:href => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Contents/bootstrap-sortable.css", :rel => "stylesheet"}/
|
29
|
-
/ HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
|
30
|
-
/[if lt IE 9]
|
31
|
-
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
32
|
-
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
33
|
-
%body
|
34
|
-
/ Fixed navbar
|
35
|
-
.navbar.navbar-default.navbar-fixed-top{:role => "navigation"}
|
36
|
-
.container
|
37
|
-
.navbar-header
|
38
|
-
%button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", :type => "button"}
|
39
|
-
%span.sr-only Toggle navigation
|
40
|
-
%span.icon-bar
|
41
|
-
%span.icon-bar
|
42
|
-
%span.icon-bar
|
43
|
-
%a.navbar-brand{:href => "#"} cucumber_statistics
|
44
|
-
.navbar-collapse.collapse
|
45
|
-
-#%ul.nav.navbar-nav
|
46
|
-
%li.active
|
47
|
-
%a{:href => "#"} Home
|
48
|
-
%li
|
49
|
-
%a{:href => "#about"} About
|
50
|
-
%li
|
51
|
-
%a{:href => "#contact"} Contact
|
52
|
-
%li.dropdown
|
53
|
-
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
|
54
|
-
Dropdown
|
55
|
-
%b.caret
|
56
|
-
%ul.dropdown-menu
|
57
|
-
%li
|
58
|
-
%a{:href => "#"} Action
|
59
|
-
%li
|
60
|
-
%a{:href => "#"} Another action
|
61
|
-
%li
|
62
|
-
%a{:href => "#"} Something else here
|
63
|
-
%li.divider
|
64
|
-
%li.dropdown-header Nav header
|
65
|
-
%li
|
66
|
-
%a{:href => "#"} Separated link
|
67
|
-
%li
|
68
|
-
%a{:href => "#"} One more separated link
|
69
|
-
%ul.nav.navbar-nav.navbar-right
|
70
|
-
-#%li
|
71
|
-
-# %a{:href => "../navbar/"} Default
|
72
|
-
-#%li
|
73
|
-
-# %a{:href => "../navbar-static-top/"} Static top
|
74
|
-
%li
|
75
|
-
%a{:href => "https://github.com/alienfast/cucumber_statistics", :target => 'other'} Github
|
76
|
-
/ /.nav-collapse
|
77
|
-
.container
|
78
|
-
/ Main component for a primary marketing message or call to action
|
79
|
-
.jumbotron
|
80
|
-
%h1 Cucumber step statistics
|
81
|
-
%p ... allows you to easily identify long running steps.
|
82
|
-
|
83
|
-
.alert.alert-info
|
84
|
-
%span
|
85
|
-
#{overall_statistics.feature_count} Features,
|
86
|
-
#{overall_statistics.scenario_count} Scenarios,
|
87
|
-
#{overall_statistics.step_count} Steps completed in #{format(overall_statistics.duration)}.
|
88
|
-
%span.text-muted.pull-right.small
|
89
|
-
Finished on #{format_date_time(overall_statistics.end_time)}
|
90
|
-
|
91
|
-
%table.table.table-bordered.table-striped.sortable
|
92
|
-
%thead
|
93
|
-
%tr
|
94
|
-
%th Step
|
95
|
-
%th Fastest
|
96
|
-
%th Slowest
|
97
|
-
%th Variation
|
98
|
-
%th Variance
|
99
|
-
%th Std Deviation
|
100
|
-
%th Count
|
101
|
-
%th Average
|
102
|
-
%th{"data-defaultsort" => "desc"} Total
|
103
|
-
%tbody
|
104
|
-
|
105
|
-
- highest_average = step_statistics.highest_average
|
106
|
-
- highest_total = step_statistics.highest_total
|
107
|
-
- highest_variation = step_statistics.highest_variation
|
108
|
-
|
109
|
-
|
110
|
-
- step_statistics.all.each do |step_results|
|
111
|
-
|
112
|
-
%tr
|
113
|
-
= name_td step_results
|
114
|
-
= time_td step_results, :fastest
|
115
|
-
= time_td step_results, :slowest
|
116
|
-
= time_td step_results, :variation, highest_variation
|
117
|
-
= time_td step_results, :variance
|
118
|
-
= time_td step_results, :standard_deviation
|
119
|
-
= count_td step_results, :count
|
120
|
-
= time_td step_results, :average, highest_average
|
121
|
-
= time_td step_results, :total, highest_total
|
122
|
-
-#%tr
|
123
|
-
%td /^Blah I am logged in as ((?:(?:)|(?:(?:a|an|another|the|that) )?(?:(?:(?:(?:first|last|(?:\d+(?:st|nd|rd|th))) )?(?:paper[_ ]trail[_ ]version|acts[_ ]as[_ ]taggable[_ ]on[_ ]tag|acts[_ ]as[_ ]taggable[_ ]on[_ ]tagging|user|active[_ ]record[_ ]schema[_ ]migration|plan|feature|reference[_ ]type|allergy|relationship[_ ]type|allergy[_ ]type|medical[_ ]condition[_ ]type|account|rspec[_ ]account|address|)(?::? "(?:\\"|[^\"]|\.)*"))))) at (\w+)$/
|
124
|
-
%td 4.051
|
125
|
-
%td 8.099
|
126
|
-
%td 5.099
|
127
|
-
%td 0.420
|
128
|
-
%td 0.966
|
129
|
-
%td 6
|
130
|
-
%td 1.490
|
131
|
-
%td 31.288
|
132
|
-
/ /container
|
133
|
-
/
|
134
|
-
Bootstrap core JavaScript
|
135
|
-
\==================================================
|
136
|
-
/ Placed at the end of the document so the pages load faster
|
137
|
-
%script{:src => "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"}
|
138
|
-
%script{:src => "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"}
|
139
|
-
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/moment.min.js"}
|
140
|
-
%script{:src => "https://raw.githack.com/drvic10k/bootstrap-sortable/master/Scripts/bootstrap-sortable.js"}
|
141
|
-
:javascript
|
142
|
-
// Initialise on DOM ready
|
143
|
-
$(function() {
|
144
|
-
$.bootstrapSortable(true, 'reversed');
|
145
|
-
});
|