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

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

Issue 10216002: Fix IDB pyauto tests on cros by preventing restore after restart (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review feedback Created 8 years, 8 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/PYAUTO_TESTS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/indexeddb.py
diff --git a/chrome/test/functional/indexeddb.py b/chrome/test/functional/indexeddb.py
index 87a3c68d4692b153069b751f9ed11422686db43c..8eac787a1189d03427a04a0ac0833570cf7ae8e6 100755
--- a/chrome/test/functional/indexeddb.py
+++ b/chrome/test/functional/indexeddb.py
@@ -11,50 +11,78 @@ import test_utils
class IndexedDBTest(pyauto.PyUITest):
"""Test of IndexedDB."""
+ _SESSION_STARTUP_NTP = 5
+
+ def _GetInnerText(self, selector, tab_index=0):
+ """Return the value of the innerText property of the target node.
+ The target node is identified by CSS selector, e.g. #id"""
+
+ expression = 'document.querySelector("' + selector + '").innerText'
+ return self.GetDOMValue(expression, tab_index=tab_index)
+
+ def _WaitForAndAssertResult(self, expected, tab_index=0):
+ """Wait for the element with id="result" to exist, and verify the value."""
+ self.WaitForDomNode('id("result")', tab_index=tab_index)
+ self.assertEqual(self._GetInnerText('#result', tab_index=tab_index),
+ expected)
+
+ def _ClearResult(self, tab_index=0):
+ """Delete the element with id="result" if it exists."""
+ expression = """(function() {
+ var e = document.querySelector('#result');
+ if (e)
+ e.parentNode.removeChild(e);
+ return 'ok';
+ }())"""
+ self.assertEqual(self.GetDOMValue(expression, tab_index=tab_index), 'ok')
+
+ def _AssertNewTabPage(self):
+ """Assert that the current tab is the new tab page, not a restored tab."""
+ self.assertEqual(self.GetBrowserInfo()['windows'][0]['tabs'][0]['url'],
+ 'chrome://newtab/')
+
def testIndexedDBNullKeyPathPersistence(self):
"""Verify null key path persists after restarting browser."""
+ # Don't restore tabs after restart
+ self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_NTP)
+
url = self.GetHttpURLForDataPath('indexeddb', 'bug_90635.html')
self.NavigateToURL(url + '#part1')
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='pass - first run'),
- msg='Key paths had unexpected values')
+ self._WaitForAndAssertResult('pass - first run')
self.RestartBrowser(clear_profile=False)
+ self._AssertNewTabPage()
self.NavigateToURL(url + '#part2')
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='pass - second run'),
- msg='Key paths had unexpected values')
+ self._WaitForAndAssertResult('pass - second run')
def testVersionChangeCrashResilience(self):
"""Verify that a VERSION_CHANGE transaction is rolled back
after a renderer/browser crash"""
+ # Don't restore tabs after restart
+ self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_NTP)
+
url = self.GetHttpURLForDataPath('indexeddb', 'version_change_crash.html')
self.NavigateToURL(url + '#part1')
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='pass - part1 - complete'),
- msg='Failed to prepare database')
+ self._WaitForAndAssertResult('pass - part1 - complete')
self.RestartBrowser(clear_profile=False)
+ self._AssertNewTabPage()
self.NavigateToURL(url + '#part2')
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='pass - part2 - crash me'),
- msg='Failed to start transaction')
-
+ self._WaitForAndAssertResult('pass - part2 - crash me')
test_utils.CrashBrowser(self)
self.RestartBrowser(clear_profile=False)
+ self._AssertNewTabPage()
self.NavigateToURL(url + '#part3')
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='pass - part3 - rolled back'),
- msg='VERSION_CHANGE not completely aborted')
+ self._WaitForAndAssertResult('pass - part3 - rolled back')
def testConnectionsClosedOnTabClose(self):
"""Verify that open DB connections are closed when a tab is destroyed."""
@@ -63,20 +91,19 @@ class IndexedDBTest(pyauto.PyUITest):
self.NavigateToURL(url + '#tab1')
pid = self.GetBrowserInfo()['windows'][0]['tabs'][0]['renderer_pid']
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='setVersion(1) complete'),
- msg='Version change failed')
+ self._WaitForAndAssertResult('setVersion(1) complete')
- # Start to a different URL to force a new renderer process
+ # Start on a different URL to force a new renderer process.
self.AppendTab(pyauto.GURL('about:blank'))
self.NavigateToURL(url + '#tab2')
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='setVersion(2) blocked'),
- msg='Version change not blocked as expected')
+ self._WaitForAndAssertResult('setVersion(2) blocked', tab_index=1)
+ self._ClearResult(tab_index=1)
+
self.KillRendererProcess(pid)
- self.assertTrue(self.WaitUntil(self.GetActiveTabTitle,
- expect_retval='setVersion(2) complete'),
- msg='Version change never unblocked')
+ self.assertEqual(self.GetTabCount(), 2)
+ self.GetBrowserWindow(0).GetTab(0).Close(True)
+
+ self._WaitForAndAssertResult('setVersion(2) complete')
if __name__ == '__main__':
« no previous file with comments | « chrome/test/functional/PYAUTO_TESTS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698