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