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

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

Issue 2602503002: bluetooth: Fix flaky bluetooth internals browser test. (Closed)
Patch Set: Simplify snackbar and test 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
« no previous file with comments | « chrome/browser/resources/bluetooth_internals/snackbar.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 */ 211 */
212 fakeDeviceInfo3: function() { 212 fakeDeviceInfo3: function() {
213 return { 213 return {
214 address: "CC:CC:84:96:92:84", 214 address: "CC:CC:84:96:92:84",
215 name: "CCC", 215 name: "CCC",
216 name_for_display: "CCC", 216 name_for_display: "CCC",
217 }; 217 };
218 }, 218 },
219 }; 219 };
220 220
221 // Fails on Win/Mac. https://crbug.com/676227 221 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() {
222 GEN('#if defined(OS_MACOSX) || defined(OS_WIN)');
223 GEN('#define MAYBE_Startup_BluetoothInternals \\');
224 GEN(' DISABLED_Startup_BluetoothInternals');
225 GEN('#else');
226 GEN('#define MAYBE_Startup_BluetoothInternals Startup_BluetoothInternals');
227 GEN('#endif');
228
229 TEST_F('BluetoothInternalsTest',
230 'MAYBE_Startup_BluetoothInternals', function() {
231 var adapterFactory = null; 222 var adapterFactory = null;
232 var deviceTable = null; 223 var deviceTable = null;
233 var sidebarNode = null; 224 var sidebarNode = null;
234 225
235 var fakeDeviceInfo1 = this.fakeDeviceInfo1; 226 var fakeDeviceInfo1 = this.fakeDeviceInfo1;
236 var fakeDeviceInfo2 = this.fakeDeviceInfo2; 227 var fakeDeviceInfo2 = this.fakeDeviceInfo2;
237 var fakeDeviceInfo3 = this.fakeDeviceInfo3; 228 var fakeDeviceInfo3 = this.fakeDeviceInfo3;
238 229
239 // Before tests are run, make sure setup completes. 230 // Before tests are run, make sure setup completes.
240 var setupPromise = this.setupResolver.promise.then(function() { 231 var setupPromise = this.setupResolver.promise.then(function() {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 }); 454 });
464 455
465 test('Sidebar_CloseTwice', function() { 456 test('Sidebar_CloseTwice', function() {
466 // Multiple calls to close shouldn't change the state. 457 // Multiple calls to close shouldn't change the state.
467 sidebarObj.close(); 458 sidebarObj.close();
468 sidebarObj.close(); 459 sidebarObj.close();
469 expectFalse(sidebarNode.classList.contains('open')); 460 expectFalse(sidebarNode.classList.contains('open'));
470 }); 461 });
471 462
472 /* Snackbar Tests */ 463 /* Snackbar Tests */
473 function finishSnackbarTest(done) { 464
474 // Let event queue finish. 465 /**
475 setTimeout(function() { 466 * Checks snackbar showing status and returns a Promise that resolves when
476 expectEquals(0, $('snackbar-container').children.length); 467 * |pendingSnackbar| is shown. If the snackbar is already showing, the
477 expectFalse(!!snackbar.Snackbar.current_); 468 * Promise resolves immediately.
478 done(); 469 * @param {!snackbar.Snackbar} pendingSnackbar
479 }, 10); 470 * @return {!Promise}
471 */
472 function whenSnackbarShows(pendingSnackbar) {
473 return new Promise(function(resolve) {
474 if (pendingSnackbar.classList.contains('open'))
475 resolve();
476 else
477 pendingSnackbar.addEventListener('showed', resolve);
478 });
479 }
480
481 /**
482 * Performs final checks for snackbar tests.
483 * @return {!Promise} Promise is fulfilled when the checks finish.
484 */
485 function finishSnackbarTest() {
486 return new Promise(function(resolve) {
487 // Let event queue finish.
488 setTimeout(function() {
489 expectEquals(0, $('snackbar-container').children.length);
490 expectFalse(!!snackbar.Snackbar.current_);
491 resolve();
492 }, 50);
493 });
480 } 494 }
481 495
482 test('Snackbar_ShowTimeout', function(done) { 496 test('Snackbar_ShowTimeout', function(done) {
483 var snackbar1 = snackbar.Snackbar.show('Message 1'); 497 var snackbar1 = snackbar.Snackbar.show('Message 1');
484 assertEquals(1, $('snackbar-container').children.length); 498 assertEquals(1, $('snackbar-container').children.length);
485 499
486 snackbar1.addEventListener('dismissed', function() { 500 snackbar1.addEventListener('dismissed', function() {
487 finishSnackbarTest(done); 501 finishSnackbarTest().then(done);
488 }); 502 });
489 }); 503 });
490 504
491 test('Snackbar_ShowDismiss', function(done) { 505 test('Snackbar_ShowDismiss', function() {
492 var snackbar1 = snackbar.Snackbar.show('Message 1'); 506 var snackbar1 = snackbar.Snackbar.show('Message 1');
493 assertEquals(1, $('snackbar-container').children.length); 507 assertEquals(1, $('snackbar-container').children.length);
494 snackbar1.addEventListener('dismissed', function() {
495 finishSnackbarTest(done);
496 });
497 508
498 snackbar.Snackbar.dismiss(); 509 return whenSnackbarShows(snackbar1).then(function() {
510 return snackbar.Snackbar.dismiss();
511 }).then(finishSnackbarTest);
499 }); 512 });
500 513
501 test('Snackbar_QueueThreeDismiss', function(done) { 514 test('Snackbar_QueueThreeDismiss', function() {
502 var expectedCalls = 3; 515 var expectedCalls = 3;
503 var actualCalls = 0; 516 var actualCalls = 0;
504 517
505 var snackbar1 = snackbar.Snackbar.show('Message 1'); 518 var snackbar1 = snackbar.Snackbar.show('Message 1');
506 var snackbar2 = snackbar.Snackbar.show('Message 2'); 519 var snackbar2 = snackbar.Snackbar.show('Message 2');
507 var snackbar3 = snackbar.Snackbar.show('Message 3'); 520 var snackbar3 = snackbar.Snackbar.show('Message 3');
508 521
509 assertEquals(1, $('snackbar-container').children.length); 522 assertEquals(1, $('snackbar-container').children.length);
510 expectEquals(2, snackbar.Snackbar.queue_.length); 523 expectEquals(2, snackbar.Snackbar.queue_.length);
511 524
512 function next() { 525 function next() {
513 actualCalls++; 526 actualCalls++;
514 snackbar.Snackbar.dismiss(); 527 return snackbar.Snackbar.dismiss();
515 } 528 }
516 529
517 snackbar1.addEventListener('dismissed', next); 530 whenSnackbarShows(snackbar1).then(next);
518 snackbar2.addEventListener('dismissed', next); 531 whenSnackbarShows(snackbar2).then(next);
519 snackbar3.addEventListener('dismissed', function() { 532 return whenSnackbarShows(snackbar3).then(next).then(function() {
520 next();
521 expectEquals(expectedCalls, actualCalls); 533 expectEquals(expectedCalls, actualCalls);
522 finishSnackbarTest(done); 534 }).then(finishSnackbarTest);
523 });
524
525 snackbar.Snackbar.dismiss();
526 }); 535 });
527 536
528 test('Snackbar_QueueThreeDismissAll', function(done) { 537 test('Snackbar_QueueThreeDismissAll', function() {
529 var expectedCalls = 1; 538 var expectedCalls = 1;
530 var actualCalls = 0; 539 var actualCalls = 0;
531 540
532 var snackbar1 = snackbar.Snackbar.show('Message 1'); 541 var snackbar1 = snackbar.Snackbar.show('Message 1');
533 var snackbar2 = snackbar.Snackbar.show('Message 2'); 542 var snackbar2 = snackbar.Snackbar.show('Message 2');
534 var snackbar3 = snackbar.Snackbar.show('Message 3'); 543 var snackbar3 = snackbar.Snackbar.show('Message 3');
535 544
536 assertEquals(1, $('snackbar-container').children.length); 545 assertEquals(1, $('snackbar-container').children.length);
537 expectEquals(2, snackbar.Snackbar.queue_.length); 546 expectEquals(2, snackbar.Snackbar.queue_.length);
538 547
539 function next() { 548 function next() {
540 assertTrue(false); 549 assertTrue(false);
541 } 550 }
542 551
543 snackbar1.addEventListener('dismissed', function() { 552 whenSnackbarShows(snackbar2).then(next);
553 snackbar2.addEventListener('dismissed', next);
554 whenSnackbarShows(snackbar3).then(next);
555 snackbar3.addEventListener('dismissed', next);
556
557 whenSnackbarShows(snackbar1).then(function() {
558 return snackbar.Snackbar.dismiss(true);
559 }).then(function() {
544 expectEquals(0, snackbar.Snackbar.queue_.length); 560 expectEquals(0, snackbar.Snackbar.queue_.length);
545 expectFalse(!!snackbar.Snackbar.current_); 561 expectFalse(!!snackbar.Snackbar.current_);
546 snackbar.Snackbar.dismiss(); 562 }).then(finishSnackbarTest);
547
548 finishSnackbarTest(done);
549 });
550 snackbar2.addEventListener('dismissed', next);
551 snackbar3.addEventListener('dismissed', next);
552
553 snackbar.Snackbar.dismiss(true);
554 }); 563 });
555 }); 564 });
556 565
557 566
558 // Run all registered tests. 567 // Run all registered tests.
559 mocha.run(); 568 mocha.run();
560 }); 569 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/bluetooth_internals/snackbar.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698