blob: 6a8f326eec9b58bac4fe09b003e0f14fb7333934 [file] [log] [blame]
// Copyright 2020 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.
import {click, getBrowserAndPages, goToResource, waitFor, waitForFunction, waitForMany} from '../../shared/helper.js';
export async function playMediaFile(media: string) {
const {target} = getBrowserAndPages();
await goToResource(`media/${media}`);
// Need to click play manually - autoplay policy prevents it otherwise.
await target.evaluate(() => new Promise<void>(resolve => {
const videoElement = document.getElementsByName('media')[0] as HTMLVideoElement;
videoElement.addEventListener('play', () => {
resolve();
}, {once: true});
// Just in case autoplay started before we could attach an event listener.
if (!videoElement.paused || videoElement.readyState > 2) {
resolve();
} else {
void videoElement.play();
}
}));
}
export async function getPlayerButton() {
return await waitFor('.player-entry-player-title');
}
export async function getPlayerErrors(count: number) {
await click('.player-entry-player-title');
await click('#tab-messages');
return await waitForMany('.media-message-error', count);
}
export async function getPlayerButtonText() {
const playerEntry = await getPlayerButton();
return await playerEntry.evaluate(element => element.textContent as string);
}
export async function waitForPlayerButtonTexts(count: number) {
return waitForFunction(async () => {
return await waitForMany('.player-entry-player-title', count);
});
}