blob: 0dec404d1a22441d101ebf6c12b812b05bb687b7 [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 logging
import os
import subprocess
import sys
import time
import pyauto_functional
import pyauto
sys.path.append('/usr/local') # To make autotest libs importable.
from autotest.cros import cros_ui
from autotest.cros import cryptohome
class AccessibilityTest(pyauto.PyUITest):
"""Tests for Accessibility.
Test various chromeos functionalities while Accessibility is turned on.
"""
find_test_data_dir = 'find_in_page'
def ShouldAutoLogin(self):
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 tearDown(self):
self._DisableSpokenFeedback()
pyauto.PyUITest.tearDown(self)
def _Login(self):
"""Perform login."""
credentials = self.GetPrivateInfo()['test_google_account']
self.Login(credentials['username'], credentials['password'])
logging.info('Logging in as %s' % credentials['username'])
login_info = self.GetLoginInfo()
self.assertTrue(login_info['is_logged_in'], msg='Login failed.')
def _LoginWithSpokenFeedback(self):
self.EnableSpokenFeedback(True)
self._Login()
self.assertTrue(self.IsSpokenFeedbackEnabled(),
msg='Could not enable spoken feedback accessibility mode.')
def _EnableSpokenFeedback(self):
self.EnableSpokenFeedback(True)
self.assertTrue(self.IsSpokenFeedbackEnabled(),
msg='Could not enable spoken feedback accessibility mode.')
def _DisableSpokenFeedback(self):
self.EnableSpokenFeedback(False)
self.assertFalse(self.IsSpokenFeedbackEnabled(),
msg='Could not disable spoken feedback accessibility mode.')
def testCanEnableSpokenFeedback(self):
"""Tests that spoken feedback accessibility mode can be enabled."""
self._EnableSpokenFeedback()
def testLoginAsGuest(self):
"""Test that Guest user login is possible when Accessibility is on."""
self._EnableSpokenFeedback()
self.LoginAsGuest()
login_info = self.GetLoginInfo()
self.assertTrue(login_info['is_logged_in'], msg='Not logged in at all.')
self.assertTrue(login_info['is_guest'], msg='Not logged in as guest.')
url = self.GetFileURLForDataPath('title1.html')
self.NavigateToURL(url)
self.assertEqual(1, self.FindInPage('title')['match_count'],
msg='Failed to load the page or find the page contents.')
# crbug.com/129218: adding a volume change functionality to automate this
# issue. Please note that we don't verify any functionality here.
default_volume = self.GetVolumeInfo()
for test_volume in (50.00, 77.00, 85.00, 20.00):
self.SetVolume(test_volume)
time.sleep(1)
self.SetVolume(default_volume.get('volume'))
def testAccessibilityBeforeLogin(self):
"""Test Accessibility before login."""
self._LoginWithSpokenFeedback()
self.Logout()
self.assertFalse(self.GetLoginInfo()['is_logged_in'],
msg='Still logged in when we should be logged out.')
self.assertTrue(self.IsSpokenFeedbackEnabled(),
msg='Spoken feedback accessibility mode disabled after loggin out.')
def testAccessibilityAfterLogin(self):
"""Test Accessibility after login."""
self._Login()
self._EnableSpokenFeedback()
def testPagePerformance(self):
"""Test Chrome works fine when Accessibility is on."""
self._LoginWithSpokenFeedback()
# Verify that opened tab page behaves normally when Spoken Feedback is
# enabled. crosbug.com/26731
url = self.GetFileURLForDataPath(self.find_test_data_dir, 'largepage.html')
self.NavigateToURL(url)
self.assertEqual(373, self.FindInPage('daughter of Prince')['match_count'],
msg='Failed to load the page or find the page contents.')
if __name__ == '__main__':
pyauto_functional.Main()