aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/e2e
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-09-02 08:57:59 +0200
committerChocobozzz <me@florianbigard.com>2021-09-02 09:07:42 +0200
commit12d6b873cd4c5eb8c4fd298885e0c7fa6deb3756 (patch)
tree1abc21b305242e1d5bacefc99c2352b34396a5ab /client/e2e
parent6527eb0ccf823b5eac547c90066d3bd693094b2c (diff)
downloadPeerTube-12d6b873cd4c5eb8c4fd298885e0c7fa6deb3756.tar.gz
PeerTube-12d6b873cd4c5eb8c4fd298885e0c7fa6deb3756.tar.zst
PeerTube-12d6b873cd4c5eb8c4fd298885e0c7fa6deb3756.zip
Improve e2e workflow and add doc
Diffstat (limited to 'client/e2e')
-rw-r--r--client/e2e/src/po/player.po.ts19
-rw-r--r--client/e2e/src/po/video-watch.po.ts9
-rw-r--r--client/e2e/src/urls.ts10
-rw-r--r--client/e2e/src/videos.e2e-spec.ts9
-rw-r--r--client/e2e/wdio.main.conf.ts4
5 files changed, 28 insertions, 23 deletions
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 {
5 getWatchVideoPlayerCurrentTime () { 5 getWatchVideoPlayerCurrentTime () {
6 const elem = $('video') 6 const elem = $('video')
7 7
8 if (isIOS()) { 8 const p = isIOS()
9 return elem.getAttribute('currentTime') 9 ? elem.getAttribute('currentTime')
10 .then(t => parseInt(t, 10)) 10 : elem.getProperty('currentTime')
11 .then(t => Math.round(t))
12 }
13 11
14 return elem.getProperty('currentTime') 12 return p.then(t => parseInt(t + '', 10))
13 .then(t => Math.ceil(t))
15 } 14 }
16 15
17 waitUntilPlaylistInfo (text: string, maxTime: number) { 16 waitUntilPlaylistInfo (text: string, maxTime: number) {
@@ -26,7 +25,7 @@ export class PlayerPage {
26 }) 25 })
27 } 26 }
28 27
29 async playAndPauseVideo (isAutoplay: boolean) { 28 async playAndPauseVideo (isAutoplay: boolean, waitUntilSec: number) {
30 const videojsElem = () => $('div.video-js') 29 const videojsElem = () => $('div.video-js')
31 30
32 await videojsElem().waitForExist() 31 await videojsElem().waitForExist()
@@ -43,10 +42,8 @@ export class PlayerPage {
43 await browserSleep(2000) 42 await browserSleep(2000)
44 43
45 await browser.waitUntil(async () => { 44 await browser.waitUntil(async () => {
46 return !await $('.vjs-loading-spinner').isDisplayedInViewport() 45 return (await this.getWatchVideoPlayerCurrentTime()) >= 2
47 }, { timeout: 20 * 1000 }) 46 })
48
49 await browserSleep(4000)
50 47
51 await videojsElem().click() 48 await videojsElem().click()
52 } 49 }
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 @@
1import { FIXTURE_URLS } from '../urls'
1import { browserSleep, go } from '../utils' 2import { browserSleep, go } from '../utils'
2 3
3export class VideoWatchPage { 4export class VideoWatchPage {
@@ -50,15 +51,11 @@ export class VideoWatchPage {
50 } 51 }
51 52
52 goOnP2PMediaLoaderEmbed () { 53 goOnP2PMediaLoaderEmbed () {
53 return go( 54 return go(FIXTURE_URLS.HLS_EMBED)
54 'https://peertube2.cpy.re/videos/embed/969bf103-7818-43b5-94a0-de159e13de50'
55 )
56 } 55 }
57 56
58 goOnP2PMediaLoaderPlaylistEmbed () { 57 goOnP2PMediaLoaderPlaylistEmbed () {
59 return go( 58 return go(FIXTURE_URLS.HLS_PLAYLIST_EMBED)
60 'https://peertube2.cpy.re/video-playlists/embed/73804a40-da9a-40c2-b1eb-2c6d9eec8f0a'
61 )
62 } 59 }
63 60
64 async clickOnVideo (videoName: string) { 61 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 @@
1const FIXTURE_URLS = {
2 WEBTORRENT_VIDEO: 'https://peertube2.cpy.re/w/122d093a-1ede-43bd-bd34-59d2931ffc5e',
3
4 HLS_EMBED: 'https://peertube2.cpy.re/videos/embed/969bf103-7818-43b5-94a0-de159e13de50',
5 HLS_PLAYLIST_EMBED: 'https://peertube2.cpy.re/video-playlists/embed/73804a40-da9a-40c2-b1eb-2c6d9eec8f0a'
6}
7
8export {
9 FIXTURE_URLS
10}
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'
4import { VideoUpdatePage } from './po/video-update.po' 4import { VideoUpdatePage } from './po/video-update.po'
5import { VideoUploadPage } from './po/video-upload.po' 5import { VideoUploadPage } from './po/video-upload.po'
6import { VideoWatchPage } from './po/video-watch.po' 6import { VideoWatchPage } from './po/video-watch.po'
7import { FIXTURE_URLS } from './urls'
7import { browserSleep, go, isIOS, isMobileDevice, isSafari } from './utils' 8import { browserSleep, go, isIOS, isMobileDevice, isSafari } from './utils'
8 9
9function isUploadUnsupported () { 10function isUploadUnsupported () {
@@ -91,7 +92,7 @@ describe('Videos workflow', () => {
91 let videoNameToExcept = videoName 92 let videoNameToExcept = videoName
92 93
93 if (isMobileDevice() || isSafari()) { 94 if (isMobileDevice() || isSafari()) {
94 await go('https://peertube2.cpy.re/w/122d093a-1ede-43bd-bd34-59d2931ffc5e') 95 await go(FIXTURE_URLS.WEBTORRENT_VIDEO)
95 videoNameToExcept = 'E2E tests' 96 videoNameToExcept = 'E2E tests'
96 } else { 97 } else {
97 await videoWatchPage.clickOnVideo(videoName) 98 await videoWatchPage.clickOnVideo(videoName)
@@ -103,21 +104,21 @@ describe('Videos workflow', () => {
103 it('Should play the video', async () => { 104 it('Should play the video', async () => {
104 videoWatchUrl = await browser.getUrl() 105 videoWatchUrl = await browser.getUrl()
105 106
106 await playerPage.playAndPauseVideo(true) 107 await playerPage.playAndPauseVideo(true, 2)
107 expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 108 expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
108 }) 109 })
109 110
110 it('Should watch the associated embed video', async () => { 111 it('Should watch the associated embed video', async () => {
111 await videoWatchPage.goOnAssociatedEmbed() 112 await videoWatchPage.goOnAssociatedEmbed()
112 113
113 await playerPage.playAndPauseVideo(false) 114 await playerPage.playAndPauseVideo(false, 2)
114 expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 115 expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
115 }) 116 })
116 117
117 it('Should watch the p2p media loader embed video', async () => { 118 it('Should watch the p2p media loader embed video', async () => {
118 await videoWatchPage.goOnP2PMediaLoaderEmbed() 119 await videoWatchPage.goOnP2PMediaLoaderEmbed()
119 120
120 await playerPage.playAndPauseVideo(false) 121 await playerPage.playAndPauseVideo(false, 2)
121 expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 122 expect(await playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
122 }) 123 })
123 124
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 = {
52 // 52 //
53 // If you only want to run your tests until a specific amount of tests have failed use 53 // If you only want to run your tests until a specific amount of tests have failed use
54 // bail (default is 0 - don't bail, run all tests). 54 // bail (default is 0 - don't bail, run all tests).
55 bail: 1, 55 bail: 0,
56 // 56 //
57 // Set a base URL in order to shorten url command calls. If your `url` parameter starts 57 // Set a base URL in order to shorten url command calls. If your `url` parameter starts
58 // with `/`, the base url gets prepended, not including the path portion of your baseUrl. 58 // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
@@ -79,7 +79,7 @@ export const config = {
79 framework: 'mocha', 79 framework: 'mocha',
80 // 80 //
81 // The number of times to retry the entire specfile when it fails as a whole 81 // The number of times to retry the entire specfile when it fails as a whole
82 // specFileRetries: 1, 82 specFileRetries: 2,
83 // 83 //
84 // Delay in seconds between the spec file retry attempts 84 // Delay in seconds between the spec file retry attempts
85 // specFileRetriesDelay: 0, 85 // specFileRetriesDelay: 0,