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
@@ -1,3 +1,3 @@
1
1
  module CucumberCharacteristics
2
- VERSION = "0.0.4"
2
+ VERSION = '0.0.5'.freeze
3
3
  end
@@ -52,7 +52,7 @@
52
52
  %a{:href => '#steps', :'data-toggle' => 'tab'} Steps
53
53
  %li
54
54
  %a{:href => '#features', :'data-toggle' => 'tab'} Features
55
- - if profile.has_unmatched_steps?
55
+ - if profile.unmatched_steps?
56
56
  %li
57
57
  %a{:href => '#unused_steps', :'data-toggle' => 'tab'} Unused Steps (#{profile.unmatched_steps.count})
58
58
  %div.tab-content
@@ -75,40 +75,40 @@
75
75
  %th Total count
76
76
  %tbody
77
77
  - profile.step_profiles.each do |step, meta|
78
- %tr
79
- %td
78
+ %tr.step_result
79
+ %td.step
80
80
  %abbr{:title => "#{meta[:regexp]}"} #{step}
81
- %td #{format_ts(meta[:total_duration])}
82
- %td
81
+ %td.total_time #{format_ts(meta[:total_duration])}
82
+ %td.passed_count
83
83
  - if meta[:passed][:count] > 0
84
84
  %abbr{:title => "#{ format_step_usage(meta[:passed]) }" } #{meta[:passed][:count]}
85
85
  - else
86
86
  0
87
- %td #{format_ts(meta[:average])}
88
- %td #{format_ts(meta[:fastest])}
89
- %td #{format_ts(meta[:slowest])}
90
- %td #{format_ts(meta[:variation])}
91
- %td #{format_ts(meta[:variance])}
92
- %td #{format_ts(meta[:standard_deviation])}
93
- %td
87
+ %td.average_time #{format_ts(meta[:average])}
88
+ %td.fastest_time #{format_ts(meta[:fastest])}
89
+ %td.slowest_time #{format_ts(meta[:slowest])}
90
+ %td.variation_time #{format_ts(meta[:variation])}
91
+ %td.variance_time #{format_ts(meta[:variance])}
92
+ %td.std_dev_time #{format_ts(meta[:standard_deviation])}
93
+ %td.skipped_count
94
94
  - if meta[:skipped][:count] > 0
95
95
  %abbr{:title => "#{ format_step_usage(meta[:skipped]) }" } #{meta[:skipped][:count]}
96
96
  - else
97
97
  0
98
- %td
98
+ %td.failed_count
99
99
  - if meta[:failed][:count] > 0
100
100
  %abbr{:title => "#{ format_step_usage(meta[:failed]) }" } #{meta[:failed][:count]}
101
101
  - else
102
102
  0
103
- %td
103
+ %td.undef_count
104
104
  - if meta[:undefined][:count] > 0
105
105
  %abbr{:title => "#{ format_step_usage(meta[:undefined]) }" } #{meta[:undefined][:count]}
106
106
  - else
107
107
  0
108
- %td #{meta[:total_count]}
108
+ %td.total_count #{meta[:total_count]}
109
109
 
110
110
  %div.tab-pane#features
111
- %table.table.table-striped.table-bordered.table-condensed#feature_table
111
+ %table.table.table-striped.table-bordered.table-condensed.tablesorter#feature_table
112
112
  %thead
113
113
  %tr
114
114
  %th Feature
@@ -118,12 +118,12 @@
118
118
  %th
119
119
  %tbody
120
120
  - profile.feature_profiles.each do |feature, meta|
121
- %tr{:class => "#{meta[:status] == :failed ? :danger : meta[:status] == :undefined ? :warning : nil }"}
122
- %td #{feature}
123
- %td #{format_ts(meta[:total_duration])}
124
- %td #{meta[:step_count]}
125
- %td #{meta[:status]}
126
- %td
121
+ %tr.feature_result{:class => "#{meta[:status] == :failed ? :danger : meta[:status] == :undefined ? :warning : nil }"}
122
+ %td.feature #{feature}
123
+ %td.total_time #{format_ts(meta[:total_duration])}
124
+ %td.step_count #{meta[:step_count]}
125
+ %td.status #{meta[:status]}
126
+ %td.examples
127
127
  - if meta[:examples]
128
128
  %button.btn.btn-primary{:'data-toggle'=>'modal', :'data-target'=>"##{Digest::MD5.hexdigest(feature)}"}
129
129
  #{meta[:example_count]} Examples
@@ -135,7 +135,7 @@
135
135
  %div.modal-header
136
136
  %h4 #{feature}
137
137
  %div.modal-body
138
- %table.table.table-striped.table-bordered.table-condensed
138
+ %table.table.table-striped.table-bordered.table-condensed{:id => feature.split('/').last.gsub(/[\.:]/, '_') }
139
139
  %thead
140
140
  %tr
141
141
  %th Example
@@ -144,22 +144,22 @@
144
144
  %th Status
145
145
  %tbody
146
146
  - meta[:examples].each do |example, meta|
147
- %tr{:class => "#{meta[:status] == :failed ? :danger : meta[:status] == :undefined ? :warning : nil }"}
148
- %td #{example}
149
- %td #{format_ts(meta[:total_duration])}
150
- %td #{meta[:step_count]}
151
- %td #{meta[:status]}
147
+ %tr.example_result{:class => "#{meta[:status] == :failed ? :danger : meta[:status] == :undefined ? :warning : nil }"}
148
+ %td.example #{example}
149
+ %td.total_time #{format_ts(meta[:total_duration])}
150
+ %td.step_count #{meta[:step_count]}
151
+ %td.status #{meta[:status]}
152
152
  %tfooter
153
- %tr
153
+ %tr.example_totals
154
154
  %th
155
- %th #{format_ts(meta[:total_duration])}
156
- %th #{meta[:step_count]}
157
- %th #{meta[:status]}
155
+ %th.total_time #{format_ts(meta[:total_duration])}
156
+ %th.step_count #{meta[:step_count]}
157
+ %th.status #{meta[:status]}
158
158
  %div.modal-footer
159
159
  %button.btn.btn-default{:type=>"button", :'data-dismiss'=>"modal"}
160
160
  Close
161
161
 
162
- - if profile.has_unmatched_steps?
162
+ - if profile.unmatched_steps?
163
163
  %div.tab-pane#unused_steps
164
164
  %table.table.table-striped.table-bordered.table-condensed.tablesorter#unmatched_steps_table
165
165
  %thead
@@ -179,5 +179,7 @@
179
179
  $(document).ready(function()
180
180
  {
181
181
  $("#profile_table").tablesorter( {sortList: [[1,1],[3,1]], widgets: ['zebra']} );
182
+ $("#feature_table").tablesorter( {sortList: [[3,0],[1,1]], widgets: ['zebra']} );
183
+ $("#unmatched_steps_table").tablesorter( {sortList: [[1,0]], widgets: ['zebra']} );
182
184
  }
183
185
  );
@@ -0,0 +1,179 @@
1
+ require 'spec_helper'
2
+ require 'nokogiri'
3
+
4
+ describe 'HTML Output' do
5
+ step_expectations = { 'pending step' => { total_count: 1, undef_count: 1 },
6
+ 'wait_steps' => { total_count: 33, passed_count: 31,
7
+ skipped_count: 2,
8
+ timings: { fastest_time: 0.1,
9
+ slowest_time: 1.0, total_time: 11.95 } },
10
+ 'fail_steps' => { total_count: 1, failed_count: 1 },
11
+ 'ambiguous_steps' => { total_count: 1, passed_count: 1 } }
12
+
13
+ if CUCUMBER_VERSION < '2.0.0'
14
+ feature_expectations = {
15
+ 'failure.feature' => { step_count: 3, total_time: 1.0, status: 'failed' },
16
+ 'pending.feature' => { step_count: 3, total_time: 1.0,
17
+ status: 'undefined' },
18
+ 'scenario_outline_with_background.feature:6' => { step_count: 10, total_time: 3.6,
19
+ status: 'passed',
20
+ examples: { '| 0.5 | 0.6 | 0.7 |' => { total_time: 2.4, step_count: 5,
21
+ status: 'passed' },
22
+ '| 0.1 | 0.2 | 0.3 |' => { total_time: 1.2, step_count: 5,
23
+ status: 'passed' } } },
24
+ 'scenario_with_background.feature:11' => { step_count: 4, total_time: 2.2,
25
+ status: 'passed' },
26
+ 'scenario_with_background.feature:6' => { step_count: 4, total_time: 1.0,
27
+ status: 'passed' },
28
+ 'scenario_outline.feature:3' => { step_count: 8, total_time: 1.6,
29
+ status: 'passed',
30
+ examples: { '| 0.1 | 0.2 | 0.3 |' => { total_time: 0.8, step_count: 4,
31
+ status: 'passed' },
32
+ '| 0.3 | 0.2 | 0.1 |' => { total_time: 0.8, step_count: 4,
33
+ status: 'passed' } } },
34
+ 'scenario.feature' => { step_count: 3, total_time: 1.5,
35
+ status: 'passed' },
36
+ 'ambiguous.feature' => { step_count: 1, total_time: 0.0,
37
+ status: 'passed' } }
38
+ else
39
+ feature_expectations = {
40
+ 'failure.feature' => { step_count: 3, total_time: 1.0, status: 'failed' },
41
+ 'pending.feature' => { step_count: 3, total_time: 1.0,
42
+ status: 'undefined' },
43
+ 'scenario_outline_with_background.feature:6' => { step_count: 8, total_time: 2.8,
44
+ status: 'passed',
45
+ examples: { 'Examples (#2)' => { total_time: 2.0, step_count: 4,
46
+ status: 'passed' },
47
+ 'Examples (#1)' => { total_time: 0.8, step_count: 4,
48
+ status: 'passed' } } },
49
+ 'scenario_outline_with_background.feature:0' => { step_count: 2, total_time: 0.8,
50
+ status: 'passed' },
51
+ 'scenario_with_background.feature:11' => { step_count: 3, total_time: 1.8,
52
+ status: 'passed' },
53
+ 'scenario_with_background.feature:6' => { step_count: 3, total_time: 0.6,
54
+ status: 'passed' },
55
+ 'scenario_with_background.feature:0' => { step_count: 2, total_time: 0.8,
56
+ status: 'passed' },
57
+ 'scenario_outline.feature:3' => { step_count: 8, total_time: 1.6,
58
+ status: 'passed',
59
+ examples: { 'Examples (#1)' => { total_time: 0.8, step_count: 4,
60
+ status: 'passed' },
61
+ 'Examples (#2)' => { total_time: 0.8, step_count: 4,
62
+ status: 'passed' } } },
63
+ 'scenario.feature' => { step_count: 3, total_time: 1.5,
64
+ status: 'passed' },
65
+ 'ambiguous.feature' => { step_count: 1, total_time: 0.0,
66
+ status: 'passed' } }
67
+ end
68
+
69
+ before :all do
70
+ @html_output = read_html_output
71
+ end
72
+
73
+ it 'should have a title' do
74
+ expect(@html_output.css('title').text).to eq 'Cucumber Step Characteristics'
75
+ end
76
+
77
+ context 'step output' do
78
+ let(:steps) { @html_output.css('table#profile_table tr.step_result') }
79
+
80
+ it "has #{step_expectations.size} defined" do
81
+ expect(steps.size).to eq step_expectations.size
82
+ end
83
+
84
+ step_expectations.each do |step_match, expectations|
85
+ context step_match.to_s do
86
+ let(:step) { steps.select { |tr| tr.css('.step')[0].text =~ /#{step_match}/ }.first }
87
+
88
+ timings = expectations.delete(:timings)
89
+ expectations.each do |type, expectation|
90
+ it "#{type} of #{expectation}" do
91
+ expect(step.css(".#{type}").text.strip).to eq expectation.to_s
92
+ end
93
+ end
94
+
95
+ if timings
96
+
97
+ context 'timing' do
98
+ timings.each do |type, expectation|
99
+ it "#{type} ~#{expectation}s" do
100
+ expect(step.css(".#{type}").text.strip.to_f).to be_within(TIMING_TOLERANCE).of(expectation)
101
+ end
102
+ end
103
+ end
104
+
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ context 'feature output' do
111
+ let(:features) { @html_output.css('table#feature_table tr.feature_result') }
112
+
113
+ it "has #{feature_expectations.size} defined" do
114
+ expect(features.size).to eq feature_expectations.size
115
+ end
116
+
117
+ feature_expectations.each do |feature_name, expectations|
118
+ context feature_name do
119
+ let(:feature) { features.select { |tr| tr.css('.feature')[0].text =~ /#{feature_name}/ }.first }
120
+
121
+ it "has #{expectations[:step_count]} steps" do
122
+ expect(feature.css('.step_count').text).to eq expectations[:step_count].to_s
123
+ end
124
+
125
+ it "has #{expectations[:status]} result" do
126
+ expect(feature.css('.status').text).to eq expectations[:status].to_s
127
+ end
128
+
129
+ it "takes ~#{expectations[:total_time]}s" do
130
+ expect(feature.css('.total_time').text.strip.to_f).to be_within(TIMING_TOLERANCE).of(expectations[:total_time])
131
+ end
132
+
133
+ if expectations[:examples]
134
+
135
+ context 'examples' do
136
+ let(:examples) { @html_output.css("table##{feature_name.gsub(/[\.:]/, '_')}") }
137
+
138
+ expectations[:examples].each do |id, details|
139
+ context "example #{id}" do
140
+ let(:example) { examples.css('.example_result').select { |tr| tr.css('.example')[0].text == id }.first }
141
+
142
+ it "has #{details[:step_count]} steps" do
143
+ expect(example.css('.step_count').text).to eq details[:step_count].to_s
144
+ end
145
+
146
+ it "takes #{details[:total_time]}s" do
147
+ expect(example.css('.total_time').text.strip.to_f).to be_within(TIMING_TOLERANCE).of(details[:total_time])
148
+ end
149
+
150
+ it "has #{details[:status]} result" do
151
+ expect(example.css('.status').text).to eq details[:status].to_s
152
+ end
153
+ end
154
+ end
155
+
156
+ context 'totals' do
157
+ let(:feature_totals) do
158
+ examples.css('.example_totals')
159
+ .first
160
+ end
161
+
162
+ total_steps = expectations[:examples].map { |_k, v| v[:step_count] }.inject(&:+)
163
+ total_time = expectations[:examples].map { |_k, v| v[:total_time] }.inject(&:+)
164
+
165
+ it "has #{total_steps} steps" do
166
+ expect(feature_totals.css('.step_count').text).to eq total_steps.to_s
167
+ end
168
+
169
+ it "takes ~#{total_time}s" do
170
+ expect(feature_totals.css('.total_time').text.strip.to_f).to be_within(TIMING_TOLERANCE).of(total_time)
171
+ end
172
+ end
173
+ end
174
+
175
+ end
176
+ end
177
+ end
178
+ end
179
+ end
@@ -0,0 +1,40 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+
12
+ # Run specs in random order to surface order dependencies. If you find an
13
+ # order dependency and want to debug it, you can fix the order by providing
14
+ # the seed, which is printed after each run.
15
+ # --seed 1234
16
+ config.order = 'random'
17
+ end
18
+
19
+ unless defined?(CHARACTERISTICS_OUTPUT_PATH_PREFIX)
20
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX = '.'.freeze
21
+ end
22
+
23
+ CUCUMBER_VERSION = if defined?(Cucumber)
24
+ Cucumber::Version.to_s
25
+ else
26
+ CHARACTERISTICS_OUTPUT_PATH_PREFIX.split('/').last
27
+ end
28
+
29
+ TIMING_TOLERANCE = 0.05
30
+
31
+ require 'pp'
32
+
33
+ def read_html_output
34
+ output_file = "#{CHARACTERISTICS_OUTPUT_PATH_PREFIX}/features/characteristics/cucumber_step_characteristics.html"
35
+ puts "Testing - #{output_file}"
36
+ File.open(output_file) { |f| Nokogiri::HTML(f) }
37
+ rescue Errno::ENOENT
38
+ puts "Could not find file '#{output_file}'"
39
+ exit
40
+ end
metadata CHANGED
@@ -1,128 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber_characteristics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
4
+ version: 0.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Stuart Ingram
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-07-06 00:00:00.000000000 Z
11
+ date: 2016-04-18 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cucumber
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.5
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: haml
16
29
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
30
  requirements:
19
- - - ! '>='
31
+ - - ">="
20
32
  - !ruby/object:Gem::Version
21
33
  version: '0'
22
34
  type: :runtime
23
35
  prerelease: false
24
36
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
37
  requirements:
27
- - - ! '>='
38
+ - - ">="
28
39
  - !ruby/object:Gem::Version
29
40
  version: '0'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: bundler
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ~>
45
+ - - ">="
36
46
  - !ruby/object:Gem::Version
37
- version: '1.3'
47
+ version: '0'
38
48
  type: :development
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ~>
52
+ - - ">="
44
53
  - !ruby/object:Gem::Version
45
- version: '1.3'
54
+ version: '0'
46
55
  - !ruby/object:Gem::Dependency
47
- name: rake
56
+ name: nokogiri
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - ">="
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - ">="
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
- name: awesome_print
70
+ name: pry
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - ">="
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  - !ruby/object:Gem::Dependency
79
- name: simplecov
84
+ name: rake
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - '='
87
+ - - ">="
84
88
  - !ruby/object:Gem::Version
85
- version: 0.8.2
89
+ version: '0'
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - '='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
- version: 0.8.2
96
+ version: '0'
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: rspec
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - '='
101
+ - - ">="
100
102
  - !ruby/object:Gem::Version
101
- version: '2.14'
103
+ version: '0'
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - '='
108
+ - - ">="
108
109
  - !ruby/object:Gem::Version
109
- version: '2.14'
110
+ version: '0'
110
111
  - !ruby/object:Gem::Dependency
111
- name: cucumber
112
+ name: rubocop
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - '='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 1.3.5
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - '='
122
+ - - ">="
124
123
  - !ruby/object:Gem::Version
125
- version: 1.3.5
124
+ version: '0'
126
125
  description: Gem to profile cucumber steps and features
127
126
  email:
128
127
  - stuart.ingram@gmail.com
@@ -130,12 +129,24 @@ executables: []
130
129
  extensions: []
131
130
  extra_rdoc_files: []
132
131
  files:
133
- - .gitignore
132
+ - ".gitignore"
133
+ - ".rspec"
134
+ - ".rubocop.yml"
134
135
  - Gemfile
135
136
  - LICENSE.txt
136
137
  - README.md
137
138
  - Rakefile
138
139
  - cucumber_characteristics.gemspec
140
+ - cucumber_version/1.3.5/Gemfile
141
+ - cucumber_version/1.3.5/output_path.rb
142
+ - cucumber_version/2.0.2/Gemfile
143
+ - cucumber_version/2.0.2/output_path.rb
144
+ - cucumber_version/2.1.0/Gemfile
145
+ - cucumber_version/2.1.0/output_path.rb
146
+ - cucumber_version/2.2.0/Gemfile
147
+ - cucumber_version/2.2.0/output_path.rb
148
+ - cucumber_version/2.3.3/Gemfile
149
+ - cucumber_version/2.3.3/output_path.rb
139
150
  - features/ambiguous.feature
140
151
  - features/characteristics/cucumber_step_characteristics.html
141
152
  - features/characteristics/cucumber_step_characteristics.json
@@ -147,40 +158,45 @@ files:
147
158
  - features/scenario_with_background.feature
148
159
  - features/step_definitions/ambiguous_steps.rb
149
160
  - features/step_definitions/fail_steps.rb
161
+ - features/step_definitions/unused_steps.rb
150
162
  - features/step_definitions/wait_steps.rb
163
+ - features/support/env.rb
151
164
  - lib/cucumber_characteristics.rb
152
165
  - lib/cucumber_characteristics/autoload.rb
153
166
  - lib/cucumber_characteristics/configuration.rb
154
- - lib/cucumber_characteristics/cucumber_step_patch.rb
167
+ - lib/cucumber_characteristics/cucumber_1x_step_patch.rb
168
+ - lib/cucumber_characteristics/cucumber_2x_step_patch.rb
169
+ - lib/cucumber_characteristics/cucumber_common_step_patch.rb
155
170
  - lib/cucumber_characteristics/exporter.rb
156
171
  - lib/cucumber_characteristics/formatter.rb
157
172
  - lib/cucumber_characteristics/profile_data.rb
158
173
  - lib/cucumber_characteristics/version.rb
159
174
  - lib/cucumber_characteristics/view/step_report.html.haml
175
+ - spec/html_output_spec.rb
176
+ - spec/spec_helper.rb
160
177
  homepage: https://github.com/singram/cucumber_characteristics
161
178
  licenses:
162
179
  - MIT
180
+ metadata: {}
163
181
  post_install_message:
164
182
  rdoc_options: []
165
183
  require_paths:
166
184
  - lib
167
185
  required_ruby_version: !ruby/object:Gem::Requirement
168
- none: false
169
186
  requirements:
170
- - - ! '>='
187
+ - - ">="
171
188
  - !ruby/object:Gem::Version
172
189
  version: '0'
173
190
  required_rubygems_version: !ruby/object:Gem::Requirement
174
- none: false
175
191
  requirements:
176
- - - ! '>='
192
+ - - ">="
177
193
  - !ruby/object:Gem::Version
178
194
  version: '0'
179
195
  requirements: []
180
196
  rubyforge_project:
181
- rubygems_version: 1.8.24
197
+ rubygems_version: 2.5.1
182
198
  signing_key:
183
- specification_version: 3
199
+ specification_version: 4
184
200
  summary: Gem to profile cucumber steps and features
185
201
  test_files:
186
202
  - features/ambiguous.feature
@@ -194,4 +210,8 @@ test_files:
194
210
  - features/scenario_with_background.feature
195
211
  - features/step_definitions/ambiguous_steps.rb
196
212
  - features/step_definitions/fail_steps.rb
213
+ - features/step_definitions/unused_steps.rb
197
214
  - features/step_definitions/wait_steps.rb
215
+ - features/support/env.rb
216
+ - spec/html_output_spec.rb
217
+ - spec/spec_helper.rb