Commit f6a238fc authored by Andrejs Cunskis's avatar Andrejs Cunskis

Move custom formatters to separate module

Create separate Formatters module
Move all custom formatter under same Formatters namespace
parent 958aa425
...@@ -73,7 +73,7 @@ module QA ...@@ -73,7 +73,7 @@ module QA
def configure_rspec def configure_rspec
RSpec.configure do |config| RSpec.configure do |config|
config.add_formatter(AllureRspecFormatter) config.add_formatter(AllureRspecFormatter)
config.add_formatter(QA::Support::AllureMetadataFormatter) config.add_formatter(QA::Support::Formatters::AllureMetadataFormatter)
end end
end end
......
# frozen_string_literal: true
require 'rspec/core'
require "rspec/core/formatters/base_formatter"
module QA
module Support
class AllureMetadataFormatter < ::RSpec::Core::Formatters::BaseFormatter
::RSpec::Core::Formatters.register(
self,
:example_started
)
# Starts example
# @param [RSpec::Core::Notifications::ExampleNotification] example_notification
# @return [void]
def example_started(example_notification)
example = example_notification.example
quarantine_issue = example.metadata.dig(:quarantine, :issue)
example.issue('Quarantine issue', quarantine_issue) if quarantine_issue
spec_file = example.file_path.split('/').last
example.issue(
'Failure issues',
"https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&state=opened&search=#{spec_file}"
)
return unless Runtime::Env.running_in_ci?
example.add_link(name: "Job(#{Runtime::Env.ci_job_name})", url: Runtime::Env.ci_job_url)
end
end
end
end
# frozen_string_literal: true
module QA
module Support
module Formatters
class AllureMetadataFormatter < ::RSpec::Core::Formatters::BaseFormatter
::RSpec::Core::Formatters.register(
self,
:example_started
)
# Starts example
# @param [RSpec::Core::Notifications::ExampleNotification] example_notification
# @return [void]
def example_started(example_notification)
example = example_notification.example
quarantine_issue = example.metadata.dig(:quarantine, :issue)
example.issue('Quarantine issue', quarantine_issue) if quarantine_issue
spec_file = example.file_path.split('/').last
example.issue(
'Failure issues',
"https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&state=opened&search=#{spec_file}"
)
return unless Runtime::Env.running_in_ci?
example.add_link(name: "Job(#{Runtime::Env.ci_job_name})", url: Runtime::Env.ci_job_url)
end
end
end
end
end
# frozen_string_literal: true # frozen_string_literal: true
require 'rspec/core'
require "rspec/core/formatters/base_formatter"
module QA module QA
module Specs module Support
module Helpers module Formatters
class ContextFormatter < ::RSpec::Core::Formatters::BaseFormatter class ContextFormatter < ::RSpec::Core::Formatters::BaseFormatter
include ContextSelector include Specs::Helpers::ContextSelector
::RSpec::Core::Formatters.register( ::RSpec::Core::Formatters.register(
self, self,
......
# frozen_string_literal: true
require 'rspec/core'
require 'rspec/core/formatters/base_formatter'
module QA
module Support
module Formatters
end
end
end
# frozen_string_literal: true # frozen_string_literal: true
require 'rspec/core'
require "rspec/core/formatters/base_formatter"
module QA module QA
module Specs module Support
module Helpers module Formatters
class QuarantineFormatter < ::RSpec::Core::Formatters::BaseFormatter class QuarantineFormatter < ::RSpec::Core::Formatters::BaseFormatter
include Quarantine include Specs::Helpers::Quarantine
::RSpec::Core::Formatters.register( ::RSpec::Core::Formatters.register(
self, self,
......
...@@ -25,8 +25,8 @@ RSpec.configure do |config| ...@@ -25,8 +25,8 @@ RSpec.configure do |config|
config.include QA::Support::Matchers::EventuallyMatcher config.include QA::Support::Matchers::EventuallyMatcher
config.include QA::Support::Matchers::HaveMatcher config.include QA::Support::Matchers::HaveMatcher
config.add_formatter QA::Specs::Helpers::ContextFormatter config.add_formatter QA::Support::Formatters::ContextFormatter
config.add_formatter QA::Specs::Helpers::QuarantineFormatter config.add_formatter QA::Support::Formatters::QuarantineFormatter
config.before do |example| config.before do |example|
QA::Runtime::Logger.debug("\nStarting test: #{example.full_description}\n") QA::Runtime::Logger.debug("\nStarting test: #{example.full_description}\n")
......
...@@ -68,7 +68,8 @@ describe QA::Runtime::AllureReport do ...@@ -68,7 +68,8 @@ describe QA::Runtime::AllureReport do
it 'adds rspec and metadata formatter' do it 'adds rspec and metadata formatter' do
expect(rspec_config).to have_received(:add_formatter).with(AllureRspecFormatter).ordered expect(rspec_config).to have_received(:add_formatter).with(AllureRspecFormatter).ordered
expect(rspec_config).to have_received(:add_formatter).with(QA::Support::AllureMetadataFormatter).ordered expect(rspec_config).to have_received(:add_formatter)
.with(QA::Support::Formatters::AllureMetadataFormatter).ordered
end end
it 'configures screenshot saving' do it 'configures screenshot saving' do
......
...@@ -10,7 +10,7 @@ RSpec.describe QA::Specs::Helpers::ContextSelector do ...@@ -10,7 +10,7 @@ RSpec.describe QA::Specs::Helpers::ContextSelector do
QA::Runtime::Scenario.define(:gitlab_address, 'https://staging.gitlab.com') QA::Runtime::Scenario.define(:gitlab_address, 'https://staging.gitlab.com')
RSpec::Core::Sandbox.sandboxed do |config| RSpec::Core::Sandbox.sandboxed do |config|
config.formatter = QA::Specs::Helpers::ContextFormatter config.formatter = QA::Support::Formatters::ContextFormatter
# If there is an example-within-an-example, we want to make sure the inner example # If there is an example-within-an-example, we want to make sure the inner example
# does not get a reference to the outer example (the real spec) if it calls # does not get a reference to the outer example (the real spec) if it calls
......
...@@ -8,7 +8,7 @@ RSpec.describe QA::Specs::Helpers::Quarantine do ...@@ -8,7 +8,7 @@ RSpec.describe QA::Specs::Helpers::Quarantine do
around do |ex| around do |ex|
RSpec::Core::Sandbox.sandboxed do |config| RSpec::Core::Sandbox.sandboxed do |config|
config.formatter = QA::Specs::Helpers::QuarantineFormatter config.formatter = QA::Support::Formatters::QuarantineFormatter
# If there is an example-within-an-example, we want to make sure the inner example # If there is an example-within-an-example, we want to make sure the inner example
# does not get a reference to the outer example (the real spec) if it calls # does not get a reference to the outer example (the real spec) if it calls
......
# frozen_string_literal: true # frozen_string_literal: true
describe QA::Support::AllureMetadataFormatter do describe QA::Support::Formatters::AllureMetadataFormatter do
include QA::Support::Helpers::StubEnv include QA::Support::Helpers::StubEnv
let(:formatter) { described_class.new(StringIO.new) } let(:formatter) { described_class.new(StringIO.new) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment