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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19e2385411126f381ee6200d7355751a730acda12387aadf622c129be11a0c0d
|
4
|
+
data.tar.gz: 49c8601dbd91f42b5f25debe6c501d3770260416b9502190ad0c51e01c1e0b53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
11
|
-
|
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(
|
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
|
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.
|
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-
|
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:
|
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:
|
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.
|
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.
|
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
|