rspec_pretty_html_reporter 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb778b6e59fc1d897dd91626bdc82f763f32010ec6e618d10536a24fa7137260
4
- data.tar.gz: 28be25ab79d74a6f363700dde7a7af73953d79ce3289a4dc9a3795267b28c86b
3
+ metadata.gz: 19e2385411126f381ee6200d7355751a730acda12387aadf622c129be11a0c0d
4
+ data.tar.gz: 49c8601dbd91f42b5f25debe6c501d3770260416b9502190ad0c51e01c1e0b53
5
5
  SHA512:
6
- metadata.gz: c65d6d8a1f5fbe9086aa2b028b108e69503c813d8f827fc5646ef668d66e700c28a38b03e1720b2d5c18ca37eed9afec7243ac485f38e4b68be900f091a5e8b6
7
- data.tar.gz: bc1ffcc7489649cab6466b0403059e258c0bb43114faa9b5e3cb9a4dff7bcb41b363f92547db592579ed8b8ce19712867e4bc6ca148f8dc68f705cde7bb5c019
6
+ metadata.gz: c53a7027d3f170a25ac9cb3290944b9939197acf3207ae4929c28026f4bf998b6f0e8eaa8090b92fb7682e9876d630b5f838bf5801f5fc4a1a495d2abb0fa23f
7
+ data.tar.gz: 28aad8ae1532df88d43fae0ee76d6d68acbadaee57573c586c50a48bdc44f0306d0f526b6c7edfd5b584554def289544d8516090a00c4dc36d03def57d4a682a
@@ -1,5 +1,6 @@
1
1
  require 'rspec_pretty_html_reporter/oopsy'
2
2
 
3
+ # Processes the array of example information for all of the example group that has been run
3
4
  class Example
4
5
  def self.load_spec_comments!(examples)
5
6
  examples.group_by(&:file_path).each do |file_path, file_examples|
@@ -7,8 +8,8 @@ class Example
7
8
 
8
9
  file_examples.zip(file_examples.rotate).each do |ex, next_ex|
9
10
  lexically_next = next_ex &&
10
- next_ex.file_path == ex.file_path &&
11
- next_ex.metadata[:line_number] > ex.metadata[:line_number]
11
+ next_ex.file_path == ex.file_path &&
12
+ next_ex.metadata[:line_number] > ex.metadata[:line_number]
12
13
  start_line_idx = ex.metadata[:line_number] - 1
13
14
  next_start_idx = (lexically_next ? next_ex.metadata[:line_number] : lines.size) - 1
14
15
  spec_lines = lines[start_line_idx...next_start_idx].select { |l| l.match(/#->/) }
@@ -21,7 +22,6 @@ class Example
21
22
  :metadata, :spec, :screenshots, :screenrecord, :failed_screenshot
22
23
 
23
24
  def initialize(example)
24
-
25
25
  @example_group = example.example_group.to_s
26
26
  @description = example.description
27
27
  @full_description = example.full_description
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Helpers
4
+
5
+ ##
6
+ # Appends a number to duplicate filename to avoid them being overwritten
7
+ # by Specs with the same description.
8
+ #
9
+ # Renames duplicate filenames for specs that have the same description
10
+ # @param [String] filename Duplicate filename to rename
11
+ # @return [String] Renamed filename
12
+ #
13
+ def self.rename_duplicate_filename(filename)
14
+ if File.exist?(filename)
15
+ base, ext = /\A(.+?)(\.[^.]+)?\Z/.match(filename).to_a[1..]
16
+ number = 2
17
+ number += 1 while File.exist?(filename = "#{base}-#{number}#{ext}")
18
+ end
19
+ filename
20
+ end
21
+
22
+ ##
23
+ # Appends a number to a duplicate description to avoid them being overwritten
24
+ # by Specs with the same description.
25
+ #
26
+ # Renames duplicate descriptions for specs that have the same description
27
+ # @param [Hash] group_name Group name to check for duplicate keys
28
+ # @param [String] description Duplicate description to rename
29
+ # @return [String] Renamed description
30
+ #
31
+ def self.rename_duplicate_description(group_name, description)
32
+ if group_name.key?(description)
33
+ number = group_name.select { |k, _v| k.include?(description) }.length
34
+ description = "#{description}-#{number + 1}"
35
+ end
36
+ description
37
+ end
38
+ end
@@ -6,10 +6,12 @@ require 'active_support/inflector'
6
6
  require 'fileutils'
7
7
  require 'erb'
8
8
  require 'rspec_pretty_html_reporter/example'
9
+ require 'rspec_pretty_html_reporter/helpers'
9
10
 
10
11
  I18n.enforce_available_locales = false
11
12
 
12
13
  class RspecPrettyHtmlReporter < RSpec::Core::Formatters::BaseFormatter
14
+ include Helpers
13
15
  DEFAULT_REPORT_PATH = File.join(Bundler.root, 'reports', Time.now.strftime('%Y%m%d-%H%M%S'))
14
16
  REPORT_PATH = ENV['REPORT_PATH'] || DEFAULT_REPORT_PATH
15
17
 
@@ -48,8 +50,6 @@ class RspecPrettyHtmlReporter < RSpec::Core::Formatters::BaseFormatter
48
50
  end
49
51
 
50
52
  def example_passed(notification)
51
- # require 'byebug'; byebug
52
-
53
53
  @group_example_success_count += 1
54
54
  @examples << Example.new(notification.example)
55
55
  end
@@ -68,8 +68,9 @@ class RspecPrettyHtmlReporter < RSpec::Core::Formatters::BaseFormatter
68
68
  @group_level -= 1
69
69
 
70
70
  if @group_level.zero?
71
+ @filename = Helpers.rename_duplicate_filename("#{REPORT_PATH}/#{notification.group.description.parameterize}.html")
71
72
 
72
- File.open("#{REPORT_PATH}/#{notification.group.description.parameterize}.html", 'w') do |f|
73
+ File.open(@filename, 'w') do |f|
73
74
  @passed = @group_example_success_count
74
75
  @failed = @group_example_failure_count
75
76
  @pending = @group_example_pending_count
@@ -90,7 +91,6 @@ class RspecPrettyHtmlReporter < RSpec::Core::Formatters::BaseFormatter
90
91
 
91
92
  @total_group_examples = @passed + @failed + @pending
92
93
 
93
-
94
94
  class_map = { passed: 'success', failed: 'danger', pending: 'warning' }
95
95
  statuses = @examples.map(&:status)
96
96
  @status = if statuses.include?('failed')
@@ -98,7 +98,8 @@ class RspecPrettyHtmlReporter < RSpec::Core::Formatters::BaseFormatter
98
98
  else
99
99
  (statuses.include?('passed') ? 'passed' : 'pending')
100
100
  end
101
- @all_groups[notification.group.description.parameterize] = {
101
+ @spec_description = Helpers.rename_duplicate_description(@all_groups, notification.group.description.parameterize)
102
+ @all_groups[@spec_description] = {
102
103
  group: notification.group.description,
103
104
  examples: @examples.size,
104
105
  status: @status,
@@ -108,8 +109,7 @@ class RspecPrettyHtmlReporter < RSpec::Core::Formatters::BaseFormatter
108
109
  pending: statuses.select { |s| s == 'pending' },
109
110
  duration: @summary_duration
110
111
  }
111
-
112
- @example_status = @all_groups[notification.group.description.parameterize][:klass]
112
+ @example_status = @all_groups[@spec_description][:klass]
113
113
 
114
114
  template_file = File.read("#{File.dirname(__FILE__)}/../templates/report.erb")
115
115
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_pretty_html_reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Gutierrez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-21 00:00:00.000000000 Z
11
+ date: 2022-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '7.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.3'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rouge
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '3.4'
61
+ version: 3.11.0
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '3.4'
68
+ version: 3.11.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: byebug
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,34 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '11.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: capybara
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.36'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.36'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '13.0'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: rdoc
71
113
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +128,14 @@ dependencies:
86
128
  requirements:
87
129
  - - "~>"
88
130
  - !ruby/object:Gem::Version
89
- version: 3.4.0
131
+ version: 3.11.0
90
132
  type: :development
91
133
  prerelease: false
92
134
  version_requirements: !ruby/object:Gem::Requirement
93
135
  requirements:
94
136
  - - "~>"
95
137
  - !ruby/object:Gem::Version
96
- version: 3.4.0
138
+ version: 3.11.0
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: turnip
99
141
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +156,20 @@ dependencies:
114
156
  - - ">="
115
157
  - !ruby/object:Gem::Version
116
158
  version: 2.0.2
159
+ - !ruby/object:Gem::Dependency
160
+ name: webdrivers
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '5.0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '5.0'
117
173
  description: A custom reporter for RSpec which generates pretty HTML reports
118
174
  email:
119
175
  - testing@spartan-testsolutions.co.uk
@@ -125,6 +181,7 @@ files:
125
181
  - README.md
126
182
  - lib/rspec_pretty_html_reporter.rb
127
183
  - lib/rspec_pretty_html_reporter/example.rb
184
+ - lib/rspec_pretty_html_reporter/helpers.rb
128
185
  - lib/rspec_pretty_html_reporter/oopsy.rb
129
186
  - resources/bootstrap-4.0.0-dist/css/bootstrap.min.css
130
187
  - resources/bootstrap-4.0.0-dist/js/bootstrap.js