aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/e2e/src/videos.e2e-spec.ts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2020-08-07 10:25:07 +0200
committerChocobozzz <me@florianbigard.com>2020-08-07 11:12:59 +0200
commit7f90579c04383ca883083548f40782352605d778 (patch)
tree7abeba248d6621b2df324c4def4271b9469288ee /client/e2e/src/videos.e2e-spec.ts
parent5ab7fd9da92463ade6b31d49bdc0f559174b4c57 (diff)
downloadPeerTube-7f90579c04383ca883083548f40782352605d778.tar.gz
PeerTube-7f90579c04383ca883083548f40782352605d778.tar.zst
PeerTube-7f90579c04383ca883083548f40782352605d778.zip
Add playlist embed E2E test
Diffstat (limited to 'client/e2e/src/videos.e2e-spec.ts')
-rw-r--r--client/e2e/src/videos.e2e-spec.ts47
1 files changed, 39 insertions, 8 deletions
diff --git a/client/e2e/src/videos.e2e-spec.ts b/client/e2e/src/videos.e2e-spec.ts
index 75fa89e28..97d1b827c 100644
--- a/client/e2e/src/videos.e2e-spec.ts
+++ b/client/e2e/src/videos.e2e-spec.ts
@@ -2,6 +2,7 @@ import { browser } from 'protractor'
2import { AppPage } from './po/app.po' 2import { AppPage } from './po/app.po'
3import { LoginPage } from './po/login.po' 3import { LoginPage } from './po/login.po'
4import { MyAccountPage } from './po/my-account' 4import { MyAccountPage } from './po/my-account'
5import { PlayerPage } from './po/player.po'
5import { VideoUpdatePage } from './po/video-update.po' 6import { VideoUpdatePage } from './po/video-update.po'
6import { VideoUploadPage } from './po/video-upload.po' 7import { VideoUploadPage } from './po/video-upload.po'
7import { VideoWatchPage } from './po/video-watch.po' 8import { VideoWatchPage } from './po/video-watch.po'
@@ -23,6 +24,7 @@ describe('Videos workflow', () => {
23 let myAccountPage: MyAccountPage 24 let myAccountPage: MyAccountPage
24 let loginPage: LoginPage 25 let loginPage: LoginPage
25 let appPage: AppPage 26 let appPage: AppPage
27 let playerPage: PlayerPage
26 28
27 let videoName = new Date().getTime() + ' video' 29 let videoName = new Date().getTime() + ' video'
28 const video2Name = new Date().getTime() + ' second video' 30 const video2Name = new Date().getTime() + ' second video'
@@ -36,6 +38,7 @@ describe('Videos workflow', () => {
36 myAccountPage = new MyAccountPage() 38 myAccountPage = new MyAccountPage()
37 loginPage = new LoginPage() 39 loginPage = new LoginPage()
38 appPage = new AppPage() 40 appPage = new AppPage()
41 playerPage = new PlayerPage()
39 42
40 if (await isIOS()) { 43 if (await isIOS()) {
41 // iOS does not seem to work with protractor 44 // iOS does not seem to work with protractor
@@ -99,8 +102,8 @@ describe('Videos workflow', () => {
99 it('Should play the video', async () => { 102 it('Should play the video', async () => {
100 videoWatchUrl = await browser.getCurrentUrl() 103 videoWatchUrl = await browser.getCurrentUrl()
101 104
102 await videoWatchPage.playAndPauseVideo(true) 105 await playerPage.playAndPauseVideo(true)
103 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 106 expect(playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
104 }) 107 })
105 108
106 it('Should watch the associated embed video', async () => { 109 it('Should watch the associated embed video', async () => {
@@ -108,8 +111,8 @@ describe('Videos workflow', () => {
108 111
109 await videoWatchPage.goOnAssociatedEmbed() 112 await videoWatchPage.goOnAssociatedEmbed()
110 113
111 await videoWatchPage.playAndPauseVideo(false) 114 await playerPage.playAndPauseVideo(false)
112 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 115 expect(playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
113 116
114 await browser.waitForAngularEnabled(true) 117 await browser.waitForAngularEnabled(true)
115 }) 118 })
@@ -119,8 +122,8 @@ describe('Videos workflow', () => {
119 122
120 await videoWatchPage.goOnP2PMediaLoaderEmbed() 123 await videoWatchPage.goOnP2PMediaLoaderEmbed()
121 124
122 await videoWatchPage.playAndPauseVideo(false) 125 await playerPage.playAndPauseVideo(false)
123 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 126 expect(playerPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
124 127
125 await browser.waitForAngularEnabled(true) 128 await browser.waitForAngularEnabled(true)
126 }) 129 })
@@ -178,19 +181,44 @@ describe('Videos workflow', () => {
178 181
179 await myAccountPage.playPlaylist() 182 await myAccountPage.playPlaylist()
180 183
184 await browser.waitForAngularEnabled(false)
185
181 await videoWatchPage.waitUntilVideoName(video2Name, 20000 * 1000) 186 await videoWatchPage.waitUntilVideoName(video2Name, 20000 * 1000)
187
188 await browser.waitForAngularEnabled(true)
182 }) 189 })
183 190
184 it('Should watch the webtorrent playlist in the embed', async () => { 191 it('Should watch the webtorrent playlist in the embed', async () => {
185 if (await skipIfUploadNotSupported()) return 192 if (await skipIfUploadNotSupported()) return
186 193
194 const accessToken = await browser.executeScript(`return window.localStorage.getItem('access_token');`)
195 const refreshToken = await browser.executeScript(`return window.localStorage.getItem('refresh_token');`)
196
187 await browser.waitForAngularEnabled(false) 197 await browser.waitForAngularEnabled(false)
188 198
189 await myAccountPage.goOnAssociatedPlaylistEmbed() 199 await myAccountPage.goOnAssociatedPlaylistEmbed()
190 200
191 await videoWatchPage.playAndPauseVideo(false) 201 await browser.executeScript(`window.localStorage.setItem('access_token', '${accessToken}');`)
202 await browser.executeScript(`window.localStorage.setItem('refresh_token', '${refreshToken}');`)
203 await browser.executeScript(`window.localStorage.setItem('token_type', 'Bearer');`)
192 204
193 await videoWatchPage.waitUntilVideoName(video2Name, 20000 * 1000) 205 await browser.refresh()
206
207 await playerPage.playVideo()
208
209 await playerPage.waitUntilPlaylistInfo('2/2')
210
211 await browser.waitForAngularEnabled(true)
212 })
213
214 it('Should watch the HLS playlist in the embed', async () => {
215 await browser.waitForAngularEnabled(false)
216
217 await videoWatchPage.goOnP2PMediaLoaderPlaylistEmbed()
218
219 await playerPage.playVideo()
220
221 await playerPage.waitUntilPlaylistInfo('2/2')
194 222
195 await browser.waitForAngularEnabled(true) 223 await browser.waitForAngularEnabled(true)
196 }) 224 })
@@ -198,6 +226,9 @@ describe('Videos workflow', () => {
198 it('Should delete the video 2', async () => { 226 it('Should delete the video 2', async () => {
199 if (await skipIfUploadNotSupported()) return 227 if (await skipIfUploadNotSupported()) return
200 228
229 // Go to the dev website
230 await browser.get(videoWatchUrl)
231
201 await myAccountPage.navigateToMyVideos() 232 await myAccountPage.navigateToMyVideos()
202 233
203 await myAccountPage.removeVideo(video2Name) 234 await myAccountPage.removeVideo(video2Name)