#!/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()