Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6210)

Unified Diff: chrome/test/functional/extensions.py

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/functional/execute_javascript.py ('k') | chrome/test/functional/fullscreen_mouselock.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/extensions.py
===================================================================
--- chrome/test/functional/extensions.py (revision 261231)
+++ chrome/test/functional/extensions.py (working copy)
@@ -1,346 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-"""
-This module is a simple qa tool that installs extensions and tests whether the
-browser crashes while visiting a list of urls.
-
-Usage: python extensions.py -v
-
-Note: This assumes that there is a directory of extensions called
-'extensions-tool' and that there is a file of newline-separated urls to visit
-called 'urls.txt' in the data directory.
-"""
-
-import glob
-import logging
-import os
-import sys
-
-import pyauto_functional # must be imported before pyauto
-import pyauto
-
-
-class ExtensionsPage(object):
- """Access options in extensions page (chrome://extensions-frame)."""
-
- _URL = 'chrome://extensions-frame'
-
- def __init__(self, driver):
- self._driver = driver
- self._driver.get(ExtensionsPage._URL)
-
- def CheckExtensionVisible(self, ext_id):
- """Returns True if |ext_id| exists on page."""
- return len(self._driver.find_elements_by_id(ext_id)) == 1
-
- def SetEnabled(self, ext_id, enabled):
- """Clicks on 'Enabled' checkbox for specified extension.
-
- Args:
- ext_id: Extension ID to be enabled or disabled.
- enabled: Boolean indicating whether |ext_id| is to be enabled or disabled.
- """
- checkbox = self._driver.find_element_by_xpath(
- '//*[@id="%s"]//*[@class="enable-controls"]//*[@type="checkbox"]' %
- ext_id)
- if checkbox != enabled:
- checkbox.click()
- # Reload page to ensure that the UI is recreated.
- self._driver.get(ExtensionsPage._URL)
-
- def SetAllowInIncognito(self, ext_id, allowed):
- """Clicks on 'Allow in incognito' checkbox for specified extension.
-
- Args:
- ext_id: Extension ID to be enabled or disabled.
- allowed: Boolean indicating whether |ext_id| is to be allowed or
- disallowed in incognito.
- """
- checkbox = self._driver.find_element_by_xpath(
- '//*[@id="%s"]//*[@class="incognito-control"]//*[@type="checkbox"]' %
- ext_id)
- if checkbox.is_selected() != allowed:
- checkbox.click()
- # Reload page to ensure that the UI is recreated.
- self._driver.get(ExtensionsPage._URL)
-
- def SetAllowAccessFileURLs(self, ext_id, allowed):
- """Clicks on 'Allow access to file URLs' checkbox for specified extension.
-
- Args:
- ext_id: Extension ID to be enabled or disabled.
- allowed: Boolean indicating whether |ext_id| is to be allowed access to
- file URLs.
- """
- checkbox = self._driver.find_element_by_xpath(
- '//*[@id="%s"]//*[@class="file-access-control"]//*[@type="checkbox"]' %
- ext_id)
- if checkbox.is_selected() != allowed:
- checkbox.click()
-
-
-class ExtensionsTest(pyauto.PyUITest):
- """Test of extensions."""
-
- def Debug(self):
- """Test method for experimentation.
-
- This method is not run automatically.
- """
- while True:
- raw_input('Interact with the browser and hit <enter> to dump history.')
- print '*' * 20
- self.pprint(self.GetExtensionsInfo())
-
- def _GetInstalledExtensionIds(self):
- return [extension['id'] for extension in self.GetExtensionsInfo()]
-
- def _ReturnCrashingExtensions(self, extensions, group_size, top_urls):
- """Returns the group of extensions that crashes (if any).
-
- Install the given extensions in groups of group_size and return the
- group of extensions that crashes (if any).
-
- Args:
- extensions: A list of extensions to install.
- group_size: The number of extensions to install at one time.
- top_urls: The list of top urls to visit.
-
- Returns:
- The extensions in the crashing group or None if there is no crash.
- """
- curr_extension = 0
- num_extensions = len(extensions)
- self.RestartBrowser()
- orig_extension_ids = self._GetInstalledExtensionIds()
-
- while curr_extension < num_extensions:
- logging.debug('New group of %d extensions.', group_size)
- group_end = curr_extension + group_size
- for extension in extensions[curr_extension:group_end]:
- logging.debug('Installing extension: %s', extension)
- self.InstallExtension(extension)
-
- for url in top_urls:
- self.NavigateToURL(url)
-
- def _LogAndReturnCrashing():
- crashing_extensions = extensions[curr_extension:group_end]
- logging.debug('Crashing extensions: %s', crashing_extensions)
- return crashing_extensions
-
- # If the browser has crashed, return the extensions in the failing group.
- try:
- num_browser_windows = self.GetBrowserWindowCount()
- except:
- return _LogAndReturnCrashing()
- else:
- if not num_browser_windows:
- return _LogAndReturnCrashing()
- else:
- # Uninstall all extensions that aren't installed by default.
- new_extension_ids = [id for id in self._GetInstalledExtensionIds()
- if id not in orig_extension_ids]
- for extension_id in new_extension_ids:
- self.UninstallExtensionById(extension_id)
-
- curr_extension = group_end
-
- # None of the extensions crashed.
- return None
-
- def _GetExtensionInfoById(self, extensions, id):
- for x in extensions:
- if x['id'] == id:
- return x
- return None
-
- def ExtensionCrashes(self):
- """Add top extensions; confirm browser stays up when visiting top urls."""
- # TODO: provide a way in pyauto to pass args to a test - take these as args
- extensions_dir = os.path.join(self.DataDir(), 'extensions-tool')
- urls_file = os.path.join(self.DataDir(), 'urls.txt')
-
- error_msg = 'The dir "%s" must exist' % os.path.abspath(extensions_dir)
- assert os.path.exists(extensions_dir), error_msg
- error_msg = 'The file "%s" must exist' % os.path.abspath(urls_file)
- assert os.path.exists(urls_file), error_msg
-
- num_urls_to_visit = 100
- extensions_group_size = 20
-
- top_urls = [l.rstrip() for l in
- open(urls_file).readlines()[:num_urls_to_visit]]
-
- failed_extensions = glob.glob(os.path.join(extensions_dir, '*.crx'))
- group_size = extensions_group_size
-
- while (group_size and failed_extensions):
- failed_extensions = self._ReturnCrashingExtensions(
- failed_extensions, group_size, top_urls)
- group_size = group_size // 2
-
- self.assertFalse(failed_extensions,
- 'Extension(s) in failing group: %s' % failed_extensions)
-
- def _InstallExtensionCheckDefaults(self, crx_file):
- """Installs extension at extensions/|crx_file| and checks default status.
-
- Checks that the installed extension is enabled and not allowed in incognito.
-
- Args:
- crx_file: Relative path from self.DataDir()/extensions to .crx extension
- to be installed.
-
- Returns:
- The extension ID.
- """
- crx_file_path = os.path.abspath(
- os.path.join(self.DataDir(), 'extensions', crx_file))
- ext_id = self.InstallExtension(crx_file_path)
- extension = self._GetExtensionInfoById(self.GetExtensionsInfo(), ext_id)
- self.assertTrue(extension['is_enabled'],
- msg='Extension was not enabled on installation')
- self.assertFalse(extension['allowed_in_incognito'],
- msg='Extension was allowed in incognito on installation.')
-
- return ext_id
-
- def _ExtensionValue(self, ext_id, key):
- """Returns the value of |key| for |ext_id|.
-
- Args:
- ext_id: The extension ID.
- key: The key for which the extensions info value is required.
-
- Returns:
- The value of extensions info |key| for |ext_id|.
- """
- return self._GetExtensionInfoById(self.GetExtensionsInfo(), ext_id)[key]
-
- def _FileAccess(self, ext_id):
- """Returns the value of newAllowFileAccess for |ext_id|.
-
- Args:
- ext_id: The extension ID.
-
- Returns:
- The value of extensions settings newAllowFileAccess for |ext_id|.
- """
- extension_settings = self.GetPrefsInfo().Prefs()['extensions']['settings']
- return extension_settings[ext_id]['newAllowFileAccess']
-
- def testGetExtensionPermissions(self):
- """Ensures we can retrieve the host/api permissions for an extension.
-
- This test assumes that the 'Bookmark Manager' extension exists in a fresh
- profile.
- """
- extensions_info = self.GetExtensionsInfo()
- bm_exts = [x for x in extensions_info if x['name'] == 'Bookmark Manager']
- self.assertTrue(bm_exts,
- msg='Could not find info for the Bookmark Manager '
- 'extension.')
- ext = bm_exts[0]
-
- permissions_host = ext['host_permissions']
- self.assertTrue(len(permissions_host) == 2 and
- 'chrome://favicon/*' in permissions_host and
- 'chrome://resources/*' in permissions_host,
- msg='Unexpected host permissions information.')
-
- permissions_api = ext['api_permissions']
- print permissions_api
- self.assertTrue(len(permissions_api) == 5 and
- 'bookmarks' in permissions_api and
- 'bookmarkManagerPrivate' in permissions_api and
- 'metricsPrivate' in permissions_api and
- 'systemPrivate' in permissions_api and
- 'tabs' in permissions_api,
- msg='Unexpected API permissions information.')
-
- def testDisableEnableExtension(self):
- """Tests that an extension can be disabled and enabled with the UI."""
- ext_id = self._InstallExtensionCheckDefaults('good.crx')
-
- # Disable extension.
- driver = self.NewWebDriver()
- ext_page = ExtensionsPage(driver)
- self.WaitUntil(ext_page.CheckExtensionVisible, args=[ext_id])
- ext_page.SetEnabled(ext_id, False)
- self.WaitUntil(self._ExtensionValue, args=[ext_id, 'is_enabled'],
- expect_retval=False)
- self.assertFalse(self._ExtensionValue(ext_id, 'is_enabled'),
- msg='Extension did not get disabled.')
-
- # Enable extension.
- self.WaitUntil(ext_page.CheckExtensionVisible, args=[ext_id])
- ext_page.SetEnabled(ext_id, True)
- self.WaitUntil(self._ExtensionValue, args=[ext_id, 'is_enabled'],
- expect_retval=True)
- self.assertTrue(self._ExtensionValue(ext_id, 'is_enabled'),
- msg='Extension did not get enabled.')
-
- def testAllowIncognitoExtension(self):
- """Tests allowing and disallowing an extension in incognito mode."""
- ext_id = self._InstallExtensionCheckDefaults('good.crx')
-
- # Allow in incognito.
- driver = self.NewWebDriver()
- ext_page = ExtensionsPage(driver)
- self.WaitUntil(ext_page.CheckExtensionVisible, args=[ext_id])
- ext_page.SetAllowInIncognito(ext_id, True)
-
- # Check extension now allowed in incognito.
- self.WaitUntil(self._ExtensionValue, args=[ext_id, 'allowed_in_incognito'],
- expect_retval=True)
- self.assertTrue(self._ExtensionValue(ext_id, 'allowed_in_incognito'),
- msg='Extension did not get allowed in incognito.')
-
- # Disallow in incognito.
- self.WaitUntil(ext_page.CheckExtensionVisible, args=[ext_id])
- ext_page.SetAllowInIncognito(ext_id, False)
-
- # Check extension now disallowed in incognito.
- self.WaitUntil(self._ExtensionValue, args=[ext_id, 'allowed_in_incognito'],
- expect_retval=False)
- self.assertFalse(self._ExtensionValue(ext_id, 'allowed_in_incognito'),
- msg='Extension did not get disallowed in incognito.')
-
- def testAllowAccessFileURLs(self):
- """Tests disallowing and allowing and extension access to file URLs."""
- ext_id = self._InstallExtensionCheckDefaults(os.path.join('permissions',
- 'files'))
-
- # Check extension allowed access to file URLs by default.
- extension_settings = self.GetPrefsInfo().Prefs()['extensions']['settings']
- self.assertTrue(extension_settings[ext_id]['newAllowFileAccess'],
- msg='Extension was not allowed access to file URLs on '
- 'installation')
-
- # Disallow access to file URLs.
- driver = self.NewWebDriver()
- ext_page = ExtensionsPage(driver)
- self.WaitUntil(ext_page.CheckExtensionVisible, args=[ext_id])
- ext_page.SetAllowAccessFileURLs(ext_id, False)
-
- # Check that extension does not have access to file URLs.
- self.WaitUntil(self._FileAccess, args=[ext_id], expect_retval=False)
- self.assertFalse(self._FileAccess(ext_id),
- msg='Extension did not have access to file URLs denied.')
-
- # Allow access to file URLs.
- self.WaitUntil(ext_page.CheckExtensionVisible, args=[ext_id])
- ext_page.SetAllowAccessFileURLs(ext_id, True)
-
- # Check that extension now has access to file URLs.
- self.WaitUntil(self._FileAccess, args=[ext_id], expect_retval=True)
- self.assertTrue(self._FileAccess(ext_id),
- msg='Extension did not have access to file URLs granted.')
-
-
-if __name__ == '__main__':
- pyauto_functional.Main()
« no previous file with comments | « chrome/test/functional/execute_javascript.py ('k') | chrome/test/functional/fullscreen_mouselock.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698