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

Unified Diff: chrome/test/data/webui/bluetooth_internals_browsertest.js

Issue 2602503002: bluetooth: Fix flaky bluetooth internals browser test. (Closed)
Patch Set: Fix up tests, clean up formatting Created 3 years, 11 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
Index: chrome/test/data/webui/bluetooth_internals_browsertest.js
diff --git a/chrome/test/data/webui/bluetooth_internals_browsertest.js b/chrome/test/data/webui/bluetooth_internals_browsertest.js
index 2bfa1804bf53326bc901dd7393f30b3de8d7a799..168fb11cfb34ee34e35e79416bf0c4ad580df975 100644
--- a/chrome/test/data/webui/bluetooth_internals_browsertest.js
+++ b/chrome/test/data/webui/bluetooth_internals_browsertest.js
@@ -218,16 +218,7 @@ BluetoothInternalsTest.prototype = {
},
};
-// Fails on Win/Mac. https://crbug.com/676227
-GEN('#if defined(OS_MACOSX) || defined(OS_WIN)');
-GEN('#define MAYBE_Startup_BluetoothInternals \\');
-GEN(' DISABLED_Startup_BluetoothInternals');
-GEN('#else');
-GEN('#define MAYBE_Startup_BluetoothInternals Startup_BluetoothInternals');
-GEN('#endif');
-
-TEST_F('BluetoothInternalsTest',
- 'MAYBE_Startup_BluetoothInternals', function() {
+TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() {
var adapterFactory = null;
var deviceTable = null;
var sidebarNode = null;
@@ -470,13 +461,36 @@ TEST_F('BluetoothInternalsTest',
});
/* Snackbar Tests */
- function finishSnackbarTest(done) {
- // Let event queue finish.
- setTimeout(function() {
- expectEquals(0, $('snackbar-container').children.length);
- expectFalse(!!snackbar.Snackbar.current_);
- done();
- }, 10);
+
+ /**
+ * Checks snackbar showing status and returns a Promise that resolves when
+ * |pendingSnackbar| is shown. If the snackbar is already showing, the
+ * Promise resolves immediately.
+ * @param {!snackbar.Snackbar} pendingSnackbar
+ * @return {!Promise}
+ */
+ function whenSnackbarShows(pendingSnackbar) {
+ return new Promise(function(resolve) {
+ if (pendingSnackbar.classList.contains('open'))
+ resolve();
+ else
+ pendingSnackbar.addEventListener('showed', function() { resolve(); });
Dan Beam 2017/01/04 22:28:59 if you don't care about the argument you're resolv
mbrunson 2017/01/05 01:03:27 Done.
+ });
+ }
+
+ /**
+ * Performs final checks for snackbar tests.
+ * @return {!Promise} Promise is fulfilled when the checks finish.
+ */
+ function finishSnackbarTest() {
+ return new Promise(function(resolve) {
+ // Let event queue finish.
+ setTimeout(function() {
+ expectEquals(0, $('snackbar-container').children.length);
+ expectFalse(!!snackbar.Snackbar.current_);
+ resolve();
+ }, 50);
+ });
}
test('Snackbar_ShowTimeout', function(done) {
@@ -484,21 +498,20 @@ TEST_F('BluetoothInternalsTest',
assertEquals(1, $('snackbar-container').children.length);
snackbar1.addEventListener('dismissed', function() {
- finishSnackbarTest(done);
+ finishSnackbarTest().then(done);
});
});
- test('Snackbar_ShowDismiss', function(done) {
+ test('Snackbar_ShowDismiss', function() {
var snackbar1 = snackbar.Snackbar.show('Message 1');
assertEquals(1, $('snackbar-container').children.length);
- snackbar1.addEventListener('dismissed', function() {
- finishSnackbarTest(done);
- });
- snackbar.Snackbar.dismiss();
+ return whenSnackbarShows(snackbar1).then(function() {
+ return snackbar.Snackbar.dismiss();
+ }).then(finishSnackbarTest);
});
- test('Snackbar_QueueThreeDismiss', function(done) {
+ test('Snackbar_QueueThreeDismiss', function() {
var expectedCalls = 3;
var actualCalls = 0;
@@ -511,21 +524,17 @@ TEST_F('BluetoothInternalsTest',
function next() {
actualCalls++;
- snackbar.Snackbar.dismiss();
+ return snackbar.Snackbar.dismiss();
}
- snackbar1.addEventListener('dismissed', next);
- snackbar2.addEventListener('dismissed', next);
- snackbar3.addEventListener('dismissed', function() {
- next();
+ whenSnackbarShows(snackbar1).then(next);
+ whenSnackbarShows(snackbar2).then(next);
+ return whenSnackbarShows(snackbar3).then(next).then(function() {
expectEquals(expectedCalls, actualCalls);
- finishSnackbarTest(done);
- });
-
- snackbar.Snackbar.dismiss();
+ }).then(finishSnackbarTest);
});
- test('Snackbar_QueueThreeDismissAll', function(done) {
+ test('Snackbar_QueueThreeDismissAll', function() {
var expectedCalls = 1;
var actualCalls = 0;
@@ -540,17 +549,17 @@ TEST_F('BluetoothInternalsTest',
assertTrue(false);
}
- snackbar1.addEventListener('dismissed', function() {
- expectEquals(0, snackbar.Snackbar.queue_.length);
- expectFalse(!!snackbar.Snackbar.current_);
- snackbar.Snackbar.dismiss();
-
- finishSnackbarTest(done);
- });
+ whenSnackbarShows(snackbar2).then(next);
snackbar2.addEventListener('dismissed', next);
+ whenSnackbarShows(snackbar3).then(next);
snackbar3.addEventListener('dismissed', next);
- snackbar.Snackbar.dismiss(true);
+ whenSnackbarShows(snackbar1).then(function() {
+ return snackbar.Snackbar.dismiss(true);
+ }).then(function() {
+ expectEquals(0, snackbar.Snackbar.queue_.length);
+ expectFalse(!!snackbar.Snackbar.current_);
+ }).then(finishSnackbarTest);
});
});

Powered by Google App Engine
This is Rietveld 408576698