allure-rspec 2.13.3 → 2.13.6
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 +4 -4
- data/README.md +25 -11
- data/lib/allure-rspec.rb +20 -0
- data/lib/allure_rspec/config.rb +28 -0
- data/lib/allure_rspec/formatter.rb +5 -2
- data/lib/allure_rspec/rspec_model.rb +35 -17
- data/lib/allure_rspec/tag_parser.rb +18 -8
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25e23dd81f6ecb2cd12dab863888d69d2b353003d44cdac2978e1e5ba808c314
|
4
|
+
data.tar.gz: f411339041c10eaaed80e56bdbf9b766de22b3ceed683c94eac41afcaeb24728
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb49976110e00089942fcb8093af0238e1a07f94b2e586af9d780db94d4af7aa360278007eb2a4befe5fb51377386278fb43e7933a9705a8b352ece971f8cd3c
|
7
|
+
data.tar.gz: 10ab87cf135248292de6678519dc0bce8048c3f3a391e16207ae4b5b30835bc7cc732193e62d27bb064a1c8331a077ab8e82c714efe535187edfc1942946265f
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# allure-rspec
|
2
|
+
|
2
3
|
[](https://www.rubydoc.info/gems/allure-rspec)
|
3
4
|
|
4
5
|
Allure adapter for [rspec](https://rspec.info/) testing framework
|
@@ -8,32 +9,45 @@ Allure adapter for [rspec](https://rspec.info/) testing framework
|
|
8
9
|
Add it to gemfile:
|
9
10
|
|
10
11
|
```ruby
|
11
|
-
gem
|
12
|
+
gem "allure-rspec"
|
12
13
|
```
|
13
14
|
|
14
15
|
Require in `spec_helper` or any other setup file:
|
15
16
|
|
16
17
|
```ruby
|
17
|
-
require
|
18
|
+
require "allure-rspec"
|
18
19
|
```
|
19
20
|
|
20
21
|
## Configuration
|
21
22
|
|
22
|
-
|
23
|
+
Following configuration options are supported:
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
AllureRspec.configure do |config|
|
27
|
+
config.results_directory = "/whatever/you/like"
|
28
|
+
config.clean_results_directory = true
|
29
|
+
config.logging_level = Logger::INFO
|
30
|
+
# these are used for creating links to bugs or test cases where {} is replaced with keys of relevant items
|
31
|
+
config.link_tms_pattern = "http://www.jira.com/browse/{}"
|
32
|
+
config.link_issue_pattern = "http://www.jira.com/browse/{}"
|
33
|
+
end
|
34
|
+
```
|
23
35
|
|
24
36
|
## Usage
|
25
37
|
|
26
|
-
Via commandline, simply add:
|
38
|
+
Via commandline arguments, simply add:
|
27
39
|
|
28
40
|
```bash
|
29
41
|
--format AllureRspecFormatter
|
30
42
|
```
|
31
43
|
|
32
|
-
|
44
|
+
or
|
45
|
+
|
46
|
+
Via RSpec configuration:
|
33
47
|
|
34
48
|
```ruby
|
35
|
-
RSpec.configure do |
|
36
|
-
|
49
|
+
RSpec.configure do |config|
|
50
|
+
config.formatter = AllureRspecFormatter
|
37
51
|
end
|
38
52
|
```
|
39
53
|
|
@@ -42,8 +56,8 @@ end
|
|
42
56
|
Configure tms link pattern:
|
43
57
|
|
44
58
|
```ruby
|
45
|
-
|
46
|
-
|
59
|
+
AllureRspec.configure do |config|
|
60
|
+
config.link_tms_pattern = "http://www.jira.com/browse/{}"
|
47
61
|
end
|
48
62
|
```
|
49
63
|
|
@@ -68,8 +82,8 @@ end
|
|
68
82
|
Configure issue link pattern:
|
69
83
|
|
70
84
|
```ruby
|
71
|
-
|
72
|
-
|
85
|
+
AllureRspec.configure do |config|
|
86
|
+
config.link_issue_pattern = "http://www.jira.com/browse/{}"
|
73
87
|
end
|
74
88
|
```
|
75
89
|
|
data/lib/allure-rspec.rb
CHANGED
@@ -2,7 +2,27 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require "allure-ruby-commons"
|
5
|
+
require "allure_rspec/config"
|
5
6
|
require "allure_rspec/formatter"
|
6
7
|
|
8
|
+
module AllureRspec
|
9
|
+
class << self
|
10
|
+
# Get allure cucumber configuration
|
11
|
+
# @return [RspecConfig]
|
12
|
+
def configuration
|
13
|
+
RspecConfig.instance
|
14
|
+
end
|
15
|
+
|
16
|
+
# Set allure configuration
|
17
|
+
# @yieldparam [RspecConfig]
|
18
|
+
# @yieldreturn [void]
|
19
|
+
# @return [void]
|
20
|
+
def configure
|
21
|
+
yield(configuration)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Rspec formatter class shorthand
|
7
27
|
AllureRspecFormatter = AllureRspec::RSpecFormatter
|
8
28
|
# rubocop:enable Naming/FileName
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "forwardable"
|
4
|
+
require "singleton"
|
5
|
+
|
6
|
+
module AllureRspec
|
7
|
+
# Shorthand configuration class
|
8
|
+
class RspecConfig < Allure::Config
|
9
|
+
include Singleton
|
10
|
+
extend Forwardable
|
11
|
+
|
12
|
+
def_delegators :@allure_config,
|
13
|
+
:clean_results_directory,
|
14
|
+
:clean_results_directory=,
|
15
|
+
:link_issue_pattern,
|
16
|
+
:link_issue_pattern=,
|
17
|
+
:link_tms_pattern,
|
18
|
+
:link_tms_pattern=,
|
19
|
+
:logging_level,
|
20
|
+
:logging_level=,
|
21
|
+
:results_directory,
|
22
|
+
:results_directory=
|
23
|
+
|
24
|
+
def initialize
|
25
|
+
@allure_config = Allure.configuration
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "ruby2_keywords"
|
3
4
|
require "rspec/core"
|
4
5
|
require "rspec/core/formatters/base_formatter"
|
5
6
|
|
6
7
|
require_relative "rspec_model"
|
7
8
|
|
9
|
+
# Main allure-rspec module
|
8
10
|
module AllureRspec
|
11
|
+
# Main rspec formatter class translating rspec events to allure lifecycle
|
9
12
|
class RSpecFormatter < RSpec::Core::Formatters::BaseFormatter
|
10
13
|
include AllureRspecModel
|
11
14
|
|
@@ -20,7 +23,7 @@ module AllureRspec
|
|
20
23
|
|
21
24
|
RSpec::Core::Example.class_eval do
|
22
25
|
Allure.singleton_methods.each do |method|
|
23
|
-
define_method(method) { |*args, &block| Allure.__send__(method, *args, &block) }
|
26
|
+
ruby2_keywords define_method(method) { |*args, &block| Allure.__send__(method, *args, &block) }
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
@@ -56,7 +59,7 @@ module AllureRspec
|
|
56
59
|
end
|
57
60
|
|
58
61
|
# Starts example group
|
59
|
-
# @param [RSpec::Core::Notifications::GroupNotification]
|
62
|
+
# @param [RSpec::Core::Notifications::GroupNotification] _example_group_notification
|
60
63
|
# @return [void]
|
61
64
|
def example_group_finished(_example_group_notification)
|
62
65
|
lifecycle.stop_test_container
|
@@ -6,6 +6,7 @@ require "pathname"
|
|
6
6
|
require_relative "tag_parser"
|
7
7
|
|
8
8
|
module AllureRspec
|
9
|
+
# Support class for transforming rspec test entities in to allure model entities
|
9
10
|
module AllureRspecModel
|
10
11
|
include TagParser
|
11
12
|
|
@@ -48,6 +49,21 @@ module AllureRspec
|
|
48
49
|
|
49
50
|
private
|
50
51
|
|
52
|
+
# @param [RSpec::Core::Example] example
|
53
|
+
# @return [Array<Allure::Label>]
|
54
|
+
def links(example)
|
55
|
+
tms_links(example.metadata) + issue_links(example.metadata)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Get allure status from result
|
59
|
+
# @param [RSpec::Core::Example::ExecutionResult] result
|
60
|
+
# @return [Symbol]
|
61
|
+
def status(result)
|
62
|
+
return Allure::ResultUtils.status(result.exception) if result.status == :failed
|
63
|
+
|
64
|
+
ALLURE_STATUS[result.status]
|
65
|
+
end
|
66
|
+
|
51
67
|
# @param [RSpec::Core::Example] example
|
52
68
|
# @return [Array<Allure::Label>]
|
53
69
|
def labels(example)
|
@@ -58,8 +74,8 @@ module AllureRspec
|
|
58
74
|
labels << Allure::ResultUtils.story_label(example.description)
|
59
75
|
labels << Allure::ResultUtils.test_class_label(File.basename(example.file_path, ".rb"))
|
60
76
|
labels << severity(example.metadata)
|
61
|
-
labels.push(*suite_labels(example.example_group))
|
62
77
|
labels.push(*tag_labels(example.metadata))
|
78
|
+
labels.push(*suite_labels(example.example_group))
|
63
79
|
end
|
64
80
|
end
|
65
81
|
|
@@ -67,28 +83,30 @@ module AllureRspec
|
|
67
83
|
# @param [RSpec::Core::ExampleGroup] example_group
|
68
84
|
# @return [Array<Allure::Label>]
|
69
85
|
def suite_labels(example_group)
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
86
|
+
[].tap do |labels|
|
87
|
+
parents = example_group.parent_groups.map(&:description)
|
88
|
+
labels << Allure::ResultUtils.suite_label(suite(parents))
|
89
|
+
labels << Allure::ResultUtils.parent_suite_label(parent_suite(parents))
|
90
|
+
labels << Allure::ResultUtils.sub_suite_label(sub_suites(parents))
|
76
91
|
end
|
77
92
|
end
|
78
93
|
|
79
|
-
# @param [
|
80
|
-
# @return [
|
81
|
-
def
|
82
|
-
|
94
|
+
# @param [Array<String>] parents
|
95
|
+
# @return [String]
|
96
|
+
def suite(parents)
|
97
|
+
parents.length == 1 ? parents.last : parents[-2]
|
83
98
|
end
|
84
99
|
|
85
|
-
#
|
86
|
-
# @
|
87
|
-
|
88
|
-
|
89
|
-
|
100
|
+
# @param [Array<String>] parents
|
101
|
+
# @return [String]
|
102
|
+
def parent_suite(parents)
|
103
|
+
parents.length > 1 ? parents.last : nil
|
104
|
+
end
|
90
105
|
|
91
|
-
|
106
|
+
# @param [Array<String>] parents
|
107
|
+
# @return [String]
|
108
|
+
def sub_suites(parents)
|
109
|
+
parents.length > 2 ? parents[0..-3].join(" > ") : nil
|
92
110
|
end
|
93
111
|
|
94
112
|
# Strip relative ./ form path
|
@@ -7,27 +7,23 @@ module AllureRspec
|
|
7
7
|
# @param [Hash] metadata
|
8
8
|
# @return [Array<Allure::Label>]
|
9
9
|
def tag_labels(metadata)
|
10
|
-
return [] unless
|
10
|
+
return [] unless metadata.keys.any? { |k| allure?(k) }
|
11
11
|
|
12
|
-
metadata.select { |k
|
12
|
+
metadata.select { |k| allure?(k) }.values.map { |v| Allure::ResultUtils.tag_label(v) }
|
13
13
|
end
|
14
14
|
|
15
15
|
# Get tms links
|
16
16
|
# @param [Hash] metadata
|
17
17
|
# @return [Array<Allure::Link>]
|
18
18
|
def tms_links(metadata)
|
19
|
-
|
20
|
-
|
21
|
-
metadata.select { |k, _v| tms?(k) }.values.map { |v| Allure::ResultUtils.tms_link(v) }
|
19
|
+
matching_links(metadata, :tms)
|
22
20
|
end
|
23
21
|
|
24
22
|
# Get issue links
|
25
23
|
# @param [Hash] metadata
|
26
24
|
# @return [Array<Allure::Link>]
|
27
25
|
def issue_links(metadata)
|
28
|
-
|
29
|
-
|
30
|
-
metadata.select { |k, _v| issue?(k) }.values.map { |v| Allure::ResultUtils.issue_link(v) }
|
26
|
+
matching_links(metadata, :issue)
|
31
27
|
end
|
32
28
|
|
33
29
|
# Get severity
|
@@ -50,6 +46,20 @@ module AllureRspec
|
|
50
46
|
|
51
47
|
private
|
52
48
|
|
49
|
+
# @param [Hash] metadata
|
50
|
+
# @param [Symbol] type
|
51
|
+
# @return [Array<Allure::Link>]
|
52
|
+
def matching_links(metadata, type)
|
53
|
+
unless AllureRspec.configuration.public_send("link_#{type}_pattern") &&
|
54
|
+
metadata.keys.any? { |k| __send__("#{type}?", k) }
|
55
|
+
return []
|
56
|
+
end
|
57
|
+
|
58
|
+
metadata
|
59
|
+
.select { |k| __send__("#{type}?", k) }.values
|
60
|
+
.map { |v| Allure::ResultUtils.public_send("#{type}_link", v) }
|
61
|
+
end
|
62
|
+
|
53
63
|
# Does key match custom allure label
|
54
64
|
# @param [Symbol] key
|
55
65
|
# @return [boolean]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: allure-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.13.
|
4
|
+
version: 2.13.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrejs Cunskis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: allure-ruby-commons
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.13.
|
19
|
+
version: 2.13.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.13.
|
26
|
+
version: 2.13.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec-core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ruby2_keywords
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.0.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.0.2
|
41
55
|
description: Cucumber adaptor to generate rich allure test reports
|
42
56
|
email: andrejs.cunskis@gmail.com
|
43
57
|
executables: []
|
@@ -46,6 +60,7 @@ extra_rdoc_files: []
|
|
46
60
|
files:
|
47
61
|
- README.md
|
48
62
|
- lib/allure-rspec.rb
|
63
|
+
- lib/allure_rspec/config.rb
|
49
64
|
- lib/allure_rspec/formatter.rb
|
50
65
|
- lib/allure_rspec/rspec_model.rb
|
51
66
|
- lib/allure_rspec/tag_parser.rb
|
@@ -73,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
88
|
- !ruby/object:Gem::Version
|
74
89
|
version: '0'
|
75
90
|
requirements: []
|
76
|
-
rubygems_version: 3.
|
91
|
+
rubygems_version: 3.1.2
|
77
92
|
signing_key:
|
78
93
|
specification_version: 4
|
79
94
|
summary: Allure rspec ruby adaptor
|