From 12d6b873cd4c5eb8c4fd298885e0c7fa6deb3756 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 2 Sep 2021 08:57:59 +0200 Subject: Improve e2e workflow and add doc --- client/e2e/src/po/player.po.ts | 19 ++++++++----------- client/e2e/src/po/video-watch.po.ts | 9 +++------ client/e2e/src/urls.ts | 10 ++++++++++ client/e2e/src/videos.e2e-spec.ts | 9 +++++---- client/e2e/wdio.main.conf.ts | 4 ++-- 5 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 client/e2e/src/urls.ts (limited to 'client/e2e') diff --git a/client/e2e/src/po/player.po.ts b/client/e2e/src/po/player.po.ts index 9d6e21009..372e8ab20 100644 --- a/client/e2e/src/po/player.po.ts +++ b/client/e2e/src/po/player.po.ts @@ -5,13 +5,12 @@ export class PlayerPage { getWatchVideoPlayerCurrentTime () { const elem = $('video') - if (isIOS()) { - return elem.getAttribute('currentTime') - .then(t => parseInt(t, 10)) - .then(t => Math.round(t)) - } + const p = isIOS() + ? elem.getAttribute('currentTime') + : elem.getProperty('currentTime') - return elem.getProperty('currentTime') + return p.then(t => parseInt(t + '', 10)) + .then(t => Math.ceil(t)) } waitUntilPlaylistInfo (text: string, maxTime: number) { @@ -26,7 +25,7 @@ export class PlayerPage { }) } - async playAndPauseVideo (isAutoplay: boolean) { + async playAndPauseVideo (isAutoplay: boolean, waitUntilSec: number) { const videojsElem = () => $('div.video-js') await videojsElem().waitForExist() @@ -43,10 +42,8 @@ export class PlayerPage { await browserSleep(2000) await browser.waitUntil(async () => { - return !await $('.vjs-loading-spinner').isDisplayedInViewport() - }, { timeout: 20 * 1000 }) - - await browserSleep(4000) + return (await this.getWatchVideoPlayerCurrentTime()) >= 2 + }) await videojsElem().click() } diff --git a/client/e2e/src/po/video-watch.po.ts b/client/e2e/src/po/video-watch.po.ts index 01061d5d4..c07f4b25f 100644 --- a/client/e2e/src/po/video-watch.po.ts +++ b/client/e2e/src/po/video-watch.po.ts @@ -1,3 +1,4 @@ +import { FIXTURE_URLS } from '../urls' import { browserSleep, go } from '../utils' export class VideoWatchPage { @@ -50,15 +51,11 @@ export class VideoWatchPage { } goOnP2PMediaLoaderEmbed () { - return go( - 'https://peertube2.cpy.re/videos/embed/969bf103-7818-43b5-94a0-de159e13de50' - ) + return go(FIXTURE_URLS.HLS_EMBED) } goOnP2PMediaLoaderPlaylistEmbed () { - return go( - 'https://peertube2.cpy.re/video-playlists/embed/73804a40-da9a-40c2-b1eb-2c6d9eec8f0a' - ) + return go(FIXTURE_URLS.HLS_PLAYLIST_EMBED) } async clickOnVideo (videoName: string) { diff --git a/client/e2e/src/urls.ts b/client/e2e/src/urls.ts new file mode 100644 index 000000000..664c65931 --- /dev/null +++ b/client/e2e/src/urls.ts @@ -0,0 +1,10 @@ +const FIXTURE_URLS = { + WEBTORRENT_VIDEO: 'https://peertube2.cpy.re/w/122d093a-1ede-43bd-bd34-59d2931ffc5e', + + HLS_EMBED: 'https://peertube2.cpy.re/videos/embed/969bf103-7818-43b5-94a0-de159e13de50', + HLS_PLAYLIST_EMBED: 'https://peertube2.cpy.re/video-playlists/embed/73804a40-da9a-40c2-b1eb-2c6d9eec8f0a' +} + +export { + FIXTURE_URLS +} diff --git a/client/e2e/src/videos.e2e-spec.ts b/client/e2e/src/videos.e2e-spec.ts index 7f7c814e1..e09e8c675 100644 --- a/client/e2e/src/videos.e2e-spec.ts +++ b/client/e2e/src/videos.e2e-spec.ts @@ -4,6 +4,7 @@ import { PlayerPage } from './po/player.po' import { VideoUpdatePage } from './po/video-update.po' import { VideoUploadPage } from './po/video-upload.po' import { VideoWatchPage } from './po/video-watch.po' +import { FIXTURE_URLS } from './urls' import { browserSleep, go, isIOS, isMobileDevice, isSafari } from './utils' function isUploadUnsupported () { @@ -91,7 +92,7 @@ describe('Videos workflow', () => { let videoNameToExcept = videoName if (isMobileDevice() || isSafari()) { - await go('https://peertube2.cpy.re/w/122d093a-1ede-43bd-bd34-59d2931ffc5e') + await go(FIXTURE_URLS.WEBTORRENT_VIDEO) videoNameToExcept = 'E2E tests' } else { await videoWatchPage.clickOnVideo(videoName) @@ -103,21 +104,21 @@ describe('Videos workflow', () => { it('Should play the video', async () => { videoWatchUrl = await browser.getUrl() - await playerPage.playAndPauseVideo(true) + await playerPage.playAndPauseVideo(true, 2) expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) }) it('Should watch the associated embed video', async () => { await videoWatchPage.goOnAssociatedEmbed() - await playerPage.playAndPauseVideo(false) + await playerPage.playAndPauseVideo(false, 2) expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) }) it('Should watch the p2p media loader embed video', async () => { await videoWatchPage.goOnP2PMediaLoaderEmbed() - await playerPage.playAndPauseVideo(false) + await playerPage.playAndPauseVideo(false, 2) expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) }) diff --git a/client/e2e/wdio.main.conf.ts b/client/e2e/wdio.main.conf.ts index e2ef99967..7f4c7f7ee 100644 --- a/client/e2e/wdio.main.conf.ts +++ b/client/e2e/wdio.main.conf.ts @@ -52,7 +52,7 @@ export const config = { // // If you only want to run your tests until a specific amount of tests have failed use // bail (default is 0 - don't bail, run all tests). - bail: 1, + bail: 0, // // Set a base URL in order to shorten url command calls. If your `url` parameter starts // with `/`, the base url gets prepended, not including the path portion of your baseUrl. @@ -79,7 +79,7 @@ export const config = { framework: 'mocha', // // The number of times to retry the entire specfile when it fails as a whole - // specFileRetries: 1, + specFileRetries: 2, // // Delay in seconds between the spec file retry attempts // specFileRetriesDelay: 0, -- cgit v1.2.3