Dduvall has submitted this change and it was merged.

Change subject: Implemented env and browser teardown
......................................................................


Implemented env and browser teardown

Change-Id: I8004c680770d80c8ad7578c0be99ccf3419b38fb
---
M lib/mediawiki_selenium/browser_factory/base.rb
M lib/mediawiki_selenium/environment.rb
M lib/mediawiki_selenium/support/hooks.rb
3 files changed, 37 insertions(+), 6 deletions(-)

Approvals:
  Dduvall: Looks good to me, approved



diff --git a/lib/mediawiki_selenium/browser_factory/base.rb 
b/lib/mediawiki_selenium/browser_factory/base.rb
index 248695b..cb6785b 100644
--- a/lib/mediawiki_selenium/browser_factory/base.rb
+++ b/lib/mediawiki_selenium/browser_factory/base.rb
@@ -166,6 +166,20 @@
         options
       end
 
+      # Iterate over each browser created by this factory.
+      #
+      # @yield [browser]
+      #
+      def each
+        @browser_cache.each { |_, browser| yield browser }
+      end
+
+      # Executes additional teardown tasks.
+      #
+      def teardown
+        # abstract
+      end
+
       protected
 
       def desired_capabilities
@@ -173,6 +187,7 @@
       end
 
       def finalize_options!(options)
+        # abstract
       end
 
       def http_client
diff --git a/lib/mediawiki_selenium/environment.rb 
b/lib/mediawiki_selenium/environment.rb
index f9822d7..a2962a9 100644
--- a/lib/mediawiki_selenium/environment.rb
+++ b/lib/mediawiki_selenium/environment.rb
@@ -125,6 +125,12 @@
       lookup(:browser).downcase.to_sym
     end
 
+    # Whether browsers should be left open after each scenario completes.
+    #
+    def keep_browser_open?
+      lookup(:keep_browser_open) == "true"
+    end
+
     # Returns the configured value for the given env variable name.
     #
     # @param key [Symbol] Environment variable name.
@@ -189,6 +195,21 @@
       RemoteBrowserFactory::REQUIRED_CONFIG.all? { |name| lookup(name) }
     end
 
+    # Executes teardown tasks including instructing all browser factories to
+    # close any open browsers and perform their own teardown tasks.
+    #
+    # @example Teardown environment resources after each scenario completes
+    #   After do
+    #     teardown
+    #   end
+    #
+    def teardown
+      @factories.each do |factory|
+        factory.each { |browser| browser.close } unless keep_browser_open?
+        factory.teardown
+      end
+    end
+
     # Yields a new environment using the alternative versions of the given
     # configuration options. The alternative values are resolved by looking up
     # options that correspond to the given ones but have the given ID
@@ -217,8 +238,6 @@
     def with_alternative(names, id, &blk)
       with(lookup_all(Array(names), id), &blk)
     end
-
-    protected
 
     private
 
diff --git a/lib/mediawiki_selenium/support/hooks.rb 
b/lib/mediawiki_selenium/support/hooks.rb
index d298bad..4b72e7d 100644
--- a/lib/mediawiki_selenium/support/hooks.rb
+++ b/lib/mediawiki_selenium/support/hooks.rb
@@ -101,8 +101,5 @@
     sauce_api(%Q{{"build": #{ENV["BUILD_NUMBER"]}}}, sid) if 
ENV["BUILD_NUMBER"]
   end
 
-  if @browser
-    # CirrusSearch and VisualEditor need this
-    @browser.close unless ENV["KEEP_BROWSER_OPEN"] == "true" || 
ENV["REUSE_BROWSER"] == "true"
-  end
+  teardown
 end

-- 
To view, visit https://gerrit.wikimedia.org/r/169855
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I8004c680770d80c8ad7578c0be99ccf3419b38fb
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/selenium
Gerrit-Branch: env-abstraction-layer
Gerrit-Owner: Dduvall <[email protected]>
Gerrit-Reviewer: Dduvall <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to