blob: 01d553cd982dfae19698aec7d03c931c6de3b0b5 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2012 The Chromium 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 os
import subprocess
import sys
import pyauto_functional # Must be imported before pyauto
import pyauto
sys.path.append('/usr/local') # To make autotest libs importable.
from autotest.cros import cros_ui
from autotest.cros import cryptohome
class ChromeosOOBE(pyauto.PyUITest):
"""TestCases for ChromeOS OOBE wizard flow."""
assert os.geteuid() == 0, 'Need to run this test as root'
def ShouldOOBESkipToLogin(self):
"""Do not skip OOBE."""
return False
def setUp(self):
# We want a clean session_manager instance for every run,
# so restart ui now.
cros_ui.stop(allow_fail=True)
cryptohome.remove_all_vaults()
cros_ui.start(wait_for_login_prompt=False)
pyauto.PyUITest.setUp(self)
def _AssertCurrentScreen(self, screen_name):
"""Verifies current OOBE screen.
Args:
screen_name: expected current screen name.
"""
self.assertEqual(screen_name, self.GetOOBEScreenInfo()['screen_name'])
def testBasicFlow(self):
"""Test that basic OOBE flow works."""
self._AssertCurrentScreen('network')
# Network -> EULA (on Google Chrome builds, Update on Chromium).
ret = self.AcceptOOBENetworkScreen()
if self.GetBrowserInfo()['properties']['branding'] == 'Google Chrome':
self.assertEquals('eula', ret['next_screen'])
self._AssertCurrentScreen('eula')
# EULA (accepted) -> Update.
ret = self.AcceptOOBEEula(accepted=True)
# Update may have already been completed, so don't check for it.
else: # Cancel the update check in non-official build.
# Update (canceled) -> Login.
ret = self.CancelOOBEUpdate()
self.assertEquals('login', ret['next_screen'])
self._AssertCurrentScreen('login')
# Login -> User picker.
credentials = self.GetPrivateInfo()['test_google_account']
self.Login(credentials['username'], credentials['password'])
login_info = self.GetLoginInfo()
self.assertTrue(login_info['is_logged_in'], msg='Login after OOBE failed.')
# User Picker -> normal browser session.
ret = self.PickUserImage(3)
self.assertEquals('session', ret['next_screen'])
# Should have 2 browser windows ("Getting started" and an empty one).
self.assertEqual(2, len(self.GetBrowserInfo()['windows']))
# Verify user image selection.
self.assertEqual(3, self.GetLoginInfo()['user_image'])
if __name__ == '__main__':
pyauto_functional.Main()