| Index: chrome/test/functional/ui_runner.py
|
| diff --git a/chrome/test/functional/ui_runner.py b/chrome/test/functional/ui_runner.py
|
| deleted file mode 100755
|
| index fb8bad103fd634b55903ff6dd03f752d316f7520..0000000000000000000000000000000000000000
|
| --- a/chrome/test/functional/ui_runner.py
|
| +++ /dev/null
|
| @@ -1,247 +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.
|
| -
|
| -"""Pyauto powered ui action runner.
|
| -
|
| -Developed primarily to verify validity of the model based action generator.
|
| -"""
|
| -
|
| -import time
|
| -import sys
|
| -
|
| -import pyauto_functional
|
| -import pyauto
|
| -import ui_model
|
| -
|
| -class Runner(pyauto.PyUITest):
|
| -
|
| - def setUp(self):
|
| - self.debug_mode = False
|
| - pyauto.PyUITest.setUp(self)
|
| -
|
| - def RunActionList(self):
|
| - """Runs actions from a file."""
|
| - f = open('list')
|
| - actions = f.readlines()
|
| - self.browser = ui_model.BrowserState(advanced_actions=True)
|
| - count = 0
|
| - for action in actions:
|
| - count += 1
|
| - sys.stdout.write('%d > ' % count)
|
| - action = action.strip()
|
| - self.ApplyAction(action)
|
| - raw_input('Press key to continue.')
|
| -
|
| -
|
| - def DebugUIActions(self):
|
| - """Run testUIActions with debug mode on.
|
| -
|
| - Allows inspection of the browser after unexpected state is encountered.
|
| - """
|
| - self.debug_mode = True
|
| - self.testUIActions()
|
| -
|
| - def testUIActions(self):
|
| - """Generates and runs actions forever."""
|
| - self.browser = ui_model.BrowserState(advanced_actions=True)
|
| - count = 0
|
| - start_time = time.time()
|
| - while True:
|
| - count += 1
|
| - sys.stdout.write('%d:%.3f > ' % (count, time.time() - start_time))
|
| - action = ui_model.GetRandomAction(self.browser)
|
| - self.ApplyAction(action)
|
| -
|
| - def ApplyAction(self, action):
|
| - sys.stdout.write('%s, ' % action)
|
| - if self._DoAction(action):
|
| - ui_model.UpdateState(self.browser, action)
|
| - self._CheckState()
|
| -
|
| - def Error(self, msg=''):
|
| - """Called when an unexpected state is encountered."""
|
| - if msg:
|
| - print 'Error: %s' % msg
|
| - else:
|
| - print 'Error'
|
| - while self.debug_mode:
|
| - raw_input('Press key to continue.')
|
| - assertTrue(False, msg)
|
| -
|
| - def _CheckState(self):
|
| - """Check some basic properties of the browser against expected state."""
|
| - active_window = self.browser.window_position
|
| - active_tab = self.GetActiveTabIndex(active_window)
|
| - expected_tab = self.browser.window.tab_position
|
| - print 'win: %d tab: %d navs: %d backs: %d' % (
|
| - active_window, active_tab, self.browser.window.tab.navs,
|
| - self.browser.window.tab.backs)
|
| - if active_tab != expected_tab:
|
| - self.Error('active index out of sync: expected %d' % expected_tab)
|
| - tab_count = self.GetTabCount(active_window)
|
| - expected_count = self.browser.window.num_tabs
|
| - if tab_count != expected_count:
|
| - self.Error('tab count out of sync: count: %d expected: %d' % (
|
| - tab_count, expected_count))
|
| - window_count = self.GetBrowserWindowCount()
|
| - expected_count = self.browser.num_windows
|
| - if window_count != expected_count:
|
| - self.Error('window count out of sync: count: %d expected %d' % (
|
| - window_count, expected_count))
|
| -
|
| - def _GrabTab(self):
|
| - active_window = self.browser.window_position
|
| - window = self.GetBrowserWindow(active_window)
|
| - tab_count = self.GetTabCount(self.browser.window_position)
|
| - active_tab = self.browser.window.tab_position
|
| - if active_tab >= tab_count:
|
| - self.Error('active tab out of bounds: count: %d expected active: %d' % (
|
| - (tab_count, active_tab)))
|
| - return window.GetTab(self.browser.window.tab_position)
|
| -
|
| - def _RunInActiveWindow(self, command):
|
| - active_window = self.browser.window_position
|
| - self.RunCommand(command, active_window)
|
| -
|
| - def _RunAsyncInActiveWindow(self, command):
|
| - active_window = self.browser.window_position
|
| - self.ApplyAccelerator(command, active_window)
|
| -
|
| - def _Zoom(self, command):
|
| - active_window = self.browser.window_position
|
| - title = self.GetActiveTabTitle(active_window)
|
| - model_active_tab = self.browser.window.tab_position
|
| - active_tab = self.GetActiveTabIndex(active_window)
|
| - num_tabs = self.GetTabCount(active_window)
|
| - self._RunAsyncInActiveWindow(command)
|
| - if title == 'New Tab':
|
| - self.Error('zoom called on new tab')
|
| -
|
| - def _WaitFor(self, test):
|
| - start = time.time()
|
| - test_result, detail = test()
|
| - while not test_result:
|
| - if time.time() - start > self.action_max_timeout_ms():
|
| - self.Error('TIMEOUT: %s' % detail)
|
| - time.sleep(.1)
|
| - test_result, detail = test()
|
| -
|
| - def _DoAction(self, action):
|
| - """Execute action in the browser.
|
| -
|
| - Attempts to simulate synchronous execution for most actions.
|
| -
|
| - Args:
|
| - action: action string.
|
| - """
|
| - a = action.split(';')[0]
|
| - if a == 'showbookmarks':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_SHOW_BOOKMARK_BAR)
|
| - if a == 'openwindow' or a == 'goofftherecord':
|
| - def NewWindowHasTab():
|
| - result = self.GetTabCount(self.browser.num_windows) == 1
|
| - return (result, 'NewWindowHasTab')
|
| - def TabLoaded():
|
| - result = self.GetActiveTabTitle(self.browser.num_windows) == 'New Tab'
|
| - return (result, 'TabLoaded')
|
| - if a == 'openwindow':
|
| - self.OpenNewBrowserWindow(True)
|
| - elif a == 'goofftherecord':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_NEW_INCOGNITO_WINDOW)
|
| - self._WaitFor(NewWindowHasTab)
|
| - self._WaitFor(TabLoaded)
|
| - if a == 'newtab':
|
| - active_window = self.browser.window_position
|
| - target = pyauto.GURL('chrome://newtab')
|
| - self.AppendTab(target, active_window)
|
| - if a == 'downloads':
|
| - active_window = self.browser.window_position
|
| - def TabLoaded():
|
| - result = self.GetActiveTabTitle(active_window) == 'Downloads'
|
| - return (result, 'TabLoaded')
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_SHOW_DOWNLOADS)
|
| - self._WaitFor(TabLoaded)
|
| - if a == 'star':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_BOOKMARK_PAGE)
|
| - if a == 'zoomplus':
|
| - self._Zoom(pyauto.IDC_ZOOM_PLUS)
|
| - if a == 'zoomminus':
|
| - self._Zoom(pyauto.IDC_ZOOM_MINUS)
|
| - if a == 'pagedown':
|
| - return False
|
| - if a == 'back' or a == 'forward' or a == 'navigate':
|
| - tab = self._GrabTab()
|
| - active_window = self.browser.window_position
|
| - old_title = self.GetActiveTabTitle(active_window)
|
| - retries = 0
|
| - nav_result = 0
|
| - while nav_result != 1:
|
| - if retries == 1:
|
| - break
|
| - if retries == 1:
|
| - sys.stdout.write('retry ')
|
| - if retries > 0:
|
| - time.sleep(.1)
|
| - sys.stdout.write('%d, ' % retries)
|
| - if a == 'navigate':
|
| - target = pyauto.GURL(action.split(';')[1])
|
| - nav_result = tab.NavigateToURL(target)
|
| - elif a == 'back':
|
| - self.browser.Back()
|
| - self.browser.Forward()
|
| - nav_result = tab.GoBack()
|
| - elif a == 'forward':
|
| - self.browser.Forward()
|
| - self.browser.Back()
|
| - nav_result = tab.GoForward()
|
| - retries += 1
|
| - if a == 'closetab':
|
| - tab = self._GrabTab()
|
| - ui_model.UpdateState(self.browser, action)
|
| - active_window = self.browser.window_position
|
| - window_count = self.browser.num_windows
|
| - tab_count = self.browser.window.num_tabs
|
| - def WindowCount():
|
| - actual = self.GetBrowserWindowCount()
|
| - result = actual == window_count
|
| - return (result, 'WindowCount (expected %d, actual %d)' %
|
| - (window_count, actual))
|
| - def TabCount():
|
| - actual = self.GetTabCount(active_window)
|
| - result = actual == tab_count
|
| - return (result, 'TabCount (expected %d, actual %d)' %
|
| - (tab_count, actual))
|
| - tab.Close(True)
|
| - self._WaitFor(WindowCount)
|
| - self._WaitFor(TabCount)
|
| - return False
|
| - if a == 'closewindow':
|
| - window_count = self.browser.num_windows - 1
|
| - def WindowCount():
|
| - result = self.GetBrowserWindowCount() == window_count
|
| - return (result, 'WindowCount (expected %d)' % window_count)
|
| - self._RunInActiveWindow(pyauto.IDC_CLOSE_WINDOW)
|
| - self._WaitFor(WindowCount)
|
| - if a == 'dragtabout':
|
| - return False
|
| - if a == 'dragtableft':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_MOVE_TAB_PREVIOUS)
|
| - if a == 'dragtabright':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_MOVE_TAB_NEXT)
|
| - if a == 'lasttab':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_SELECT_PREVIOUS_TAB)
|
| - if a == 'nexttab':
|
| - self._RunAsyncInActiveWindow(pyauto.IDC_SELECT_NEXT_TAB)
|
| - if a == 'restoretab':
|
| - active_window = self.browser.window_position
|
| - self.ApplyAccelerator(pyauto.IDC_RESTORE_TAB, active_window)
|
| - self._GrabTab().WaitForTabToBeRestored(self.action_max_timeout_ms())
|
| - ui_model.UpdateState(self.browser, action)
|
| - return False
|
| - return True
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - pyauto_functional.Main()
|
|
|