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