Index: telemetry/telemetry/page/shared_page_state.py |
diff --git a/telemetry/telemetry/page/shared_page_state.py b/telemetry/telemetry/page/shared_page_state.py |
index 70fead41a51e0fd2a12c9a73e525576480751d45..52c6d4ba3624c37ce0aa51beed2e8dc08df86d74 100644 |
--- a/telemetry/telemetry/page/shared_page_state.py |
+++ b/telemetry/telemetry/page/shared_page_state.py |
@@ -130,6 +130,19 @@ class SharedPageState(story.SharedState): |
sys.exit(0) |
return possible_browser |
+ def DumpStateUponFailure(self, page, results): |
+ # Dump browser standard output and log. |
+ if self._browser: |
+ self._browser.DumpStateUponFailure() |
+ else: |
+ logging.warning('Cannot dump browser state: No browser.') |
+ |
+ # Capture a screenshot |
+ if self._finder_options.browser_options.take_screenshot_for_failed_page: |
+ self._TryCaptureScreenShot(page, self._current_tab, results) |
+ else: |
+ logging.warning('Taking screenshots upon failures disabled.') |
+ |
def _TryCaptureScreenShot(self, page, tab, results): |
try: |
# TODO(nednguyen): once all platforms support taking screenshot, |
@@ -307,20 +320,12 @@ class SharedPageState(story.SharedState): |
self._test.ValidateAndMeasurePage( |
self._current_page, self._current_tab, results) |
except exceptions.Error: |
- if self._finder_options.browser_options.take_screenshot_for_failed_page: |
- self._TryCaptureScreenShot(self._current_page, self._current_tab, |
- results) |
if self._test.is_multi_tab_test: |
# Avoid trying to recover from an unknown multi-tab state. |
exception_formatter.PrintFormattedException( |
msg='Telemetry Error during multi tab test:') |
raise legacy_page_test.MultiTabTestAppCrashError |
raise |
- except Exception: |
- if self._finder_options.browser_options.take_screenshot_for_failed_page: |
- self._TryCaptureScreenShot(self._current_page, self._current_tab, |
- results) |
- raise |
def TearDownState(self): |
self._StopBrowser() |