Dduvall has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/180080

Change subject: Fixed screenshots upon failed scenarios
......................................................................

Fixed screenshots upon failed scenarios

Environment#teardown now yields each browser before it's closed. The
screenshot hook makes use of this to screenshot each browser upon
failure.

Change-Id: Ie8162f9009f303c1ea8ca525faaeb4ac5a0251df
---
M lib/mediawiki_selenium/browser_factory/chrome.rb
M lib/mediawiki_selenium/browser_factory/firefox.rb
M lib/mediawiki_selenium/browser_factory/phantomjs.rb
M lib/mediawiki_selenium/environment.rb
M lib/mediawiki_selenium/support/hooks.rb
5 files changed, 28 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/selenium 
refs/changes/80/180080/1

diff --git a/lib/mediawiki_selenium/browser_factory/chrome.rb 
b/lib/mediawiki_selenium/browser_factory/chrome.rb
index b0178a0..c0ff635 100644
--- a/lib/mediawiki_selenium/browser_factory/chrome.rb
+++ b/lib/mediawiki_selenium/browser_factory/chrome.rb
@@ -6,6 +6,8 @@
     #  - browser_language
     #  - browser_user_agent
     #
+    # @see Base
+    #
     class Chrome < Base
       bind(:browser_language) do |language, options|
         options[:prefs]["intl.accept_languages"] = language
diff --git a/lib/mediawiki_selenium/browser_factory/firefox.rb 
b/lib/mediawiki_selenium/browser_factory/firefox.rb
index 6ffaf33..e45abc1 100644
--- a/lib/mediawiki_selenium/browser_factory/firefox.rb
+++ b/lib/mediawiki_selenium/browser_factory/firefox.rb
@@ -7,8 +7,9 @@
     #  - browser_timeout
     #  - browser_user_agent
     #
+    # @see Base
+    #
     class Firefox < Base
-
       bind(:browser_timeout) do |timeout, options|
         timeout = timeout.to_i
         options[:profile]["dom.max_script_run_time"] = timeout
diff --git a/lib/mediawiki_selenium/browser_factory/phantomjs.rb 
b/lib/mediawiki_selenium/browser_factory/phantomjs.rb
index 112bc65..bc3f2fb 100644
--- a/lib/mediawiki_selenium/browser_factory/phantomjs.rb
+++ b/lib/mediawiki_selenium/browser_factory/phantomjs.rb
@@ -6,6 +6,8 @@
     #  - browser_language
     #  - browser_user_agent
     #
+    # @see Base
+    #
     class Phantomjs < Base
       bind(:browser_language) do |language, options|
         
options[:desired_capabilities]["phantomjs.page.customHeaders.Accept-Language"] 
= language
diff --git a/lib/mediawiki_selenium/environment.rb 
b/lib/mediawiki_selenium/environment.rb
index 7790ba7..823919f 100644
--- a/lib/mediawiki_selenium/environment.rb
+++ b/lib/mediawiki_selenium/environment.rb
@@ -287,14 +287,21 @@
     #
     # @example Teardown environment resources after each scenario completes
     #   After do
-    #     teardown(scenario.passed?)
+    #     teardown(scenario.status)
     #   end
     #
     # @param status [Symbol] Status of the executed scenario.
     #
+    # @yield [browser]
+    # @yieldparam browser [Watir::Browser] Browser object, before it's closed.
+    #
     def teardown(status = :passed)
       @factory_cache.each do |_, factory|
-        factory.each { |browser| browser.close } unless keep_browser_open?
+        factory.each do |browser|
+          yield browser if block_given?
+          browser.close unless keep_browser_open?
+        end
+
         factory.teardown(self, status)
       end
     end
diff --git a/lib/mediawiki_selenium/support/hooks.rb 
b/lib/mediawiki_selenium/support/hooks.rb
index d0d7441..ea7edda 100644
--- a/lib/mediawiki_selenium/support/hooks.rb
+++ b/lib/mediawiki_selenium/support/hooks.rb
@@ -80,18 +80,20 @@
 end
 
 After do |scenario|
-  if @browser && scenario.failed? && lookup(:screenshot_failures) == "true"
-    require "fileutils"
-    screen_dir = lookup(:screenshot_failures_path) || "screenshots"
-    FileUtils.mkdir_p screen_dir
-    name = test_name(scenario).gsub(/ /, '_')
-    path = "#{screen_dir}/#{name}.png"
-    @browser.screenshot.save path
-    embed path, "image/png"
-  end
-
   if scenario.respond_to?(:status)
-    teardown(scenario.status)
+    require "fileutils"
+
+    teardown(scenario.status) do |browser|
+      if scenario.failed? && lookup(:screenshot_failures, default: false) == 
"true"
+        screen_dir = lookup(:screenshot_failures_path, default: "screenshots")
+        FileUtils.mkdir_p screen_dir
+        name = test_name(scenario).gsub(/ /, '_')
+        path = "#{screen_dir}/#{name}.png"
+        browser.screenshot.save path
+        embed path, "image/png"
+      end
+
+    end
   else
     teardown
   end

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie8162f9009f303c1ea8ca525faaeb4ac5a0251df
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/selenium
Gerrit-Branch: env-abstraction-layer
Gerrit-Owner: Dduvall <[email protected]>

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

Reply via email to