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

Reply via email to