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

Side by Side Diff: chrome/test/data/webui/bluetooth_internals_browsertest.js

Issue 2602503002: bluetooth: Fix flaky bluetooth internals browser test. (Closed)
Patch Set: Add transition duration constant 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Tests for chrome://bluetooth-internals 6 * @fileoverview Tests for chrome://bluetooth-internals
7 */ 7 */
8 8
9 /** @const {string} Path to source root. */ 9 /** @const {string} Path to source root. */
10 var ROOT_PATH = '../../../../'; 10 var ROOT_PATH = '../../../../';
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 */ 218 */
219 fakeDeviceInfo3: function() { 219 fakeDeviceInfo3: function() {
220 return { 220 return {
221 address: "CC:CC:84:96:92:84", 221 address: "CC:CC:84:96:92:84",
222 name: "CCC", 222 name: "CCC",
223 name_for_display: "CCC", 223 name_for_display: "CCC",
224 }; 224 };
225 }, 225 },
226 }; 226 };
227 227
228 // Fails on Win/Mac. https://crbug.com/676227 228 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() {
229 GEN('#if defined(OS_MACOSX) || defined(OS_WIN)');
230 GEN('#define MAYBE_Startup_BluetoothInternals \\');
231 GEN(' DISABLED_Startup_BluetoothInternals');
232 GEN('#else');
233 GEN('#define MAYBE_Startup_BluetoothInternals Startup_BluetoothInternals');
234 GEN('#endif');
235
236 TEST_F('BluetoothInternalsTest',
237 'MAYBE_Startup_BluetoothInternals', function() {
238 var adapterFactory = null; 229 var adapterFactory = null;
239 var deviceTable = null; 230 var deviceTable = null;
240 var sidebarNode = null; 231 var sidebarNode = null;
241 232
242 var fakeDeviceInfo1 = this.fakeDeviceInfo1; 233 var fakeDeviceInfo1 = this.fakeDeviceInfo1;
243 var fakeDeviceInfo2 = this.fakeDeviceInfo2; 234 var fakeDeviceInfo2 = this.fakeDeviceInfo2;
244 var fakeDeviceInfo3 = this.fakeDeviceInfo3; 235 var fakeDeviceInfo3 = this.fakeDeviceInfo3;
245 236
246 // Before tests are run, make sure setup completes. 237 // Before tests are run, make sure setup completes.
247 var setupPromise = this.setupResolver.promise.then(function() { 238 var setupPromise = this.setupResolver.promise.then(function() {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 }); 461 });
471 462
472 test('Sidebar_CloseTwice', function() { 463 test('Sidebar_CloseTwice', function() {
473 // Multiple calls to close shouldn't change the state. 464 // Multiple calls to close shouldn't change the state.
474 sidebarObj.close(); 465 sidebarObj.close();
475 sidebarObj.close(); 466 sidebarObj.close();
476 expectFalse(sidebarNode.classList.contains('open')); 467 expectFalse(sidebarNode.classList.contains('open'));
477 }); 468 });
478 469
479 /* Snackbar Tests */ 470 /* Snackbar Tests */
480 function finishSnackbarTest(done) { 471
481 // Let event queue finish. 472 /**
482 setTimeout(function() { 473 * Checks snackbar showing status and returns a Promise that resolves when
483 expectEquals(0, $('snackbar-container').children.length); 474 * |pendingSnackbar| is shown. If the snackbar is already showing, the
484 expectFalse(!!snackbar.Snackbar.current_); 475 * Promise resolves immediately.
485 done(); 476 * @param {!snackbar.Snackbar} pendingSnackbar
486 }, 10); 477 * @return {!Promise}
478 */
479 function whenSnackbarShows(pendingSnackbar) {
480 return new Promise(function(resolve) {
481 if (pendingSnackbar.classList.contains('open')) {
482 resolve();
483 } else {
484 pendingSnackbar.addEventListener('showed', function() { resolve(); });
485 }
Dan Beam 2017/01/04 01:48:33 no curlies
mbrunson 2017/01/04 03:46:19 Done.
486 });
487 }
488
489 /**
490 * Performs final checks for snackbar tests.
491 * @return {!Promise} Promise is fulfilled when the checks finish.
492 */
493 function finishSnackbarTest() {
494 return new Promise(function(resolve) {
495 // Let event queue finish.
496 setTimeout(function() {
497 expectEquals(0, $('snackbar-container').children.length);
498 expectFalse(!!snackbar.Snackbar.current_);
499 resolve();
500 }, 50);
501 });
487 } 502 }
488 503
489 test('Snackbar_ShowTimeout', function(done) { 504 test('Snackbar_ShowTimeout', function(done) {
490 var snackbar1 = snackbar.Snackbar.show('Message 1'); 505 var snackbar1 = snackbar.Snackbar.show('Message 1');
491 assertEquals(1, $('snackbar-container').children.length); 506 assertEquals(1, $('snackbar-container').children.length);
492 507
493 snackbar1.addEventListener('dismissed', function() { 508 snackbar1.addEventListener('dismissed', function() {
494 finishSnackbarTest(done); 509 finishSnackbarTest().then(done);
495 }); 510 });
496 }); 511 });
497 512
498 test('Snackbar_ShowDismiss', function(done) { 513 test('Snackbar_ShowDismiss', function(done) {
499 var snackbar1 = snackbar.Snackbar.show('Message 1'); 514 var snackbar1 = snackbar.Snackbar.show('Message 1');
500 assertEquals(1, $('snackbar-container').children.length); 515 assertEquals(1, $('snackbar-container').children.length);
501 snackbar1.addEventListener('dismissed', function() {
502 finishSnackbarTest(done);
503 });
504 516
505 snackbar.Snackbar.dismiss(); 517 function finish() {
518 snackbar.Snackbar.dismiss().then(finishSnackbarTest).then(done);
519 }
520
521 whenSnackbarShows(snackbar1).then(finish);
Dan Beam 2017/01/04 01:48:33 if you drop the |done| argument and just return a
mbrunson 2017/01/04 03:46:19 Done.
506 }); 522 });
507 523
508 test('Snackbar_QueueThreeDismiss', function(done) { 524 test('Snackbar_QueueThreeDismiss', function(done) {
509 var expectedCalls = 3; 525 var expectedCalls = 3;
510 var actualCalls = 0; 526 var actualCalls = 0;
511 527
512 var snackbar1 = snackbar.Snackbar.show('Message 1'); 528 var snackbar1 = snackbar.Snackbar.show('Message 1');
513 var snackbar2 = snackbar.Snackbar.show('Message 2'); 529 var snackbar2 = snackbar.Snackbar.show('Message 2');
514 var snackbar3 = snackbar.Snackbar.show('Message 3'); 530 var snackbar3 = snackbar.Snackbar.show('Message 3');
515 531
516 assertEquals(1, $('snackbar-container').children.length); 532 assertEquals(1, $('snackbar-container').children.length);
517 expectEquals(2, snackbar.Snackbar.queue_.length); 533 expectEquals(2, snackbar.Snackbar.queue_.length);
518 534
519 function next() { 535 function next() {
520 actualCalls++; 536 actualCalls++;
521 snackbar.Snackbar.dismiss(); 537 return snackbar.Snackbar.dismiss();
522 } 538 }
523 539
524 snackbar1.addEventListener('dismissed', next); 540 function finish() {
525 snackbar2.addEventListener('dismissed', next); 541 next().then(function() {
526 snackbar3.addEventListener('dismissed', function() { 542 expectEquals(expectedCalls, actualCalls);
527 next(); 543 }).then(finishSnackbarTest).then(done);
528 expectEquals(expectedCalls, actualCalls); 544 }
529 finishSnackbarTest(done);
530 });
531 545
532 snackbar.Snackbar.dismiss(); 546 whenSnackbarShows(snackbar1).then(next);
547 whenSnackbarShows(snackbar2).then(next);
548 whenSnackbarShows(snackbar3).then(finish);
533 }); 549 });
534 550
535 test('Snackbar_QueueThreeDismissAll', function(done) { 551 test('Snackbar_QueueThreeDismissAll', function(done) {
536 var expectedCalls = 1; 552 var expectedCalls = 1;
537 var actualCalls = 0; 553 var actualCalls = 0;
538 554
539 var snackbar1 = snackbar.Snackbar.show('Message 1'); 555 var snackbar1 = snackbar.Snackbar.show('Message 1');
540 var snackbar2 = snackbar.Snackbar.show('Message 2'); 556 var snackbar2 = snackbar.Snackbar.show('Message 2');
541 var snackbar3 = snackbar.Snackbar.show('Message 3'); 557 var snackbar3 = snackbar.Snackbar.show('Message 3');
542 558
543 assertEquals(1, $('snackbar-container').children.length); 559 assertEquals(1, $('snackbar-container').children.length);
544 expectEquals(2, snackbar.Snackbar.queue_.length); 560 expectEquals(2, snackbar.Snackbar.queue_.length);
545 561
546 function next() { 562 function next() {
547 assertTrue(false); 563 assertTrue(false);
548 } 564 }
549 565
550 snackbar1.addEventListener('dismissed', function() { 566 whenSnackbarShows(snackbar2).then(next);
567 snackbar2.addEventListener('dismissed', next);
568 whenSnackbarShows(snackbar3).then(next);
569 snackbar3.addEventListener('dismissed', next);
570
571 whenSnackbarShows(snackbar1).then(function() {
572 return snackbar.Snackbar.dismiss(true);
573 }).then(function() {
551 expectEquals(0, snackbar.Snackbar.queue_.length); 574 expectEquals(0, snackbar.Snackbar.queue_.length);
552 expectFalse(!!snackbar.Snackbar.current_); 575 expectFalse(!!snackbar.Snackbar.current_);
553 snackbar.Snackbar.dismiss(); 576 }).then(finishSnackbarTest).then(done);
554
555 finishSnackbarTest(done);
556 });
557 snackbar2.addEventListener('dismissed', next);
558 snackbar3.addEventListener('dismissed', next);
559
560 snackbar.Snackbar.dismiss(true);
561 }); 577 });
562 }); 578 });
563 579
564 580
565 // Run all registered tests. 581 // Run all registered tests.
566 mocha.run(); 582 mocha.run();
567 }); 583 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698