| # Copyright 2016 The Chromium OS 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 logging |
| import os |
| |
| from autotest_lib.client.bin import test, utils |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.common_lib.cros import chrome |
| from autotest_lib.client.cros.graphics import gbm |
| |
| |
| class desktopui_MashLogin(test.test): |
| """Verifies chrome --mash starts up and logs in correctly.""" |
| version = 1 |
| |
| |
| def __screen_visual_sanity_test(self): |
| """Capture the screen and sanity check it (more than 5 colors).""" |
| try: |
| image = gbm.crtcScreenshot() |
| except Exception as e: |
| logging.warning('Unable to capture screenshot. %s', e) |
| return |
| |
| # If colors in |image| is less than _MAX_COLORS, PIL.Image.getcolors |
| # returns a list of colors. If colors is more than _MAX_COLORS, it |
| # returns None. Expect None because the login screen should contain |
| # more than _MAX_COLORS. |
| _MAX_COLORS = 5 |
| if image.getcolors(maxcolors=_MAX_COLORS) is not None: |
| image.save(os.path.join(self.resultsdir, |
| 'bad_mash_login_screenshot.png')) |
| raise error.TestFail('Mash login screen does not look right.') |
| |
| |
| def run_once(self): |
| """Entry point of this test.""" |
| |
| # Flaky on nyan_* boards. http://crbug.com/717275 |
| boards_to_skip = ['nyan_big', 'nyan_kitty', 'nyan_blaze'] |
| if utils.get_current_board() in boards_to_skip: |
| logging.warning('Skipping test run on this board.') |
| return |
| |
| # GPU info collection via devtools SystemInfo.getInfo does not work |
| # under mash due to differences in how the GPU process is configured |
| # with mus hosting viz. http://crbug.com/669965 |
| mash_browser_args = ['--enable-features=Mash', |
| '--gpu-no-complete-info-collection'] |
| |
| logging.info('Testing Chrome with Mash startup.') |
| with chrome.Chrome(auto_login=False, extra_browser_args=mash_browser_args): |
| logging.info('Chrome with Mash started and loaded OOBE.') |
| self.__screen_visual_sanity_test() |
| |
| logging.info('Testing Chrome with Mash login.') |
| with chrome.Chrome(extra_browser_args=mash_browser_args): |
| logging.info('Chrome login with Mash succeeded.') |