Skip to content

Commit cf26092

Browse files
committed
[rb] convert RSpec after hook to test listener
Turns out that when using :aggregate_failures, the exception isn't populated yet in the after hook
1 parent f86a7c0 commit cf26092

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

rb/spec/integration/selenium/webdriver/spec_helper.rb

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,33 @@
2929

3030
GlobalTestEnv = WebDriver::SpecSupport::TestEnvironment.new
3131

32+
class SeleniumTestListener
33+
# formatter complains if there is a return in this method
34+
# rubocop:disable Style/GuardClause
35+
def example_finished(notification)
36+
if notification.exception
37+
if WebDriver.logger.debug?
38+
driver = GlobalTestEnv.driver_instance
39+
session_id = driver.instance_variable_get(:@bridge).session_id
40+
41+
FileUtils.mkdir_p('bazel-logs')
42+
driver.save_screenshot("bazel-logs/#{session_id}.png")
43+
WebDriver.logger.info("Page Source: #{driver.page_source}")
44+
end
45+
46+
GlobalTestEnv.reset_driver! unless notification.exception.is_a?(RSpec::Expectations::ExpectationNotMetError)
47+
end
48+
end
49+
# rubocop:enable Style/GuardClause
50+
end
51+
3252
RSpec.configure do |c|
3353
c.define_derived_metadata do |meta|
3454
meta[:aggregate_failures] = true
3555
end
3656

57+
c.reporter.register_listener(SeleniumTestListener.new, :example_finished)
58+
3759
c.include(WebDriver::SpecSupport::Helpers)
3860

3961
c.before(:suite) do
@@ -62,15 +84,6 @@
6284
results = guards.disposition
6385
send(*results) if results
6486
end
65-
66-
c.after do |example|
67-
if example.exception && WebDriver.logger.debug?
68-
driver.save_screenshot("bazel-logs/#{driver.session_id}.png")
69-
WebDriver.logger.info("Page Source: #{driver.page_source}")
70-
end
71-
72-
reset_driver! if example.exception || example.execution_result.pending_exception
73-
end
7487
end
7588

7689
WebDriver::Platform.exit_hook { GlobalTestEnv.quit }

0 commit comments

Comments
 (0)