jenkins-bot has submitted this change and it was merged.
Change subject: Decouple `Environment#test_name`
......................................................................
Decouple `Environment#test_name`
Factored out `Environment#test_name` completely to keep Cucumber
specific implementation in the `Before` and `After` hooks.
Implemented a general `Environment#setup` method that should be called
to setup each scenario in a test-runner agnostic way.
Bug: T108273
Change-Id: I1cc6cbc1c90b9322bfef4b1b4f6c6197b5df4a5e
---
M lib/mediawiki_selenium.rb
M lib/mediawiki_selenium/environment.rb
M lib/mediawiki_selenium/support/env.rb
M lib/mediawiki_selenium/support/hooks.rb
4 files changed, 31 insertions(+), 28 deletions(-)
Approvals:
Zfilipin: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/mediawiki_selenium.rb b/lib/mediawiki_selenium.rb
index 33fe8f9..505c50a 100644
--- a/lib/mediawiki_selenium.rb
+++ b/lib/mediawiki_selenium.rb
@@ -9,6 +9,7 @@
autoload :PageFactory, 'mediawiki_selenium/page_factory'
autoload :Raita, 'mediawiki_selenium/raita'
autoload :RemoteBrowserFactory, 'mediawiki_selenium/remote_browser_factory'
+ autoload :StrictPending, 'mediawiki_selenium/support/modules/strict_pending'
autoload :UserFactory, 'mediawiki_selenium/user_factory'
autoload :UserFactoryHelper,
'mediawiki_selenium/support/modules/user_factory_helper'
end
diff --git a/lib/mediawiki_selenium/environment.rb
b/lib/mediawiki_selenium/environment.rb
index e4cd4ea..f772707 100644
--- a/lib/mediawiki_selenium/environment.rb
+++ b/lib/mediawiki_selenium/environment.rb
@@ -346,6 +346,16 @@
RemoteBrowserFactory::REQUIRED_CONFIG.all? { |name| lookup(name,
default: false) }
end
+ # Executes setup tasks. Currently no tasks are performed by default but
+ # additional helpers may perform their own tasks by implementing this
+ # method.
+ #
+ # @param _info [Hash] Hash of test case information.
+ #
+ def setup(_info = {})
+ # no-op
+ end
+
# Executes teardown tasks including instructing all browser factories to
# close any open browsers and perform their own teardown tasks.
#
@@ -367,23 +377,6 @@
end
factory.teardown(self, info[:status] || :passed)
- end
- end
-
- # Returns a name from the given scenario.
- #
- # @param scenario [Cucumber::Ast::Scenario]
- #
- # @return [String]
- #
- def test_name(scenario)
- if scenario.respond_to? :feature
- "#{scenario.feature.title}: #{scenario.title}"
- elsif scenario.respond_to? :scenario_outline
- outline = scenario.scenario_outline
- "#{outline.feature.title}: #{outline.title}: #{scenario.name}"
- else
- scenario.name
end
end
diff --git a/lib/mediawiki_selenium/support/env.rb
b/lib/mediawiki_selenium/support/env.rb
index 69ead81..a4d50e4 100644
--- a/lib/mediawiki_selenium/support/env.rb
+++ b/lib/mediawiki_selenium/support/env.rb
@@ -1,10 +1,6 @@
-# before all
require 'bundler/setup'
require 'page-object/page_factory'
require 'watir-webdriver'
-
-require 'mediawiki_selenium/support/modules/api_helper'
-require 'mediawiki_selenium/support/modules/strict_pending'
World { MediawikiSelenium::Environment.load_default }
diff --git a/lib/mediawiki_selenium/support/hooks.rb
b/lib/mediawiki_selenium/support/hooks.rb
index ddff769..4c2d724 100644
--- a/lib/mediawiki_selenium/support/hooks.rb
+++ b/lib/mediawiki_selenium/support/hooks.rb
@@ -18,6 +18,21 @@
end
end
+# Determine scenario name and setup the environment
+Before do |scenario|
+ @scenario_name =
+ if scenario.respond_to? :feature
+ "#{scenario.feature.title}: #{scenario.title}"
+ elsif scenario.respond_to? :scenario_outline
+ outline = scenario.scenario_outline
+ "#{outline.feature.title}: #{outline.title}: #{scenario.name}"
+ else
+ scenario.name
+ end
+
+ setup(name: @scenario_name)
+end
+
# Enforce a dependency check for all scenarios tagged with @extension- tags
Before do |scenario|
# Backgrounds themselves don't have tags, so get them from the feature
@@ -46,13 +61,13 @@
end
end
-Before do |scenario|
+Before do
# Create a unique random string for this scenario
@random_string = Random.new.rand.to_s
# Annotate sessions with the scenario name and Jenkins build info
browser_factory.configure do |options|
- options[:desired_capabilities][:name] = test_name(scenario)
+ options[:desired_capabilities][:name] = @scenario_name
end
browser_factory.configure(:job_name) do |job, options|
@@ -65,12 +80,10 @@
end
After do |scenario|
- scenario_name = test_name(scenario)
-
if scenario.respond_to?(:status)
require 'fileutils'
- teardown(name: scenario_name, status: scenario.status) do |browser|
+ teardown(name: @scenario_name, status: scenario.status) do |browser|
# Embed remote session URLs
if remote? && browser.driver.respond_to?(:session_id)
embed("http://saucelabs.com/jobs/#{browser.driver.session_id}",
'text/url')
@@ -80,13 +93,13 @@
if scenario.failed? && lookup(:screenshot_failures, default: false) ==
'true'
screen_dir = lookup(:screenshot_failures_path, default: 'screenshots')
FileUtils.mkdir_p screen_dir
- name = scenario_name.gsub(/ /, '_')
+ name = @scenario_name.gsub(/ /, '_')
path = "#{screen_dir}/#{name}.png"
browser.screenshot.save path
embed path, 'image/png'
end
end
else
- teardown(name: scenario_name)
+ teardown(name: @scenario_name)
end
end
--
To view, visit https://gerrit.wikimedia.org/r/230139
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I1cc6cbc1c90b9322bfef4b1b4f6c6197b5df4a5e
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/selenium
Gerrit-Branch: master
Gerrit-Owner: Dduvall <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: Zfilipin <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits