cucumber_characteristics 0.0.4 → 0.0.5

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.
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>