From 961f9ea9d61d3b6a474bb7919cdfe171b8975da7 Mon Sep 17 00:00:00 2001 From: yoshiki Date: Fri, 26 Jun 2015 05:00:05 -0700 Subject: [Files.app tests] Combine methods commonly used among tests The utility methods checkIfNoErrorsOccured() and testPromise() are commonly used among some tests, so this patch combines them into one. This patch is reland of https://crrev.com/3e38f58672a5ff43b94d4cdbe0a335694edd0635 BUG=none TEST=browser_tests TBR=fukino@chromium.org Review URL: https://codereview.chromium.org/1205413002 Cr-Commit-Position: refs/heads/master@{#336353} --- .../integration_tests/audio_player/background.js | 30 +--------------------- .../integration_tests/file_manager/background.js | 16 +++--------- .../integration_tests/gallery/background.js | 29 +-------------------- ui/file_manager/integration_tests/test_util.js | 30 ++++++++++++++++++++++ .../integration_tests/video_player/background.js | 30 +--------------------- 5 files changed, 37 insertions(+), 98 deletions(-) (limited to 'ui') diff --git a/ui/file_manager/integration_tests/audio_player/background.js b/ui/file_manager/integration_tests/audio_player/background.js index 757bbf3..4c101c6 100644 --- a/ui/file_manager/integration_tests/audio_player/background.js +++ b/ui/file_manager/integration_tests/audio_player/background.js @@ -52,34 +52,6 @@ function launch(testVolumeName, volumeType, entries, opt_selected) { } /** - * Verifies if there are no Javascript errors in any of the app windows. - * @param {function()} Completion callback. - */ -function checkIfNoErrorsOccured(callback) { - var countPromise = remoteCallAudioPlayer.callRemoteTestUtil( - 'getErrorCount', null, []); - countPromise.then(function(count) { - chrome.test.assertEq(0, count, 'The error count is not 0.'); - callback(); - }); -} - -/** - * Adds check of chrome.test to the end of the given promise. - * @param {Promise} promise Promise. - */ -function testPromise(promise) { - promise.then(function() { - return new Promise(checkIfNoErrorsOccured); - }).then(chrome.test.callbackPass(function() { - // The callbacPass is necessary to avoid prematurely finishing tests. - // Don't put chrome.test.succeed() here to avoid doubled success log. - }), function(error) { - chrome.test.fail(error.stack || error); - }); -}; - -/** * Namespace for test cases. */ var testcase = {}; @@ -117,7 +89,7 @@ window.addEventListener('load', function() { // Specify the name of test to the test system. targetTest.generatedName = testCaseName; chrome.test.runTests([function() { - return testPromise(targetTest()); + return testPromiseAndApps(targetTest(), [remoteCallAudioPlayer]); }]); } ]; diff --git a/ui/file_manager/integration_tests/file_manager/background.js b/ui/file_manager/integration_tests/file_manager/background.js index 8448bd8..bbbafce 100644 --- a/ui/file_manager/integration_tests/file_manager/background.js +++ b/ui/file_manager/integration_tests/file_manager/background.js @@ -45,14 +45,9 @@ var videoPlayerApp = new RemoteCall(VIDEO_PLAYER_APP_ID); * @param {Promise} promise Promise. */ function testPromise(promise) { - promise.then(function() { - return new Promise(checkIfNoErrorsOccured); - }).then(chrome.test.callbackPass(function() { - // The callbacPass is necessary to avoid prematurely finishing tests. - // Don't put chrome.test.succeed() here to avoid doubled success log. - }), function(error) { - chrome.test.fail(error.stack || error); - }); + return testPromiseAndApps( + promise, + [remoteCall, galleryApp, audioPlayerApp, videoPlayerApp]); }; /** @@ -338,10 +333,7 @@ function setupAndWaitUntilReady(appState, initialRoot, opt_callback) { * @param {function()} Completion callback. */ function checkIfNoErrorsOccured(callback) { - remoteCall.callRemoteTestUtil('getErrorCount', null, [], function(count) { - chrome.test.assertEq(0, count, 'The error count is not 0.'); - callback(); - }); + checkIfNoErrorsOccuredOnApp(remoteCall, callback); } /** diff --git a/ui/file_manager/integration_tests/gallery/background.js b/ui/file_manager/integration_tests/gallery/background.js index f507799..ffaba3d 100644 --- a/ui/file_manager/integration_tests/gallery/background.js +++ b/ui/file_manager/integration_tests/gallery/background.js @@ -54,33 +54,6 @@ function launch(testVolumeName, volumeType, entries, opt_selected) { } /** - * Verifies if there are no Javascript errors in any of the app windows. - * @param {function()} Completion callback. - */ -function checkIfNoErrorsOccured(callback) { - var countPromise = gallery.callRemoteTestUtil('getErrorCount', null, []); - countPromise.then(function(count) { - chrome.test.assertEq(0, count, 'The error count is not 0.'); - callback(); - }); -} - -/** - * Adds check of chrome.test to the end of the given promise. - * @param {Promise} promise Promise. - */ -function testPromise(promise) { - promise.then(function() { - return new Promise(checkIfNoErrorsOccured); - }).then(chrome.test.callbackPass(function() { - // The callbacPass is necessary to avoid prematurely finishing tests. - // Don't put chrome.test.succeed() here to avoid doubled success log. - }), function(error) { - chrome.test.fail(error.stack || error); - }); -}; - -/** * Namespace for test cases. */ var testcase = {}; @@ -118,7 +91,7 @@ window.addEventListener('load', function() { // Specify the name of test to the test system. targetTest.generatedName = testCaseName; chrome.test.runTests([function() { - return testPromise(targetTest()); + return testPromiseAndApps(targetTest(), [gallery]); }]); } ]; diff --git a/ui/file_manager/integration_tests/test_util.js b/ui/file_manager/integration_tests/test_util.js index 2b586a6..2db86ff 100644 --- a/ui/file_manager/integration_tests/test_util.js +++ b/ui/file_manager/integration_tests/test_util.js @@ -27,6 +27,36 @@ function wait(time) { } /** + * Verifies if there are no Javascript errors in any of the app windows. + * @param {function()} Completion callback. + */ +function checkIfNoErrorsOccuredOnApp(app, callback) { + var countPromise = app.callRemoteTestUtil('getErrorCount', null, []); + countPromise.then(function(count) { + chrome.test.assertEq(0, count, 'The error count is not 0.'); + callback(); + }); +} + +/** + * Adds check of chrome.test to the end of the given promise. + * @param {Promise} promise Promise. + */ +function testPromiseAndApps(promise, apps) { + promise.then(function() { + return Promise.all( + apps.map(function(app) { + return new Promise(checkIfNoErrorsOccuredOnApp.bind(null, app)); + })); + }).then(chrome.test.callbackPass(function() { + // The callbacPass is necessary to avoid prematurely finishing tests. + // Don't put chrome.test.succeed() here to avoid doubled success log. + }), function(error) { + chrome.test.fail(error.stack || error); + }); +}; + +/** * Interval milliseconds between checks of repeatUntil. * @type {number} * @const diff --git a/ui/file_manager/integration_tests/video_player/background.js b/ui/file_manager/integration_tests/video_player/background.js index f1caec0..0a541b1 100644 --- a/ui/file_manager/integration_tests/video_player/background.js +++ b/ui/file_manager/integration_tests/video_player/background.js @@ -75,34 +75,6 @@ function openSingleVideo(volumeName, volumeType, entry) { }; /** - * Verifies if there are no Javascript errors in any of the app windows. - * @param {function()} Completion callback. - */ -function checkIfNoErrorsOccured(callback) { - var countPromise = remoteCallVideoPlayer.callRemoteTestUtil( - 'getErrorCount', null, []); - countPromise.then(function(count) { - chrome.test.assertEq(0, count, 'The error count is not 0.'); - callback(); - }); -} - -/** - * Adds check of chrome.test to the end of the given promise. - * @param {Promise} promise Promise. - */ -function testPromise(promise) { - promise.then(function() { - return new Promise(checkIfNoErrorsOccured); - }).then(chrome.test.callbackPass(function() { - // The callbacPass is necessary to avoid prematurely finishing tests. - // Don't put chrome.test.succeed() here to avoid doubled success log. - }), function(error) { - chrome.test.fail(error.stack || error); - }); -}; - -/** * Namespace for test cases. */ var testcase = {}; @@ -140,7 +112,7 @@ window.addEventListener('load', function() { // Specify the name of test to the test system. targetTest.generatedName = testCaseName; chrome.test.runTests([function() { - return testPromise(targetTest()); + return testPromiseAndApps(targetTest(), [remoteCallVideoPlayer]); }]); } ]; -- cgit v1.1