blob: 4d4ec514766e4d9b1c014f6dca592340010efff1 [file] [log] [blame]
# 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 unittest
from telemetry.internal.browser import browser_finder
from telemetry.internal.util import path
from telemetry.testing import options_for_unittests
current_browser_options = None
current_browser = None
def teardown_browser():
global current_browser
global current_browser_options
if current_browser:
current_browser.Close()
current_browser = None
current_browser_options = None
class BrowserTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
global current_browser
global current_browser_options
options = options_for_unittests.GetCopy()
cls.CustomizeBrowserOptions(options.browser_options)
if not current_browser or (current_browser_options !=
options.browser_options):
if current_browser:
teardown_browser()
browser_to_create = browser_finder.FindBrowser(options)
if not browser_to_create:
raise Exception('No browser found, cannot continue test.')
try:
current_browser = browser_to_create.Create(options)
current_browser_options = options.browser_options
except:
cls.tearDownClass()
raise
cls._browser = current_browser
cls._device = options.device
@classmethod
def tearDownClass(cls):
pass
@classmethod
def CustomizeBrowserOptions(cls, options):
"""Override to add test-specific options to the BrowserOptions object"""
pass
@classmethod
def UrlOfUnittestFile(cls, filename):
cls._browser.SetHTTPServerDirectories(path.GetUnittestDataDir())
file_path = os.path.join(path.GetUnittestDataDir(), filename)
return cls._browser.http_server.UrlOf(file_path)