tab_test_case.py revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1# Copyright (c) 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
5import os
6import unittest
7
8from telemetry.core import browser_finder
9from telemetry.core import util
10from telemetry.unittest import options_for_unittests
11
12
13class TabTestCase(unittest.TestCase):
14  def __init__(self, *args):
15    self._extra_browser_args = []
16    self.test_file_path = None
17    super(TabTestCase, self).__init__(*args)
18
19  def setUp(self):
20    self._browser = None
21    self._tab = None
22    options = options_for_unittests.GetCopy()
23
24    self.CustomizeBrowserOptions(options)
25
26    if self._extra_browser_args:
27      options.AppendExtraBrowserArgs(self._extra_browser_args)
28
29    browser_to_create = browser_finder.FindBrowser(options)
30    if not browser_to_create:
31      raise Exception('No browser found, cannot continue test.')
32    try:
33      self._browser = browser_to_create.Create()
34      self._browser.Start()
35      self._tab = self._browser.tabs[0]
36      self._tab.Navigate('about:blank')
37      self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
38
39    except:
40      self.tearDown()
41      raise
42
43  def tearDown(self):
44    if self._browser:
45      self._browser.Close()
46
47  def CustomizeBrowserOptions(self, options):
48    """Override to add test-specific options to the BrowserOptions object"""
49    pass
50
51  def Navigate(self, filename, script_to_evaluate_on_commit=None):
52    """Navigates |tab| to |filename| in the unittest data directory.
53
54    Also sets up http server to point to the unittest data directory.
55    """
56    self._browser.SetHTTPServerDirectories(util.GetUnittestDataDir())
57    self.test_file_path = os.path.join(util.GetUnittestDataDir(), filename)
58    self._tab.Navigate(self._browser.http_server.UrlOf(self.test_file_path),
59                       script_to_evaluate_on_commit)
60    self._tab.WaitForDocumentReadyStateToBeComplete()
61