Optimize SQL queries
[oweals/peertube.git] / client / e2e / src / videos.e2e-spec.ts
1 import { VideoWatchPage } from './po/video-watch.po'
2 import { VideoUploadPage } from './po/video-upload.po'
3 import { LoginPage } from './po/login.po'
4 import { browser } from 'protractor'
5
6 describe('Videos workflow', () => {
7   let videoWatchPage: VideoWatchPage
8   let pageUploadPage: VideoUploadPage
9   let loginPage: LoginPage
10   const videoName = new Date().getTime() + ' video'
11   let isMobileDevice = false
12   let isSafari = false
13
14   beforeEach(async () => {
15     browser.waitForAngularEnabled(false)
16
17     videoWatchPage = new VideoWatchPage()
18     pageUploadPage = new VideoUploadPage()
19     loginPage = new LoginPage()
20
21     const caps = await browser.getCapabilities()
22     isMobileDevice = caps.get('realMobile') === 'true' || caps.get('realMobile') === true
23     isSafari = caps.get('browserName') && caps.get('browserName').toLowerCase() === 'safari'
24   })
25
26   it('Should log in', () => {
27     if (isMobileDevice || isSafari) {
28       console.log('Skipping because we are on a real device or Safari and BrowserStack does not support file upload.')
29       return
30     }
31
32     return loginPage.loginAsRootUser()
33   })
34
35   it('Should upload a video', async () => {
36     if (isMobileDevice || isSafari) {
37       console.log('Skipping because we are on a real device or Safari and BrowserStack does not support file upload.')
38       return
39     }
40
41     await pageUploadPage.navigateTo()
42
43     await pageUploadPage.uploadVideo()
44     return pageUploadPage.validSecondUploadStep(videoName)
45   })
46
47   it('Should list the video', async () => {
48     await videoWatchPage.goOnVideosList(isMobileDevice, isSafari)
49
50     if (isMobileDevice || isSafari) {
51       console.log('Skipping because we are on a real device or Safari and BrowserStack does not support file upload.')
52       return
53     }
54
55     const videoNames = videoWatchPage.getVideosListName()
56     expect(videoNames).toContain(videoName)
57   })
58
59   it('Should go on video watch page', async () => {
60     let videoNameToExcept = videoName
61
62     if (isMobileDevice || isSafari) videoNameToExcept = await videoWatchPage.clickOnFirstVideo()
63     else await videoWatchPage.clickOnVideo(videoName)
64
65     return videoWatchPage.waitWatchVideoName(videoNameToExcept, isSafari)
66   })
67
68   it('Should play the video', async () => {
69     await videoWatchPage.pauseVideo(!isMobileDevice, isMobileDevice)
70     expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
71   })
72
73   it('Should watch the associated embed video', async () => {
74     await videoWatchPage.goOnAssociatedEmbed()
75
76     await videoWatchPage.pauseVideo(false, isMobileDevice)
77     expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
78   })
79 })