rspec_pretty_html_reporter 1.1.1 → 1.1.2

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