| # Copyright (c) 2014 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 |
| |
| from autotest_lib.client.bin import utils |
| from autotest_lib.client.common_lib.cros import chrome |
| from autotest_lib.client.cros.cellular import test_environment |
| from autotest_lib.client.cros.ui import ui_test_base |
| from autotest_lib.client.common_lib import error |
| from telemetry.util import image_util |
| |
| class ui_SettingsPage(ui_test_base.ui_TestBase): |
| """ |
| Collects screenshots of the settings page. |
| See comments on parent class for overview of how things flow. |
| |
| """ |
| |
| def capture_screenshot(self, filepath): |
| """ |
| Takes a screenshot of the settings page. |
| |
| A mask is then drawn over the profile picture. This test runs only |
| on link at the moment so the dimensions provided are link specific. |
| |
| Implements the abstract method capture_screenshot. |
| |
| @param filepath: string, complete path to save screenshot to. |
| |
| """ |
| with chrome.Chrome() as cr: |
| tab = cr.browser.tabs[0] |
| tab.Navigate('chrome://settings') |
| tab.WaitForDocumentReadyStateToBeComplete() |
| |
| if not tab.screenshot_supported: |
| raise error.TestError('Tab did not support taking screenshots') |
| |
| screenshot = tab.Screenshot() |
| if screenshot is None: |
| raise error.TestFailure('Could not capture screenshot') |
| |
| image_util.WritePngFile(screenshot, filepath) |
| |
| def run_once(self, mask_points): |
| # Emulate a modem on the device. |
| test_env = test_environment.CellularPseudoMMTestEnvironment( |
| pseudomm_args=({'family': '3GPP'},), |
| use_backchannel=False, |
| shutdown_other_devices=False) |
| |
| with test_env: |
| self.mask_points = mask_points |
| |
| # Check if we should find mobile data in settings |
| # This should always return true now, since the modem is software |
| # emulated. |
| modem_status = utils.system_output('modem status') |
| if modem_status: |
| logging.info('Modem found') |
| logging.info(modem_status) |
| self.tagged_testname += '.mobile' |
| else: |
| logging.info('Modem not found') |
| self.run_screenshot_comparison_test() |