Skip to content

Commit

Permalink
Add some play pause tests
Browse files Browse the repository at this point in the history
  • Loading branch information
peaBerberian committed Jun 13, 2023
1 parent 0218f54 commit 5a15abd
Showing 1 changed file with 159 additions and 0 deletions.
159 changes: 159 additions & 0 deletions tests/integration/utils/launch_tests_for_content.js
Expand Up @@ -1295,16 +1295,36 @@ export default function launchTestsForContent(manifestInfos) {
});

describe("play", () => {
let pauseEventsSent = 0;
let playEventsSent = 0;
beforeEach(() => {
player.addEventListener("pause", () => {
pauseEventsSent++;
});
player.addEventListener("play", () => {
playEventsSent++;
});
});

afterEach(() => {
pauseEventsSent = 0;
playEventsSent = 0;
});

it("should begin to play if LOADED", async () => {
player.loadVideo({
url: manifestInfos.url,
transport,
});
await waitForLoadedStateAfterLoadVideo(player);
expect(player.getPlayerState()).to.equal("LOADED");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(0);
player.play();
await sleep(10);
expect(player.getPlayerState()).to.equal("PLAYING");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(1);
});

it("should resume if paused", async () => {
Expand All @@ -1316,16 +1336,38 @@ export default function launchTestsForContent(manifestInfos) {
await waitForLoadedStateAfterLoadVideo(player);
await sleep(100);
expect(player.getPlayerState()).to.equal("PLAYING");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(0);
player.pause();
await sleep(100);
expect(player.getPlayerState()).to.equal("PAUSED");
expect(pauseEventsSent).to.equal(1);
expect(playEventsSent).to.equal(0);
player.play();
await sleep(100);
expect(player.getPlayerState()).to.equal("PLAYING");
expect(pauseEventsSent).to.equal(1);
expect(playEventsSent).to.equal(1);
});
});

describe("pause", () => {
let pauseEventsSent = 0;
let playEventsSent = 0;
beforeEach(() => {
player.addEventListener("pause", () => {
pauseEventsSent++;
});
player.addEventListener("play", () => {
playEventsSent++;
});
});

afterEach(() => {
pauseEventsSent = 0;
playEventsSent = 0;
});

it("should have no effect when LOADED", async () => {
await tryTestMultipleTimes(
async function runTest(cancelTest) {
Expand All @@ -1352,6 +1394,8 @@ export default function launchTestsForContent(manifestInfos) {
await sleep(10);

expect(player.getPlayerState()).to.equal("LOADED");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(0);
},
3,
function cleanUp() {
Expand All @@ -1368,9 +1412,12 @@ export default function launchTestsForContent(manifestInfos) {
});
await waitForLoadedStateAfterLoadVideo(player);
expect(player.getPlayerState()).to.equal("PLAYING");
expect(pauseEventsSent).to.equal(0);
player.pause();
await sleep(100);
expect(player.getPlayerState()).to.equal("PAUSED");
expect(pauseEventsSent).to.equal(1);
expect(playEventsSent).to.equal(0);
});

it("should do nothing if already paused", async () => {
Expand All @@ -1381,12 +1428,17 @@ export default function launchTestsForContent(manifestInfos) {
});
await waitForLoadedStateAfterLoadVideo(player);
expect(player.getPlayerState()).to.equal("PLAYING");
expect(pauseEventsSent).to.equal(0);
player.pause();
await sleep(100);
expect(player.getPlayerState()).to.equal("PAUSED");
expect(pauseEventsSent).to.equal(1);
expect(playEventsSent).to.equal(0);
player.pause();
await sleep(100);
expect(player.getPlayerState()).to.equal("PAUSED");
expect(pauseEventsSent).to.equal(1);
expect(playEventsSent).to.equal(0);
});
});

Expand All @@ -1403,6 +1455,113 @@ export default function launchTestsForContent(manifestInfos) {
player.seekTo(minimumPosition + 50);
expect(player.getPosition()).to.be.closeTo(minimumPosition + 50, 0.5);
});

it("should conserve pause if previously paused", async () => {
let pauseEventsSent = 0;
let playEventsSent = 0;
player.addEventListener("pause", () => {
pauseEventsSent++;
});
player.addEventListener("play", () => {
playEventsSent++;
});
player.loadVideo({
url: manifestInfos.url,
transport,
});
await waitForLoadedStateAfterLoadVideo(player);
player.seekTo(minimumPosition + 50);
await waitForState(player, "PAUSED");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(0);
});

it("should still play if previously playing", async () => {
let pauseEventsSent = 0;
let playEventsSent = 0;
let nbPausedStates = 0;
player.addEventListener("pause", () => {
pauseEventsSent++;
});
player.addEventListener("play", () => {
playEventsSent++;
});
player.addEventListener("playerStateChange", (state) => {
if (state === "PAUSED") {
nbPausedStates++;
}
});
player.loadVideo({
url: manifestInfos.url,
transport,
autoPlay: true,
});
await waitForLoadedStateAfterLoadVideo(player);
player.seekTo(minimumPosition + 50);
await waitForState(player, "PLAYING");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(0);
expect(nbPausedStates).to.equal(0);
});

it("should be able to pause while seeking", async () => {
let pauseEventsSent = 0;
let playEventsSent = 0;
let nbPausedStates = 0;
player.addEventListener("pause", () => {
pauseEventsSent++;
});
player.addEventListener("play", () => {
playEventsSent++;
});
player.addEventListener("playerStateChange", (state) => {
if (state === "PAUSED") {
nbPausedStates++;
}
});
player.loadVideo({
url: manifestInfos.url,
transport,
autoPlay: true,
});
await waitForLoadedStateAfterLoadVideo(player);
player.seekTo(minimumPosition + 50);
await sleep(0);
player.pause();
await waitForState(player, "PAUSED");
expect(pauseEventsSent).to.equal(1);
expect(playEventsSent).to.equal(0);
expect(nbPausedStates).to.equal(1);
});

it("should be able to play while seeking", async () => {
let pauseEventsSent = 0;
let playEventsSent = 0;
let nbPlayingStates = 0;
player.addEventListener("pause", () => {
pauseEventsSent++;
});
player.addEventListener("play", () => {
playEventsSent++;
});
player.addEventListener("playerStateChange", (state) => {
if (state === "PLAYING") {
nbPlayingStates++;
}
});
player.loadVideo({
url: manifestInfos.url,
transport,
});
await waitForLoadedStateAfterLoadVideo(player);
player.seekTo(minimumPosition + 50);
await sleep(0);
player.play();
await waitForState(player, "PLAYING");
expect(pauseEventsSent).to.equal(0);
expect(playEventsSent).to.equal(1);
expect(nbPlayingStates).to.equal(1);
});
});

describe("getVolume", () => {
Expand Down

0 comments on commit 5a15abd

Please sign in to comment.