Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(469)

Unified Diff: tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/telemetry/telemetry/page/page.py ('k') | tools/telemetry/telemetry/page/page_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
diff --git a/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py b/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
deleted file mode 100644
index eb3cd0b7924870aac39ef58d3921e1ea60d8e97a..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
+++ /dev/null
@@ -1,727 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import os
-import re
-import shutil
-import sys
-import StringIO
-import tempfile
-import unittest
-
-from telemetry import benchmark
-from telemetry import story
-from telemetry.core import exceptions
-from telemetry.core import util
-from telemetry import decorators
-from telemetry.internal.browser import browser_finder
-from telemetry.internal.browser import user_agent
-from telemetry.internal.results import results_options
-from telemetry.internal import story_runner
-from telemetry.internal.testing.page_sets import example_domain
-from telemetry.internal.util import exception_formatter
-from telemetry.page import page as page_module
-from telemetry.page import page_test
-from telemetry.page import shared_page_state
-from telemetry.util import image_util
-from telemetry.testing import fakes
-from telemetry.testing import options_for_unittests
-from telemetry.testing import system_stub
-
-
-SIMPLE_CREDENTIALS_STRING = """
-{
- "test": {
- "username": "example",
- "password": "asdf"
- }
-}
-"""
-
-
-class DummyTest(page_test.PageTest):
-
- def ValidateAndMeasurePage(self, *_):
- pass
-
-
-def SetUpStoryRunnerArguments(options):
- parser = options.CreateParser()
- story_runner.AddCommandLineArgs(parser)
- options.MergeDefaultValues(parser.get_default_values())
- story_runner.ProcessCommandLineArgs(parser, options)
-
-
-class EmptyMetadataForTest(benchmark.BenchmarkMetadata):
-
- def __init__(self):
- super(EmptyMetadataForTest, self).__init__('')
-
-
-class StubCredentialsBackend(object):
-
- def __init__(self, login_return_value):
- self.did_get_login = False
- self.did_get_login_no_longer_needed = False
- self.login_return_value = login_return_value
-
- @property
- def credentials_type(self):
- return 'test'
-
- def LoginNeeded(self, *_):
- self.did_get_login = True
- return self.login_return_value
-
- def LoginNoLongerNeeded(self, _):
- self.did_get_login_no_longer_needed = True
-
-
-def GetSuccessfulPageRuns(results):
- return [run for run in results.all_page_runs if run.ok or run.skipped]
-
-
-def CaptureStderr(func, output_buffer):
- def wrapper(*args, **kwargs):
- original_stderr, sys.stderr = sys.stderr, output_buffer
- try:
- return func(*args, **kwargs)
- finally:
- sys.stderr = original_stderr
- return wrapper
-
-
-# TODO: remove test cases that use real browsers and replace with a
-# story_runner or shared_page_state unittest that tests the same logic.
-class ActualPageRunEndToEndTests(unittest.TestCase):
- # TODO(nduca): Move the basic "test failed, test succeeded" tests from
- # page_test_unittest to here.
-
- def setUp(self):
- self._story_runner_logging_stub = None
- self._formatted_exception_buffer = StringIO.StringIO()
- self._original_formatter = exception_formatter.PrintFormattedException
-
- def tearDown(self):
- self.RestoreExceptionFormatter()
-
- def CaptureFormattedException(self):
- exception_formatter.PrintFormattedException = CaptureStderr(
- exception_formatter.PrintFormattedException,
- self._formatted_exception_buffer)
- self._story_runner_logging_stub = system_stub.Override(
- story_runner, ['logging'])
-
- @property
- def formatted_exception(self):
- return self._formatted_exception_buffer.getvalue()
-
- def RestoreExceptionFormatter(self):
- exception_formatter.PrintFormattedException = self._original_formatter
- if self._story_runner_logging_stub:
- self._story_runner_logging_stub.Restore()
- self._story_runner_logging_stub = None
-
- def assertFormattedExceptionIsEmpty(self):
- self.longMessage = False
- self.assertEquals(
- '', self.formatted_exception,
- msg='Expected empty formatted exception: actual=%s' % '\n > '.join(
- self.formatted_exception.split('\n')))
-
- def assertFormattedExceptionOnlyHas(self, expected_exception_name):
- self.longMessage = True
- actual_exception_names = re.findall(r'^Traceback.*?^(\w+)',
- self.formatted_exception,
- re.DOTALL | re.MULTILINE)
- self.assertEquals([expected_exception_name], actual_exception_names,
- msg='Full formatted exception: %s' % '\n > '.join(
- self.formatted_exception.split('\n')))
-
- def testRaiseBrowserGoneExceptionFromRestartBrowserBeforeEachPage(self):
- self.CaptureFormattedException()
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir()))
- story_set.AddStory(page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir()))
-
- class Test(page_test.PageTest):
-
- def __init__(self, *args):
- super(Test, self).__init__(
- *args, needs_browser_restart_after_each_page=True)
- self.run_count = 0
-
- def RestartBrowserBeforeEachPage(self):
- old_run_count = self.run_count
- self.run_count += 1
- if old_run_count == 0:
- raise exceptions.BrowserGoneException(None)
- return self._needs_browser_restart_after_each_page
-
- def ValidateAndMeasurePage(self, page, tab, results):
- pass
-
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- test = Test()
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
- self.assertEquals(2, test.run_count)
- self.assertEquals(1, len(GetSuccessfulPageRuns(results)))
- self.assertEquals(1, len(results.failures))
- self.assertFormattedExceptionIsEmpty()
-
- def testNeedsBrowserRestartAfterEachPage(self):
- self.CaptureFormattedException()
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir()))
- story_set.AddStory(page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir()))
-
- class Test(page_test.PageTest):
-
- def __init__(self, *args, **kwargs):
- super(Test, self).__init__(*args, **kwargs)
- self.browser_starts = 0
-
- def DidStartBrowser(self, *args):
- super(Test, self).DidStartBrowser(*args)
- self.browser_starts += 1
-
- def ValidateAndMeasurePage(self, page, tab, results):
- pass
-
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- test = Test(needs_browser_restart_after_each_page=True)
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
- self.assertEquals(2, len(GetSuccessfulPageRuns(results)))
- self.assertEquals(2, test.browser_starts)
- self.assertFormattedExceptionIsEmpty()
-
- def testCredentialsWhenLoginFails(self):
- self.CaptureFormattedException()
- credentials_backend = StubCredentialsBackend(login_return_value=False)
- did_run = self.runCredentialsTest(credentials_backend)
- assert credentials_backend.did_get_login
- assert not credentials_backend.did_get_login_no_longer_needed
- assert not did_run
- self.assertFormattedExceptionIsEmpty()
-
- def testCredentialsWhenLoginSucceeds(self):
- credentials_backend = StubCredentialsBackend(login_return_value=True)
- did_run = self.runCredentialsTest(credentials_backend)
- assert credentials_backend.did_get_login
- assert credentials_backend.did_get_login_no_longer_needed
- assert did_run
-
- def runCredentialsTest(self, credentials_backend):
- story_set = story.StorySet()
- did_run = [False]
-
- try:
- with tempfile.NamedTemporaryFile(delete=False) as f:
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir(),
- credentials_path=f.name)
- page.credentials = "test"
- story_set.AddStory(page)
-
- f.write(SIMPLE_CREDENTIALS_STRING)
-
- class TestThatInstallsCredentialsBackend(page_test.PageTest):
-
- def __init__(self, credentials_backend):
- super(TestThatInstallsCredentialsBackend, self).__init__()
- self._credentials_backend = credentials_backend
-
- def DidStartBrowser(self, browser):
- browser.credentials.AddBackend(self._credentials_backend)
-
- def ValidateAndMeasurePage(self, *_):
- did_run[0] = True
-
- test = TestThatInstallsCredentialsBackend(credentials_backend)
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
- finally:
- os.remove(f.name)
-
- return did_run[0]
-
- @decorators.Disabled('chromeos') # crbug.com/483212
- def testUserAgent(self):
- story_set = story.StorySet()
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir(),
- shared_page_state_class=shared_page_state.SharedTabletPageState)
- story_set.AddStory(page)
-
- class TestUserAgent(page_test.PageTest):
- def ValidateAndMeasurePage(self, page, tab, results):
- del page, results # unused
- actual_user_agent = tab.EvaluateJavaScript('window.navigator.userAgent')
- expected_user_agent = user_agent.UA_TYPE_MAPPING['tablet']
- assert actual_user_agent.strip() == expected_user_agent
-
- # This is so we can check later that the test actually made it into this
- # function. Previously it was timing out before even getting here, which
- # should fail, but since it skipped all the asserts, it slipped by.
- self.hasRun = True # pylint: disable=attribute-defined-outside-init
-
- test = TestUserAgent()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
-
- self.assertTrue(hasattr(test, 'hasRun') and test.hasRun)
-
- # Ensure that story_runner forces exactly 1 tab before running a page.
- @decorators.Enabled('has tabs')
- def testOneTab(self):
- story_set = story.StorySet()
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir())
- story_set.AddStory(page)
-
- class TestOneTab(page_test.PageTest):
-
- def DidStartBrowser(self, browser):
- browser.tabs.New()
-
- def ValidateAndMeasurePage(self, page, tab, results):
- del page, results # unused
- assert len(tab.browser.tabs) == 1
-
- test = TestOneTab()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
-
- # Ensure that story_runner allows >1 tab for multi-tab test.
- @decorators.Enabled('has tabs')
- def testMultipleTabsOkayForMultiTabTest(self):
- story_set = story.StorySet()
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir())
- story_set.AddStory(page)
-
- class TestMultiTabs(page_test.PageTest):
- def TabForPage(self, page, browser):
- del page # unused
- return browser.tabs.New()
-
- def ValidateAndMeasurePage(self, page, tab, results):
- del page, results # unused
- assert len(tab.browser.tabs) == 2
-
- test = TestMultiTabs()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
-
- # Ensure that story_runner allows the test to customize the browser
- # before it launches.
- def testBrowserBeforeLaunch(self):
- story_set = story.StorySet()
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir())
- story_set.AddStory(page)
-
- class TestBeforeLaunch(page_test.PageTest):
-
- def __init__(self):
- super(TestBeforeLaunch, self).__init__()
- self._did_call_will_start = False
- self._did_call_did_start = False
-
- def WillStartBrowser(self, platform):
- self._did_call_will_start = True
- # TODO(simonjam): Test that the profile is available.
-
- def DidStartBrowser(self, browser):
- assert self._did_call_will_start
- self._did_call_did_start = True
-
- def ValidateAndMeasurePage(self, *_):
- assert self._did_call_did_start
-
- test = TestBeforeLaunch()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
-
- def testRunPageWithStartupUrl(self):
- num_times_browser_closed = [0]
-
- class TestSharedState(shared_page_state.SharedPageState):
-
- def _StopBrowser(self):
- super(TestSharedState, self)._StopBrowser()
- num_times_browser_closed[0] += 1
- story_set = story.StorySet()
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir(),
- startup_url='about:blank', shared_page_state_class=TestSharedState)
- story_set.AddStory(page)
-
- class Measurement(page_test.PageTest):
-
- def __init__(self):
- super(Measurement, self).__init__()
-
- def ValidateAndMeasurePage(self, page, tab, results):
- del page, tab, results # not used
-
- options = options_for_unittests.GetCopy()
- options.page_repeat = 2
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- if not browser_finder.FindBrowser(options):
- return
- test = Measurement()
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
- self.assertEquals('about:blank', options.browser_options.startup_url)
- # _StopBrowser should be called 3 times: after browser restarts, after page
- # 2 has run and in the TearDownState after all the pages have run.
- self.assertEquals(num_times_browser_closed[0], 3)
-
- # Ensure that story_runner calls cleanUp when a page run fails.
- def testCleanUpPage(self):
- story_set = story.StorySet()
- page = page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir())
- story_set.AddStory(page)
-
- class Test(page_test.PageTest):
-
- def __init__(self):
- super(Test, self).__init__()
- self.did_call_clean_up = False
-
- def ValidateAndMeasurePage(self, *_):
- raise page_test.Failure
-
- def DidRunPage(self, platform):
- del platform # unused
- self.did_call_clean_up = True
-
- test = Test()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
- assert test.did_call_clean_up
-
- # Ensure skipping the test if shared state cannot be run on the browser.
- def testSharedPageStateCannotRunOnBrowser(self):
- story_set = story.StorySet()
-
- class UnrunnableSharedState(shared_page_state.SharedPageState):
- def CanRunOnBrowser(self, browser_info, page):
- del browser_info, page # unused
- return False
-
- def ValidateAndMeasurePage(self, _):
- pass
-
- story_set.AddStory(page_module.Page(
- url='file://blank.html', page_set=story_set,
- base_dir=util.GetUnittestDataDir(),
- shared_page_state_class=UnrunnableSharedState))
-
- class Test(page_test.PageTest):
-
- def __init__(self, *args, **kwargs):
- super(Test, self).__init__(*args, **kwargs)
- self.will_navigate_to_page_called = False
-
- def ValidateAndMeasurePage(self, *args):
- del args # unused
- raise Exception('Exception should not be thrown')
-
- def WillNavigateToPage(self, page, tab):
- del page, tab # unused
- self.will_navigate_to_page_called = True
-
- test = Test()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results)
- self.assertFalse(test.will_navigate_to_page_called)
- self.assertEquals(1, len(GetSuccessfulPageRuns(results)))
- self.assertEquals(1, len(results.skipped_values))
- self.assertEquals(0, len(results.failures))
-
- def testRunPageWithProfilingFlag(self):
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page(
- 'file://blank.html', story_set, base_dir=util.GetUnittestDataDir()))
-
- class Measurement(page_test.PageTest):
-
- def ValidateAndMeasurePage(self, page, tab, results):
- pass
-
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- options.reset_results = None
- options.upload_results = None
- options.results_label = None
- options.output_dir = tempfile.mkdtemp()
- options.profiler = 'trace'
- try:
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(Measurement(), story_set, options, results)
- self.assertEquals(1, len(GetSuccessfulPageRuns(results)))
- self.assertEquals(0, len(results.failures))
- self.assertEquals(0, len(results.all_page_specific_values))
- self.assertTrue(os.path.isfile(
- os.path.join(options.output_dir, 'blank_html.zip')))
- finally:
- shutil.rmtree(options.output_dir)
-
- def _RunPageTestThatRaisesAppCrashException(self, test, max_failures):
- class TestPage(page_module.Page):
-
- def RunNavigateSteps(self, _):
- raise exceptions.AppCrashException
-
- story_set = story.StorySet()
- for _ in range(5):
- story_set.AddStory(
- TestPage('file://blank.html', story_set,
- base_dir=util.GetUnittestDataDir()))
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(test, story_set, options, results,
- max_failures=max_failures)
- return results
-
- def testSingleTabMeansCrashWillCauseFailureValue(self):
- self.CaptureFormattedException()
-
- class SingleTabTest(page_test.PageTest):
- # Test is not multi-tab because it does not override TabForPage.
-
- def ValidateAndMeasurePage(self, *_):
- pass
-
- test = SingleTabTest()
- results = self._RunPageTestThatRaisesAppCrashException(
- test, max_failures=1)
- self.assertEquals([], GetSuccessfulPageRuns(results))
- self.assertEquals(2, len(results.failures)) # max_failures + 1
- self.assertFormattedExceptionIsEmpty()
-
- @decorators.Enabled('has tabs')
- def testMultipleTabsMeansCrashRaises(self):
- self.CaptureFormattedException()
-
- class MultipleTabsTest(page_test.PageTest):
- # Test *is* multi-tab because it overrides TabForPage.
-
- def TabForPage(self, page, browser):
- return browser.tabs.New()
-
- def ValidateAndMeasurePage(self, *_):
- pass
-
- test = MultipleTabsTest()
- with self.assertRaises(page_test.MultiTabTestAppCrashError):
- self._RunPageTestThatRaisesAppCrashException(test, max_failures=1)
- self.assertFormattedExceptionOnlyHas('AppCrashException')
-
- def testWebPageReplay(self):
- story_set = example_domain.ExampleDomainPageSet()
- body = []
-
- class TestWpr(page_test.PageTest):
- def ValidateAndMeasurePage(self, page, tab, results):
- del page, results # unused
- body.append(tab.EvaluateJavaScript('document.body.innerText'))
- test = TestWpr()
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
-
- story_runner.Run(test, story_set, options, results)
-
- self.longMessage = True
- self.assertIn('Example Domain', body[0],
- msg='URL: %s' % story_set.stories[0].url)
- self.assertIn('Example Domain', body[1],
- msg='URL: %s' % story_set.stories[1].url)
-
- self.assertEquals(2, len(GetSuccessfulPageRuns(results)))
- self.assertEquals(0, len(results.failures))
-
- def testScreenShotTakenForFailedPage(self):
- self.CaptureFormattedException()
- platform_screenshot_supported = [False]
- tab_screenshot_supported = [False]
- chrome_version_screen_shot = [None]
-
- class FailingTestPage(page_module.Page):
-
- def RunNavigateSteps(self, action_runner):
- action_runner.Navigate(self._url)
- platform_screenshot_supported[0] = (
- action_runner.tab.browser.platform.CanTakeScreenshot)
- tab_screenshot_supported[0] = action_runner.tab.screenshot_supported
- if not platform_screenshot_supported[0] and tab_screenshot_supported[0]:
- chrome_version_screen_shot[0] = action_runner.tab.Screenshot()
- raise exceptions.AppCrashException
-
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page('file://blank.html', story_set))
- failing_page = FailingTestPage('chrome://version', story_set)
- story_set.AddStory(failing_page)
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.browser_options.take_screenshot_for_failed_page = True
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(DummyTest(), story_set, options, results,
- max_failures=2)
- self.assertEquals(1, len(results.failures))
- if not platform_screenshot_supported[0] and tab_screenshot_supported[0]:
- self.assertEquals(1, len(results.pages_to_profiling_files))
- self.assertIn(failing_page,
- results.pages_to_profiling_files)
- screenshot_file_path = (
- results.pages_to_profiling_files[failing_page][0].GetAbsPath())
- try:
- actual_screenshot = image_util.FromPngFile(screenshot_file_path)
- self.assertEquals(image_util.Pixels(chrome_version_screen_shot[0]),
- image_util.Pixels(actual_screenshot))
- finally: # Must clean up screenshot file if exists.
- os.remove(screenshot_file_path)
-
- def testNoProfilingFilesCreatedForPageByDefault(self):
- self.CaptureFormattedException()
-
- class FailingTestPage(page_module.Page):
-
- def RunNavigateSteps(self, action_runner):
- action_runner.Navigate(self._url)
- raise exceptions.AppCrashException
-
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page('file://blank.html', story_set))
- failing_page = FailingTestPage('chrome://version', story_set)
- story_set.AddStory(failing_page)
- options = options_for_unittests.GetCopy()
- options.output_formats = ['none']
- options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(options)
- results = results_options.CreateResults(EmptyMetadataForTest(), options)
- story_runner.Run(DummyTest(), story_set, options, results,
- max_failures=2)
- self.assertEquals(1, len(results.failures))
- self.assertEquals(0, len(results.pages_to_profiling_files))
-
-
-class FakePageRunEndToEndTests(unittest.TestCase):
-
- def setUp(self):
- self.options = fakes.CreateBrowserFinderOptions()
- self.options.output_formats = ['none']
- self.options.suppress_gtest_report = True
- SetUpStoryRunnerArguments(self.options)
-
- def testNoScreenShotTakenForFailedPageDueToNoSupport(self):
- self.options.browser_options.take_screenshot_for_failed_page = True
-
- class FailingTestPage(page_module.Page):
-
- def RunNavigateSteps(self, action_runner):
- raise exceptions.AppCrashException
-
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page('file://blank.html', story_set))
- failing_page = FailingTestPage('chrome://version', story_set)
- story_set.AddStory(failing_page)
- results = results_options.CreateResults(
- EmptyMetadataForTest(), self.options)
- story_runner.Run(DummyTest(), story_set, self.options, results,
- max_failures=2)
- self.assertEquals(1, len(results.failures))
- self.assertEquals(0, len(results.pages_to_profiling_files))
-
- def testScreenShotTakenForFailedPageOnSupportedPlatform(self):
- fake_platform = self.options.fake_possible_browser.returned_browser.platform
- expected_png_base64 = """
- iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91
- JpzAAAAFklEQVR4Xg3EAQ0AAABAMP1LY3YI7l8l6A
- T8tgwbJAAAAABJRU5ErkJggg==
-"""
- fake_platform.screenshot_png_data = expected_png_base64
- self.options.browser_options.take_screenshot_for_failed_page = True
-
- class FailingTestPage(page_module.Page):
-
- def RunNavigateSteps(self, action_runner):
- raise exceptions.AppCrashException
- story_set = story.StorySet()
- story_set.AddStory(page_module.Page('file://blank.html', story_set))
- failing_page = FailingTestPage('chrome://version', story_set)
- story_set.AddStory(failing_page)
-
- results = results_options.CreateResults(
- EmptyMetadataForTest(), self.options)
- story_runner.Run(DummyTest(), story_set, self.options, results,
- max_failures=2)
- self.assertEquals(1, len(results.failures))
- self.assertEquals(1, len(results.pages_to_profiling_files))
- self.assertIn(failing_page,
- results.pages_to_profiling_files)
- screenshot_file_path = (
- results.pages_to_profiling_files[failing_page][0].GetAbsPath())
- try:
- actual_screenshot_img = image_util.FromPngFile(screenshot_file_path)
- self.assertTrue(image_util.AreEqual(
- image_util.FromBase64Png(expected_png_base64),
- actual_screenshot_img))
- finally: # Must clean up screenshot file if exists.
- os.remove(screenshot_file_path)
« no previous file with comments | « tools/telemetry/telemetry/page/page.py ('k') | tools/telemetry/telemetry/page/page_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698