def SetBrowserOptions(cls, browser_options): """Sets the browser option for the browser to create. Args: browser_options: Browser options object for the browser we want to test. """ cls._browser_options = browser_options cls._cast_receiver_to_create = browser_finder.FindBrowser(browser_options) cls._browser_to_create = browser_finder.FindBrowser(browser_options) cast_devices = cast_device.FindAllAvailableDevices(browser_options) cast_browsers = [] for device in cast_devices: cast_browsers.extend( cast_browser_finder.FindAllAvailableBrowsers( browser_options, device)) cls._cast_receiver_to_create = \ cast_browser_finder.SelectDefaultBrowser(cast_browsers) if not cls._browser_to_create: raise browser_finder_exceptions.BrowserFinderException( 'Cannot find browser of type %s. \n\nAvailable browsers:\n%s\n' % ( browser_options.browser_options.browser_type, '\n'.join(browser_finder.GetAllAvailableBrowserTypes( browser_options)))) if not cls.platform: cls.platform = cls._browser_to_create.platform assert cls.platform == cls._browser_to_create.platform, ( 'All browser launches within same test suite must use browsers on ' 'the same platform')
def _FindBrowser(self, finder_options): possible_browser = browser_finder.FindBrowser(finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'No browser found.\n\nAvailable browsers:\n%s\n' % '\n'.join(browser_finder.GetAllAvailableBrowserTypes(finder_options))) return possible_browser
def SetBrowserOptions(cls, browser_options): """Sets the browser option for the browser to create. Args: browser_options: Browser options object for the browser we want to test. """ cls._browser_options = browser_options cls._browser_to_create = browser_finder.FindBrowser(browser_options) if not cls._browser_to_create: raise browser_finder_exceptions.BrowserFinderException( 'Cannot find browser of type %s. \n\nAvailable browsers:\n%s\n' % (browser_options.browser_options.browser_type, '\n'.join( browser_finder.GetAllAvailableBrowserTypes( browser_options)))) if cls._typ_runner.has_expectations: cls._typ_runner.expectations.add_tags( cls._browser_to_create.GetTypExpectationsTags()) if not cls.platform: cls.platform = cls._browser_to_create.platform cls.platform.SetFullPerformanceModeEnabled( browser_options.full_performance_mode) cls.platform.network_controller.Open( browser_options.browser_options.wpr_mode) else: assert cls.platform == cls._browser_to_create.platform, ( 'All browser launches within same test suite must use browsers on ' 'the same platform')
def _FindBrowser(self, finder_options): possible_browser = browser_finder.FindBrowser(finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'Cannot find browser of type %s. \n\nAvailable browsers:\n%s\n' % (finder_options.browser_options.browser_type, '\n'.join( browser_finder.GetAllAvailableBrowserTypes(finder_options)) )) return possible_browser
def __init__(self, test, finder_options, story_set, possible_browser=None): """A shared state to run a test involving multiple browsers. The story_set is expected to include SinglePage instances (class defined below) mapping each page to a browser on which to run. The state requires at least one page to run on the 'default' browser, i.e. the browser selected from the command line by the user. """ super(MultiBrowserSharedState, self).__init__(test, finder_options, story_set, possible_browser) self._platform = None self._story_set = story_set self._possible_browsers = {} # We use an ordered dict to record the order in which browsers appear on # the story set. However, browsers are not created yet. self._browsers_created = False self._browsers = collections.OrderedDict( (s.browser_type, None) for s in story_set) self._current_story = None self._current_browser = None self._current_tab = None # TODO(khokhlov): Use the supplied possible_browser as the default. possible_browser = self._PrepareBrowser('default', finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'No browser found.\n\nAvailable browsers:\n%s\n' % '\n'.join( browser_finder.GetAllAvailableBrowserTypes(finder_options)) ) extra_browser_types = set(story.browser_type for story in story_set) extra_browser_types.remove( 'default') # Must include 'default' browser. for browser_type in extra_browser_types: finder_options_copy = _OptionsForBrowser(browser_type, finder_options) if not self._PrepareBrowser(browser_type, finder_options_copy): logging.warning( 'Cannot run %s (%s) because %s browser is not available', test.__name__, str(test), browser_type) logging.warning('Install %s to be able to run the test.', browser_type) raise Exception( "Browser not available, unable to run benchmark.") # TODO(crbug/404771): Move network controller options out of # browser_options and into finder_options. browser_options = finder_options.browser_options if finder_options.use_live_sites: wpr_mode = wpr_modes.WPR_OFF elif browser_options.wpr_mode == wpr_modes.WPR_RECORD: wpr_mode = wpr_modes.WPR_RECORD else: wpr_mode = wpr_modes.WPR_REPLAY self._extra_wpr_args = browser_options.extra_wpr_args self.platform.network_controller.Open(wpr_mode)
def _GetPossibleBrowser(self, finder_options): """Return a possible_browser with the given options.""" possible_browser = browser_finder.FindBrowser(finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'No browser found.\n\nAvailable browsers:\n%s\n' % '\n'.join(browser_finder.GetAllAvailableBrowserTypes(finder_options))) finder_options.browser_options.browser_type = ( possible_browser.browser_type) return possible_browser
def _GetPossibleBrowser(finder_options): """Return a possible_browser with the given options.""" possible_browser = browser_finder.FindBrowser(finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'Cannot find browser of type %s. \n\nAvailable browsers:\n%s\n' % (finder_options.browser_options.browser_type, '\n'.join( browser_finder.GetAllAvailableBrowserTypes(finder_options)))) finder_options.browser_options.browser_type = possible_browser.browser_type return possible_browser
def __init__(self, test, finder_options, story_set): """A shared state to run a test involving multiple browsers. The story_set is expected to include SinglePage instances (class defined below) mapping each page to a browser on which to run. The state requires at least one page to run on the 'default' browser, i.e. the browser selected from the command line by the user. """ super(MultiBrowserSharedState, self).__init__( test, finder_options, story_set) self._platform = None self._story_set = story_set self._possible_browsers = {} # We use an ordered dict to request memory dumps in a deterministic order. self._browsers = collections.OrderedDict() self._current_story = None self._current_browser = None self._current_tab = None possible_browser = self._PrepareBrowser('default', finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'No browser found.\n\nAvailable browsers:\n%s\n' % '\n'.join(browser_finder.GetAllAvailableBrowserTypes(finder_options))) if not finder_options.run_disabled_tests: self._CheckTestEnabled(test, possible_browser) extra_browser_types = set(story.browser_type for story in story_set) extra_browser_types.remove('default') # Must include 'default' browser. for browser_type in extra_browser_types: options = _OptionsForBrowser(browser_type, finder_options) if not self._PrepareBrowser(browser_type, options): logging.warning('Skipping %s (%s) because %s browser is not available', test.__name__, str(test), browser_type) logging.warning('Install %s to be able to run the test.', browser_type) sys.exit(0) # TODO(crbug/404771): Move network controller options out of # browser_options and into finder_options. browser_options = finder_options.browser_options if finder_options.use_live_sites: wpr_mode = wpr_modes.WPR_OFF elif browser_options.wpr_mode == wpr_modes.WPR_RECORD: wpr_mode = wpr_modes.WPR_RECORD else: wpr_mode = wpr_modes.WPR_REPLAY self.platform.network_controller.Open(wpr_mode, browser_options.extra_wpr_args)
def _GetPossibleBrowser(self): """Return a possible_browser with the given options.""" possible_browser = browser_finder.FindBrowser(self._finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'Cannot find browser of type %s. \n\nAvailable browsers:\n%s\n' % ( self._finder_options.browser_options.browser_type, '\n'.join(browser_finder.GetAllAvailableBrowserTypes( self._finder_options)))) self._finder_options.browser_options.browser_type = ( possible_browser.browser_type) if self._page_test: # Check for Enabled/Disabled decorators on page_test. skip, msg = decorators.ShouldSkip(self._page_test, possible_browser) if skip and not self._finder_options.run_disabled_tests: logging.warning(msg) logging.warning('You are trying to run a disabled test.') return possible_browser
def _GetPossibleBrowser(self, test, finder_options): """Return a possible_browser with the given options. """ possible_browser = browser_finder.FindBrowser(finder_options) if not possible_browser: raise browser_finder_exceptions.BrowserFinderException( 'No browser found.\n\nAvailable browsers:\n%s\n' % '\n'.join( browser_finder.GetAllAvailableBrowserTypes(finder_options)) ) finder_options.browser_options.browser_type = ( possible_browser.browser_type) (enabled, msg) = decorators.IsEnabled(test, possible_browser) if (not enabled and not finder_options.run_disabled_tests): logging.warning(msg) logging.warning('You are trying to run a disabled test.') logging.warning( 'Pass --also-run-disabled-tests to squelch this message.') sys.exit(0) if possible_browser.IsRemote(): possible_browser.RunRemote() sys.exit(0) return possible_browser
def SetBrowserOptions(cls, browser_options): """Sets the browser option for the browser to create. Args: browser_options: Browser options object for the browser we want to test. """ cls._browser_options = browser_options cls._browser_to_create = browser_finder.FindBrowser(browser_options) if not cls._browser_to_create: raise browser_finder_exceptions.BrowserFinderException( 'Cannot find browser of type %s. \n\nAvailable browsers:\n%s\n' % (browser_options.browser_options.browser_type, '\n'.join( browser_finder.GetAllAvailableBrowserTypes( browser_options)))) if not cls.platform: cls.platform = cls._browser_to_create.platform cls.platform.SetPerformanceMode( android_device.HIGH_PERFORMANCE_MODE) cls.platform.network_controller.Open( browser_options.browser_options.wpr_mode) else: assert cls.platform == cls._browser_to_create.platform, ( 'All browser launches within same test suite must use browsers on ' 'the same platform')