Upstream version 8.37.180.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / unittest / tab_test_case.py
1 # Copyright 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import os
6 import unittest
7
8 from telemetry.core import browser_finder
9 from telemetry.core import util
10 from telemetry.unittest import options_for_unittests
11
12
13 class TabTestCase(unittest.TestCase):
14   def __init__(self, *args):
15     self._extra_browser_args = []
16     self.test_file_path = None
17     self.test_url = None
18     super(TabTestCase, self).__init__(*args)
19
20   def setUp(self):
21     self._browser = None
22     self._tab = None
23     options = options_for_unittests.GetCopy()
24
25     self.CustomizeBrowserOptions(options.browser_options)
26
27     if self._extra_browser_args:
28       options.AppendExtraBrowserArgs(self._extra_browser_args)
29
30     browser_to_create = browser_finder.FindBrowser(options)
31     if not browser_to_create:
32       raise Exception('No browser found, cannot continue test.')
33     try:
34       self._browser = browser_to_create.Create()
35       self._browser.Start()
36       self._tab = self._browser.tabs[0]
37       self._tab.Navigate('about:blank')
38       self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
39
40     except:
41       self.tearDown()
42       raise
43
44   def tearDown(self):
45     if self._browser:
46       self._browser.Close()
47
48   def CustomizeBrowserOptions(self, options):
49     """Override to add test-specific options to the BrowserOptions object"""
50     pass
51
52   def Navigate(self, filename, script_to_evaluate_on_commit=None):
53     """Navigates |tab| to |filename| in the unittest data directory.
54
55     Also sets up http server to point to the unittest data directory.
56     """
57     self._browser.SetHTTPServerDirectories(util.GetUnittestDataDir())
58     self.test_file_path = os.path.join(util.GetUnittestDataDir(), filename)
59     self.test_url = self._browser.http_server.UrlOf(self.test_file_path)
60     self._tab.Navigate(self.test_url, script_to_evaluate_on_commit)
61     self._tab.WaitForDocumentReadyStateToBeComplete()