blob: d4b39c4c82c948e43248c074c6358c318543a1c6 [file] [log] [blame]
# Lint as: python2, python3
# Copyright 2021 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
import time
from autotest_lib.client.bin import test
from autotest_lib.client.bin import utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib import ui_utils
from autotest_lib.client.common_lib.cros import chrome
class desktopui_RootfsLacros(test.test):
"""Tests logging in, opening lacros, and verifying the version number."""
version = 1
def is_lacros_running(self):
""" Return True if lacros is running. """
process = utils.run('pgrep -f /run/lacros/chrome',
ignore_status=True).stdout
return len(process) > 0
def run_once(self, dont_override_profile=False):
"""Check rootfs-lacros opens and its version number."""
# Use args to keep test as hermetic as possible.
# See crbug.com/1268252 and crbug.com/1268743 for details.
browser_args = [
'--lacros-selection=rootfs', '--enable-features=LacrosSupport',
'--enable-features=LacrosPrimary',
'--disable-lacros-keep-alive', '--disable-login-lacros-opening'
]
with chrome.Chrome(autotest_ext=True,
dont_override_profile=dont_override_profile,
extra_browser_args=browser_args) as cr:
# Use chrome.automation API to drive UI.
self.ui = ui_utils.UI_Handler()
self.ui.start_ui_root(cr)
# Click the shelf button for lacors.
self.ui.wait_for_ui_obj('Lacros', role='button')
self.ui.doDefault_on_obj('Lacros', role='button')
# Check that lacros process is running.
try:
utils.poll_for_condition(condition=self.is_lacros_running)
except utils.TimeoutError:
raise error.TestFail(
'No Lacros processes running after clicking shelf icon'
)
# Get lacros version
res = utils.run('/run/lacros/chrome -version').stdout
version = str(utils.parse_chrome_version(res)[0])
logging.info('Lacros version is %s', version)
# Save lacros version for other uses.
save_file = os.path.join(self.resultsdir, 'lacros_version.txt')
tmp_file = '/tmp/lacros_version.txt'
utils.run(['echo', version, '>', save_file])
utils.run(['echo', version, '>', tmp_file])
# Wait to make sure lacros doesn't crash.
time.sleep(10)
try:
utils.poll_for_condition(condition=self.is_lacros_running)
except utils.TimeoutError:
raise error.TestFail('No Lacros processes running after 10s')