blob: d733754bed8daeaab72e87a8ce8247a00a016f41 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
/**
* Confirms that the play button toggles play state and it's labels.
* @return {Promise} Promise to be fulfilled with on success.
*/
testcase.togglePlayState = function() {
var openAudio = launch('local', 'downloads', [ENTRIES.beautiful]);
var appId;
return openAudio.then(function(args) {
appId = args[0];
}).then(function() {
// Audio player should start playing automatically.
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player[playing]');
}).then(function() {
// While playing, the play/pause button should have 'Pause' label.
return remoteCallAudioPlayer.waitForElement(
appId, ['#play[aria-label="Pause"]']);
}).then(function() {
// Clicking the pause button should change the playback state to pause.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#play']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player:not([playing])');
}).then(function() {
// ... and the play/pause button should have 'Play' label.
return remoteCallAudioPlayer.waitForElement(
appId, ['#play[aria-label="Play"]']);
});
};
/**
* Confirms that the default volume is 50 and volume button mutes/unmutes audio.
* @return {Promise} Promise to be fulfilled with on success.
*/
testcase.changeVolumeLevel = function() {
var openAudio = launch('local', 'downloads', [ENTRIES.beautiful]);
var appId;
return openAudio.then(function(args) {
appId = args[0];
}).then(function() {
// The default volume level should be 50.
return remoteCallAudioPlayer.waitForElement(
appId, ['control-panel[volume="50"]']);
}).then(function() {
// Clicking volume button should mute the player.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#volumeButton']);
}).then(function() {
return Promise.all([
remoteCallAudioPlayer.waitForElement(
appId, ['control-panel[volume="0"]']),
remoteCallAudioPlayer.waitForElement(
appId, ['#volumeButton[aria-label="Unmute"]'])
]);
}).then(function() {
// Clicking volume button again should restore volume.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#volumeButton']);
}).then(function() {
return Promise.all([
remoteCallAudioPlayer.waitForElement(
appId, ['control-panel[volume="50"]']),
remoteCallAudioPlayer.waitForElement(
appId, ['#volumeButton[aria-label="Mute"]'])
]);
});
};
/**
* Confirm that clicking "Next" and track on playlist change the current track
* and play state correctly.
* @return {Promise} Promise to be fulfilled with on success.
*/
testcase.changeTracks = function() {
var openAudio = launch('local', 'downloads',
[ENTRIES.beautiful, ENTRIES.newlyAdded]);
var appId;
return openAudio.then(function(args) {
appId = args[0];
}).then(function() {
// While playing, the play/pause button should have 'Pause' label.
return remoteCallAudioPlayer.waitForElement(
appId, ['#play[aria-label="Pause"]']);
}).then(function() {
// Clicking the pause button should change the playback state to pause.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#play']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player:not([playing])');
}).then(function() {
// The first track should be active.
return remoteCallAudioPlayer.waitForElement(
appId, ['.track[index="0"][active]']);
}).then(function() {
// Clicking next button should activate the second track and start playing.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#next']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, ['.track[index="1"][active]']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player[playing]');
}).then(function() {
// Pause to prepare for remaining steps.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#play']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player:not([playing])');
}).then(function() {
// Clicking playlist button should expand track list.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#playList']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'track-list[expanded]');
}).then(function() {
// Clicking the first track should make it active and start playing it.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['.track[index="0"]']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, '.track[index="0"][active]');
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player[playing]');
}).then(function() {
// Pause to prepare for remaining steps.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['#play']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player:not([playing])');
}).then(function() {
// Clicking the play icon on the second should make it active, and start
// playing.
return remoteCallAudioPlayer.callRemoteTestUtil(
'fakeMouseClick', appId, ['.track[index="1"] .icon']);
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, '.track[index="1"][active]');
}).then(function() {
return remoteCallAudioPlayer.waitForElement(
appId, 'audio-player[playing]');
});
};