]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/e2e/src/po/video-watch.po.ts
Make it works with new autoplay policy
[github/Chocobozzz/PeerTube.git] / client / e2e / src / po / video-watch.po.ts
CommitLineData
5f92c4dc
C
1import { by, element, browser } from 'protractor'
2
3export class VideoWatchPage {
d1bd87e0 4 async goOnVideosList (isIphoneDevice: boolean, isSafari: boolean) {
0b33c520
C
5 let url: string
6
7 if (isIphoneDevice === true) {
8 // Local testing is buggy :/
9 url = 'https://peertube2.cpy.re/videos/local'
10 } else {
11 url = '/videos/recently-added'
12 }
5f92c4dc
C
13
14 await browser.get(url)
d1bd87e0
C
15
16 // Waiting the following element does not work on Safari...
17 if (isSafari === true) return browser.sleep(3000)
18
19 const elem = element.all(by.css('.videos .video-miniature .video-miniature-name')).first()
20 return browser.wait(browser.ExpectedConditions.visibilityOf(elem))
5f92c4dc
C
21 }
22
23 getVideosListName () {
d1bd87e0 24 return element.all(by.css('.videos .video-miniature .video-miniature-name'))
0b33c520
C
25 .getText()
26 .then((texts: any) => texts.map(t => t.trim()))
5f92c4dc
C
27 }
28
29 waitWatchVideoName (videoName: string) {
30 const elem = element(by.css('.video-info .video-info-name'))
31 return browser.wait(browser.ExpectedConditions.textToBePresentInElement(elem, videoName))
32 }
33
34 getWatchVideoPlayerCurrentTime () {
35 return element(by.css('.video-js .vjs-current-time-display'))
36 .getText()
37 .then((t: string) => t.split(':')[1])
38 .then(seconds => parseInt(seconds, 10))
39 }
40
d1bd87e0
C
41 async pauseVideo (pauseAfterMs: number, isAutoplay: boolean, isSafari: boolean) {
42 if (isAutoplay === false) {
43 const playButton = element(by.css('.vjs-big-play-button'))
44 await browser.wait(browser.ExpectedConditions.elementToBeClickable(playButton))
45 await playButton.click()
46 }
47
48 if (isSafari === true) {
49 await browser.sleep(1000)
50 await element(by.css('.vjs-play-control')).click()
0b33c520
C
51 }
52
d1bd87e0 53 await browser.sleep(1000)
cd4d7a2c
C
54 await browser.wait(browser.ExpectedConditions.invisibilityOf(element(by.css('.vjs-loading-spinner'))))
55
56 const el = element(by.css('div.video-js'))
5f92c4dc
C
57 await browser.wait(browser.ExpectedConditions.elementToBeClickable(el))
58
cd4d7a2c
C
59 await browser.sleep(pauseAfterMs)
60
d1bd87e0 61 return el.click()
5f92c4dc
C
62 }
63
cd4d7a2c
C
64 async clickOnVideo (videoName: string) {
65 const video = element(by.css('.videos .video-miniature .video-thumbnail[title="' + videoName + '"]'))
0b33c520
C
66 await browser.wait(browser.ExpectedConditions.elementToBeClickable(video))
67 await video.click()
68
69 await browser.wait(browser.ExpectedConditions.urlContains('/watch/'))
70 }
71
72 async clickOnFirstVideo () {
d1bd87e0 73 const video = element.all(by.css('.videos .video-miniature .video-miniature-name')).first()
0b33c520
C
74 await browser.wait(browser.ExpectedConditions.elementToBeClickable(video))
75 const textToReturn = video.getText()
5f92c4dc
C
76
77 await video.click()
78
79 await browser.wait(browser.ExpectedConditions.urlContains('/watch/'))
0b33c520 80 return textToReturn
5f92c4dc
C
81 }
82
d1bd87e0
C
83 async goOnAssociatedEmbed () {
84 let url = await browser.getCurrentUrl()
85 url = url.replace('/watch/', '/embed/')
86 url = url.replace(':3333', ':9001')
87
88 return browser.get(url)
5f92c4dc
C
89 }
90}