cloudinary-video-player
Version:
Cloudinary Video Player
54 lines (53 loc) • 2.62 kB
JavaScript
describe('basic player tests', () => {
beforeEach(async () => {
await page.setViewport({ width: 1280, height: 1300 });
await page.goto('http://localhost:3000/', { waitUntil: 'load' });
await page.evaluate(() => {
Object.defineProperty(HTMLMediaElement.prototype, 'playing', {
get: function() {
return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
}
});
});
}, 10000);
it('video player should load', async () => {
await expect(await page.$eval('video', v => v.id)).toMatch('player_html5_api');
});
it('Video should play', async () => {
jest.setTimeout(35000);
await page.waitForSelector('.vjs-big-play-button');
await page.click('#player > button.vjs-big-play-button');
await page.waitFor(1000);
let playing = await page.$eval('#player video', el => el.playing);
await expect(playing).toBe(true);
});
it('Pause button test', async () => {
jest.setTimeout(35000);
await page.waitForSelector('.vjs-big-play-button');
await page.click('#player > button.vjs-big-play-button');
await page.waitForFunction('player.videojs.readyState() === 4');
await page.waitFor(1000);
let playing = await page.$eval('#player video', el => el.playing);
await expect(playing).toBe(true);
await page.click('#player > .vjs-control-bar > button.vjs-play-control.vjs-control');
await page.waitFor(500);
playing = await page.$eval('#player video', el => el.playing);
await expect(playing).toBe(false);
});
it('Test mute', async () => {
await page.waitForSelector('.vjs-big-play-button');
await page.click('#player > button.vjs-big-play-button');
await page.waitFor(500);
expect(await page.$eval('#player video', v => v.muted)).toBe(true);
await page.click('#player > .vjs-control-bar > .vjs-volume-panel.vjs-control.vjs-volume-panel-horizontal > button');
expect(await page.$eval('#player video', v => v.muted)).toBe(false);
});
it('Test video time', async () => {
await page.waitForSelector('.vjs-big-play-button');
await page.click('#player > button.vjs-big-play-button');
await page.waitFor(2000);
let time = await page.$eval('#player > .vjs-control-bar > .vjs-current-time.vjs-time-control.vjs-control > .vjs-current-time-display', vt => Number(vt.textContent.replace(':', '')));
await page.waitFor(2000);
expect(await page.$eval('#player > .vjs-control-bar > .vjs-current-time.vjs-time-control.vjs-control > .vjs-current-time-display', vt => Number(vt.textContent.replace(':', '')))).toBeGreaterThan(time);
});
});