cucumber_characteristics 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +14 -0
  5. data/README.md +39 -3
  6. data/Rakefile +45 -1
  7. data/cucumber_characteristics.gemspec +17 -16
  8. data/cucumber_version/1.3.5/Gemfile +4 -0
  9. data/cucumber_version/1.3.5/output_path.rb +1 -0
  10. data/cucumber_version/2.0.2/Gemfile +4 -0
  11. data/cucumber_version/2.0.2/output_path.rb +1 -0
  12. data/cucumber_version/2.1.0/Gemfile +4 -0
  13. data/cucumber_version/2.1.0/output_path.rb +1 -0
  14. data/cucumber_version/2.2.0/Gemfile +4 -0
  15. data/cucumber_version/2.2.0/output_path.rb +1 -0
  16. data/cucumber_version/2.3.3/Gemfile +4 -0
  17. data/cucumber_version/2.3.3/output_path.rb +1 -0
  18. data/features/characteristics/cucumber_step_characteristics.html +204 -54
  19. data/features/characteristics/cucumber_step_characteristics.json +1 -1
  20. data/features/step_definitions/fail_steps.rb +1 -1
  21. data/features/step_definitions/unused_steps.rb +2 -0
  22. data/features/support/env.rb +2 -0
  23. data/lib/cucumber_characteristics.rb +10 -5
  24. data/lib/cucumber_characteristics/autoload.rb +3 -1
  25. data/lib/cucumber_characteristics/configuration.rb +3 -6
  26. data/lib/cucumber_characteristics/cucumber_1x_step_patch.rb +38 -0
  27. data/lib/cucumber_characteristics/cucumber_2x_step_patch.rb +163 -0
  28. data/lib/cucumber_characteristics/{cucumber_step_patch.rb → cucumber_common_step_patch.rb} +4 -5
  29. data/lib/cucumber_characteristics/exporter.rb +6 -10
  30. data/lib/cucumber_characteristics/formatter.rb +0 -23
  31. data/lib/cucumber_characteristics/profile_data.rb +45 -63
  32. data/lib/cucumber_characteristics/version.rb +1 -1
  33. data/lib/cucumber_characteristics/view/step_report.html.haml +35 -33
  34. data/spec/html_output_spec.rb +179 -0
  35. data/spec/spec_helper.rb +40 -0
  36. metadata +71 -51
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0e3d4f57847772eaa9465192ddef1993fe7b62f0
4
+ data.tar.gz: fb97cd1268a644a07e4ead5ef5b9dadc1eb5c04c
5
+ SHA512:
6
+ metadata.gz: 8a9b8c79ecaf93f5eacb57ddc3112e2747d6d7a1f064828bc3881e724a68f7d1d20fe2feb01f9a5b592af994047fcf7f08c2b4d18a6112384e4aca7960db4268
7
+ data.tar.gz: 779276a2d2c0788f6ec53dc50a4a2e5cd46f8bf37e081e71d0ad8c2c1fcf39a9b455f7c2c498183a64e796f3dcf8b1265a8d8c1e00493bf74ceeee3a5086daf2
data/.gitignore CHANGED
@@ -15,3 +15,11 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ /cucumber_version/1.3.5/features/characteristics/cucumber_step_characteristics.html
19
+ /cucumber_version/1.3.5/features/characteristics/cucumber_step_characteristics.json
20
+ /cucumber_version/2.3.3/features/characteristics/cucumber_step_characteristics.html
21
+ /cucumber_version/2.3.3/features/characteristics/cucumber_step_characteristics.json
22
+ /cucumber_version/2.1.0/features/characteristics/cucumber_step_characteristics.html
23
+ /cucumber_version/2.1.0/features/characteristics/cucumber_step_characteristics.json
24
+ /cucumber_version/2.2.0/features/characteristics/cucumber_step_characteristics.html
25
+ /cucumber_version/2.2.0/features/characteristics/cucumber_step_characteristics.json
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.rubocop.yml ADDED
@@ -0,0 +1,14 @@
1
+ Metrics/LineLength:
2
+ Max: 207
3
+
4
+ # Offense count: 9
5
+ Style/Documentation:
6
+ Exclude:
7
+ - 'spec/**/*'
8
+ - 'test/**/*'
9
+ - 'lib/cucumber_characteristics.rb'
10
+ - 'lib/cucumber_characteristics/configuration.rb'
11
+ - 'lib/cucumber_characteristics/cucumber_step_patch.rb'
12
+ - 'lib/cucumber_characteristics/exporter.rb'
13
+ - 'lib/cucumber_characteristics/formatter.rb'
14
+ - 'lib/cucumber_characteristics/profile_data.rb'
data/README.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  Gem to profile cucumber steps and features.
4
4
 
5
+ ## Compatibility
6
+
7
+ + (J)Ruby - 1.9.3 -> 2.3.0
8
+ + Cucumber - 1.3.5, 2.1.x+
9
+
5
10
  ## High level features
6
11
 
7
12
  Step analysis including
@@ -25,18 +30,27 @@ Other features.
25
30
 
26
31
  ## Installation
27
32
 
33
+ ### Step 1
34
+
28
35
  Add this line to your application's Gemfile:
29
36
 
30
37
  gem 'cucumber_characteristics'
31
38
 
32
39
  And then execute:
33
40
 
34
- $ bundle
41
+ $ bundle install
35
42
 
36
43
  Or install it yourself as:
37
44
 
38
45
  $ gem install cucumber_characteristics
39
46
 
47
+
48
+ ### Step 2
49
+
50
+ Add the following line to your cucumber environment file typically found at `features\support\env.rb`
51
+
52
+ require 'cucumber_characteristics/autoload'
53
+
40
54
  ## Usage
41
55
 
42
56
  1. For always-on automatic loading (recommended), add `require 'cucumber_characteristics/autoload'` to `features/support/yourapp_env.rb`. It is recommended by cucumber that you do not enhance features/support/env.rb so that upgrades are painless (relatively)
@@ -59,6 +73,8 @@ You can configure the export of step characteristics via the following (defaults
59
73
  config.relative_path = 'features/characteristics'
60
74
  end
61
75
 
76
+ This again can be added to your cucumber environment file typically found at `features\support\env.rb`
77
+
62
78
  ## Results
63
79
 
64
80
  Exported characteristic information is listed out at the end of the cucumber run in a message similar to
@@ -70,7 +86,7 @@ depending on the options specified.
70
86
 
71
87
  The JSON option is provided for convenience in case there is a further use case/analysis required that is not provided by the gem.
72
88
 
73
- An example can be found [here](features/characteristics/cucumber_step_characteristics.html)
89
+ An example can be found [here](features/characteristics/cucumber_step_characteristics.json)
74
90
 
75
91
  ## Problem
76
92
 
@@ -108,15 +124,35 @@ Possible solutions
108
124
 
109
125
  As it turns out it was pretty simple to enhance the runtime object to reliably return profile information.
110
126
 
127
+ ## Developement
128
+
129
+ 1. Install development environment
130
+
131
+ `bundle install`
132
+
133
+ 2. Run formatter over default cucumber version
134
+
135
+ `bundle exec cucumber`
136
+
137
+ 3. Run tests across all supported cucumber versions
138
+
139
+ `bundle exec rake versions:bundle:install`
140
+
141
+ `bundle exec rake versions:test`
142
+
143
+ * NOTE. When running the cucumber tests failures, pending etc are expected. All specs should pass *
144
+
145
+
111
146
  ## Contributing
112
147
 
113
148
  1. Fork it
114
149
  2. Create your feature branch (`git checkout -b my-new-feature`)
115
150
  3. Commit your changes (`git commit -am 'Add some feature'`)
116
151
  4. Push to the branch (`git push origin my-new-feature`)
117
- 5. Create new Pull Request
152
+ 5. Create new Pull Request (after running tests!)
118
153
 
119
154
  ## Credits
120
155
  1. Ryan Boucher [cucumber_timing_presenter](https://github.com/distributedlife/cucumber_timing_presenter) for inspiration.
121
156
  2. AlienFast [cucumber_statistics](https://github.com/alienfast/cucumber_statistics) for inspriation.
122
157
  3. [Brandon Hilker](http://brandonhilkert.com/blog/ruby-gem-configuration-patterns/) for gem building tutorials
158
+ 4. Nathan Menge for helping QA the ruby 2.3.0 / cucumber 2.3.0 updates
data/Rakefile CHANGED
@@ -1 +1,45 @@
1
- require "bundler/gem_tasks"
1
+ require 'rake'
2
+ require 'bundler/gem_tasks'
3
+
4
+ # Approach to version testing credited to
5
+ # https://github.com/makandra/cucumber_factory
6
+
7
+ namespace :versions do
8
+ namespace :bundle do
9
+ desc 'Bundle all spec apps'
10
+ task :install do
11
+ for_each_directory_of('./cucumber_version/**/Gemfile') do |directory|
12
+ Bundler.with_clean_env do
13
+ system("cd #{directory} && bundle install")
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ desc 'Test all supported cucumber versions'
20
+ task :test do
21
+ for_each_directory_of('./cucumber_version/**/Gemfile') do |directory|
22
+ Bundler.with_clean_env do
23
+ clean_outputs(directory)
24
+ system("cd #{directory} && bundle exec cucumber --color --format progress -g -r ../../features/ ../../features/")
25
+ system("bundle exec rspec -r #{directory}/output_path.rb ")
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ def clean_outputs(dir)
32
+ ["#{dir}/features/characteristics/cucumber_step_characteristics.json",
33
+ "#{dir}/features/characteristics/cucumber_step_characteristics.html"
34
+ ].each do |file|
35
+ File.delete(file) if File.exist?(file)
36
+ end
37
+ end
38
+
39
+ def for_each_directory_of(path)
40
+ Dir[path].sort.each do |rakefile|
41
+ directory = File.dirname(rakefile)
42
+ puts '', "\033[44m#{directory}\033[0m", ''
43
+ yield(directory)
44
+ end
45
+ end
@@ -4,26 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'cucumber_characteristics/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "cucumber_characteristics"
7
+ spec.name = 'cucumber_characteristics'
8
8
  spec.version = CucumberCharacteristics::VERSION
9
- spec.authors = ["Stuart Ingram"]
10
- spec.email = ["stuart.ingram@gmail.com"]
11
- spec.description = %q{Gem to profile cucumber steps and features}
12
- spec.summary = %q{Gem to profile cucumber steps and features}
13
- spec.homepage = "https://github.com/singram/cucumber_characteristics"
14
- spec.license = "MIT"
9
+ spec.authors = ['Stuart Ingram']
10
+ spec.email = ['stuart.ingram@gmail.com']
11
+ spec.description = 'Gem to profile cucumber steps and features'
12
+ spec.summary = 'Gem to profile cucumber steps and features'
13
+ spec.homepage = 'https://github.com/singram/cucumber_characteristics'
14
+ spec.license = 'MIT'
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency "haml"
21
+ spec.add_dependency 'cucumber', '>=1.3.5'
22
+ spec.add_dependency 'haml'
22
23
 
23
- spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake"
25
- spec.add_development_dependency "awesome_print"
26
- spec.add_development_dependency 'simplecov', '0.8.2'
27
- spec.add_development_dependency 'rspec', '2.14'
28
- spec.add_development_dependency 'cucumber', '1.3.5'
24
+ spec.add_development_dependency 'bundler'
25
+ spec.add_development_dependency 'nokogiri'
26
+ spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'rubocop'
29
30
  end
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'cucumber', '1.3.5'
4
+ gem 'cucumber_characteristics', path: '../..'
@@ -0,0 +1 @@
1
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX = File.dirname(__FILE__)
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'cucumber', '2.0.2'
4
+ gem 'cucumber_characteristics', path: '../..'
@@ -0,0 +1 @@
1
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX = File.dirname(__FILE__)
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'cucumber', '2.1.0'
4
+ gem 'cucumber_characteristics', path: '../..'
@@ -0,0 +1 @@
1
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX = File.dirname(__FILE__)
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'cucumber', '2.2.0'
4
+ gem 'cucumber_characteristics', path: '../..'
@@ -0,0 +1 @@
1
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX = File.dirname(__FILE__)
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'cucumber', '2.3.3'
4
+ gem 'cucumber_characteristics', path: '../..'
@@ -0,0 +1 @@
1
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX = File.dirname(__FILE__)
@@ -39,18 +39,19 @@
39
39
  </div>
40
40
  <div class='alert alert-info'>
41
41
  <span>
42
- 2 Scenarios,
43
- 8 Steps completed
42
+ 10 Scenarios,
43
+ 36 Steps completed
44
44
  <span class='text-muted'>
45
- (Passed: 8)<br>
45
+ (Failed: 2, Passed: 31, Skipped: 2, Undefined: 1)<br>
46
46
  </span>
47
- Test duration 1.6180s.
47
+ 1/2 failures due to ambiguous matches<br>
48
+ Test duration 12.5340s.
48
49
  <span class='text-muted'>
49
- (1.6146s steps, 0.0034s non-steps)
50
+ (11.9450s steps, 0.5890s non-steps)
50
51
  </span>
51
52
  </span>
52
53
  <span class='text-muted pull-right small'>
53
- Finished on 2014-06-26 07:05:36 -0400
54
+ Finished on 2016-04-10 22:28:08 -0400
54
55
  </span>
55
56
  </div>
56
57
  <ul class='nav nav-tabs'>
@@ -61,7 +62,7 @@
61
62
  <a data-toggle='tab' href='#features'>Features</a>
62
63
  </li>
63
64
  <li>
64
- <a data-toggle='tab' href='#unused_steps'>Unused Steps (3)</a>
65
+ <a data-toggle='tab' href='#unused_steps'>Unused Steps (1)</a>
65
66
  </li>
66
67
  </ul>
67
68
  <div class='tab-content'>
@@ -85,30 +86,80 @@
85
86
  </tr>
86
87
  </thead>
87
88
  <tbody>
88
- <tr>
89
- <td>
89
+ <tr class='step_result'>
90
+ <td class='step'>
90
91
  <abbr title='/^I wait ([\d\.]+) seconds$/'>features/step_definitions/wait_steps.rb:1</abbr>
91
92
  </td>
92
- <td>1.6146</td>
93
- <td>
94
- <abbr title='features/scenario_outline.feature:4 (x2)&#x000A;features/scenario_outline.feature:5 (x2)&#x000A;features/scenario_outline.feature:6 (x2)&#x000A;features/scenario_outline.feature:7 (x2)'>8</abbr>
95
- </td>
96
- <td>0.2018</td>
97
- <td>0.1024</td>
98
- <td>0.3006</td>
99
- <td>0.1982</td>
100
- <td>0.0049</td>
101
- <td>0.0701</td>
102
- <td>
93
+ <td class='total_time'>11.9450</td>
94
+ <td class='passed_count'>
95
+ <abbr title='features/failure.feature:4&#x000A;features/pending.feature:4&#x000A;features/scenario.feature:4&#x000A;features/scenario.feature:5&#x000A;features/scenario.feature:6&#x000A;features/scenario_outline.feature:4 (x2)&#x000A;features/scenario_outline.feature:5 (x2)&#x000A;features/scenario_outline.feature:6 (x2)&#x000A;features/scenario_outline.feature:7 (x2)&#x000A;features/scenario_outline_with_background.feature:4 (x2)&#x000A;features/scenario_outline_with_background.feature:7 (x2)&#x000A;features/scenario_outline_with_background.feature:8 (x2)&#x000A;features/scenario_outline_with_background.feature:9 (x2)&#x000A;features/scenario_outline_with_background.feature:10 (x2)&#x000A;features/scenario_with_background.feature:4 (x2)&#x000A;features/scenario_with_background.feature:7&#x000A;features/scenario_with_background.feature:8&#x000A;features/scenario_with_background.feature:9&#x000A;features/scenario_with_background.feature:12&#x000A;features/scenario_with_background.feature:13&#x000A;features/scenario_with_background.feature:14'>31</abbr>
96
+ </td>
97
+ <td class='average_time'>0.3853</td>
98
+ <td class='fastest_time'>0.1010</td>
99
+ <td class='slowest_time'>1.0020</td>
100
+ <td class='variation_time'>0.9010</td>
101
+ <td class='variance_time'>0.0563</td>
102
+ <td class='std_dev_time'>0.2372</td>
103
+ <td class='skipped_count'>
104
+ <abbr title='features/failure.feature:6&#x000A;features/pending.feature:6'>2</abbr>
105
+ </td>
106
+ <td class='failed_count'>
107
+ 0
108
+ </td>
109
+ <td class='undef_count'>
110
+ 0
111
+ </td>
112
+ <td class='total_count'>33</td>
113
+ </tr>
114
+ <tr class='step_result'>
115
+ <td class='step'>
116
+ <abbr title=''>I call a pending step</abbr>
117
+ </td>
118
+ <td class='total_time'>-</td>
119
+ <td class='passed_count'>
120
+ 0
121
+ </td>
122
+ <td class='average_time'>-</td>
123
+ <td class='fastest_time'>-</td>
124
+ <td class='slowest_time'>-</td>
125
+ <td class='variation_time'>-</td>
126
+ <td class='variance_time'>-</td>
127
+ <td class='std_dev_time'>-</td>
128
+ <td class='skipped_count'>
129
+ 0
130
+ </td>
131
+ <td class='failed_count'>
132
+ 0
133
+ </td>
134
+ <td class='undef_count'>
135
+ <abbr title='features/pending.feature:5'>1</abbr>
136
+ </td>
137
+ <td class='total_count'>1</td>
138
+ </tr>
139
+ <tr class='step_result'>
140
+ <td class='step'>
141
+ <abbr title='/^I fail$/'>features/step_definitions/fail_steps.rb:1</abbr>
142
+ </td>
143
+ <td class='total_time'>-</td>
144
+ <td class='passed_count'>
103
145
  0
104
146
  </td>
105
- <td>
147
+ <td class='average_time'>-</td>
148
+ <td class='fastest_time'>-</td>
149
+ <td class='slowest_time'>-</td>
150
+ <td class='variation_time'>-</td>
151
+ <td class='variance_time'>-</td>
152
+ <td class='std_dev_time'>-</td>
153
+ <td class='skipped_count'>
106
154
  0
107
155
  </td>
108
- <td>
156
+ <td class='failed_count'>
157
+ <abbr title='features/failure.feature:5'>1</abbr>
158
+ </td>
159
+ <td class='undef_count'>
109
160
  0
110
161
  </td>
111
- <td>8</td>
162
+ <td class='total_count'>1</td>
112
163
  </tr>
113
164
  </tbody>
114
165
  </table>
@@ -125,19 +176,126 @@
125
176
  </tr>
126
177
  </thead>
127
178
  <tbody>
128
- <tr class=''>
129
- <td>features/scenario_outline.feature:3</td>
130
- <td>1.6146</td>
131
- <td>8</td>
132
- <td>passed</td>
133
- <td>
179
+ <tr class='danger feature_result'>
180
+ <td class='feature'>features/failure.feature:3</td>
181
+ <td class='total_time'>1.0020</td>
182
+ <td class='step_count'>3</td>
183
+ <td class='status'>failed</td>
184
+ <td class='examples'>
185
+ </td>
186
+ </tr>
187
+ <tr class='danger feature_result'>
188
+ <td class='feature'>features/ambiguous.feature:3</td>
189
+ <td class='total_time'>-</td>
190
+ <td class='step_count'>1</td>
191
+ <td class='status'>failed</td>
192
+ <td class='examples'>
193
+ </td>
194
+ </tr>
195
+ <tr class='feature_result warning'>
196
+ <td class='feature'>features/pending.feature:3</td>
197
+ <td class='total_time'>1.0020</td>
198
+ <td class='step_count'>3</td>
199
+ <td class='status'>undefined</td>
200
+ <td class='examples'>
201
+ </td>
202
+ </tr>
203
+ <tr class='feature_result'>
204
+ <td class='feature'>features/scenario_outline_with_background.feature:6</td>
205
+ <td class='total_time'>3.6130</td>
206
+ <td class='step_count'>10</td>
207
+ <td class='status'>passed</td>
208
+ <td class='examples'>
209
+ <button class='btn btn-primary' data-target='#ee4ab50980effe45ea18c9afc38e97e5' data-toggle='modal'>
210
+ 2 Examples
211
+ </button>
212
+ </td>
213
+ </tr>
214
+ <tr class='feature_result'>
215
+ <td class='feature'>features/scenario_with_background.feature:11</td>
216
+ <td class='total_time'>2.2050</td>
217
+ <td class='step_count'>4</td>
218
+ <td class='status'>passed</td>
219
+ <td class='examples'>
220
+ </td>
221
+ </tr>
222
+ <tr class='feature_result'>
223
+ <td class='feature'>features/scenario_outline.feature:3</td>
224
+ <td class='total_time'>1.6120</td>
225
+ <td class='step_count'>8</td>
226
+ <td class='status'>passed</td>
227
+ <td class='examples'>
134
228
  <button class='btn btn-primary' data-target='#76f61671f111ebbc40b80f6aa9f5f838' data-toggle='modal'>
135
229
  2 Examples
136
230
  </button>
137
231
  </td>
138
232
  </tr>
233
+ <tr class='feature_result'>
234
+ <td class='feature'>features/scenario.feature:3</td>
235
+ <td class='total_time'>1.5030</td>
236
+ <td class='step_count'>3</td>
237
+ <td class='status'>passed</td>
238
+ <td class='examples'>
239
+ </td>
240
+ </tr>
241
+ <tr class='feature_result'>
242
+ <td class='feature'>features/scenario_with_background.feature:6</td>
243
+ <td class='total_time'>1.0080</td>
244
+ <td class='step_count'>4</td>
245
+ <td class='status'>passed</td>
246
+ <td class='examples'>
247
+ </td>
248
+ </tr>
139
249
  </tbody>
140
250
  </table>
251
+ <div aria-hidden='true' aria-labelledby='myLargeModalLabel' class='modal fade bs-example-modal-lg' id='ee4ab50980effe45ea18c9afc38e97e5' role='dialog' tabindex='-1'>
252
+ <div class='modal-dialog modal-lg'>
253
+ <div class='modal-content'>
254
+ <div class='modal-header'>
255
+ <h4>features/scenario_outline_with_background.feature:6</h4>
256
+ </div>
257
+ <div class='modal-body'>
258
+ <table class='table table-striped table-bordered table-condensed' id='scenario_outline_with_background_feature_6'>
259
+ <thead>
260
+ <tr>
261
+ <th>Example</th>
262
+ <th>Total time</th>
263
+ <th>Step count</th>
264
+ <th>Status</th>
265
+ </tr>
266
+ </thead>
267
+ <tbody>
268
+ <tr class='example_result'>
269
+ <td class='example'>| 0.5 | 0.6 | 0.7 |</td>
270
+ <td class='total_time'>2.4050</td>
271
+ <td class='step_count'>5</td>
272
+ <td class='status'>passed</td>
273
+ </tr>
274
+ <tr class='example_result'>
275
+ <td class='example'>| 0.1 | 0.2 | 0.3 |</td>
276
+ <td class='total_time'>1.2080</td>
277
+ <td class='step_count'>5</td>
278
+ <td class='status'>passed</td>
279
+ </tr>
280
+ </tbody>
281
+ <tfooter>
282
+ <tr class='example_totals'>
283
+ <th></th>
284
+ <th class='total_time'>3.6130</th>
285
+ <th class='step_count'>10</th>
286
+ <th class='status'>passed</th>
287
+ </tr>
288
+ </tfooter>
289
+ </table>
290
+ </div>
291
+ <div class='modal-footer'>
292
+ <button class='btn btn-default' data-dismiss='modal' type='button'>
293
+ Close
294
+ </button>
295
+ </div>
296
+ </div>
297
+ </div>
298
+ </div>
141
299
  <div aria-hidden='true' aria-labelledby='myLargeModalLabel' class='modal fade bs-example-modal-lg' id='76f61671f111ebbc40b80f6aa9f5f838' role='dialog' tabindex='-1'>
142
300
  <div class='modal-dialog modal-lg'>
143
301
  <div class='modal-content'>
@@ -145,7 +303,7 @@
145
303
  <h4>features/scenario_outline.feature:3</h4>
146
304
  </div>
147
305
  <div class='modal-body'>
148
- <table class='table table-striped table-bordered table-condensed'>
306
+ <table class='table table-striped table-bordered table-condensed' id='scenario_outline_feature_3'>
149
307
  <thead>
150
308
  <tr>
151
309
  <th>Example</th>
@@ -155,25 +313,25 @@
155
313
  </tr>
156
314
  </thead>
157
315
  <tbody>
158
- <tr class=''>
159
- <td>| 0.3 | 0.2 | 0.1 |</td>
160
- <td>0.8073</td>
161
- <td>4</td>
162
- <td>passed</td>
316
+ <tr class='example_result'>
317
+ <td class='example'>| 0.3 | 0.2 | 0.1 |</td>
318
+ <td class='total_time'>0.8060</td>
319
+ <td class='step_count'>4</td>
320
+ <td class='status'>passed</td>
163
321
  </tr>
164
- <tr class=''>
165
- <td>| 0.1 | 0.2 | 0.3 |</td>
166
- <td>0.8073</td>
167
- <td>4</td>
168
- <td>passed</td>
322
+ <tr class='example_result'>
323
+ <td class='example'>| 0.1 | 0.2 | 0.3 |</td>
324
+ <td class='total_time'>0.8060</td>
325
+ <td class='step_count'>4</td>
326
+ <td class='status'>passed</td>
169
327
  </tr>
170
328
  </tbody>
171
329
  <tfooter>
172
- <tr>
330
+ <tr class='example_totals'>
173
331
  <th></th>
174
- <th>1.6146</th>
175
- <th>8</th>
176
- <th>passed</th>
332
+ <th class='total_time'>1.6120</th>
333
+ <th class='step_count'>8</th>
334
+ <th class='status'>passed</th>
177
335
  </tr>
178
336
  </tfooter>
179
337
  </table>
@@ -197,16 +355,8 @@
197
355
  </thead>
198
356
  <tbody>
199
357
  <tr>
200
- <td>features/step_definitions/ambiguous_steps.rb:1</td>
201
- <td>/^I wait some/</td>
202
- </tr>
203
- <tr>
204
- <td>features/step_definitions/ambiguous_steps.rb:4</td>
205
- <td>/^I wait some seconds$/</td>
206
- </tr>
207
- <tr>
208
- <td>features/step_definitions/fail_steps.rb:1</td>
209
- <td>/^I fail$/</td>
358
+ <td>features/step_definitions/unused_steps.rb:1</td>
359
+ <td>/^I am unused/</td>
210
360
  </tr>
211
361
  </tbody>
212
362
  </table>