Exemple #1
0
  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
Exemple #5
0
    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
Exemple #7
0
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)
Exemple #9
0
  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
Exemple #10
0
    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')