]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - 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
1import { by, element, browser } from 'protractor'
2
3export class VideoWatchPage {
4 async goOnVideosList (isIphoneDevice: boolean, isSafari: boolean) {
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 }
13
14 await browser.get(url)
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))
21 }
22
23 getVideosListName () {
24 return element.all(by.css('.videos .video-miniature .video-miniature-name'))
25 .getText()
26 .then((texts: any) => texts.map(t => t.trim()))
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
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()
51 }
52
53 await browser.sleep(1000)
54 await browser.wait(browser.ExpectedConditions.invisibilityOf(element(by.css('.vjs-loading-spinner'))))
55
56 const el = element(by.css('div.video-js'))
57 await browser.wait(browser.ExpectedConditions.elementToBeClickable(el))
58
59 await browser.sleep(pauseAfterMs)
60
61 return el.click()
62 }
63
64 async clickOnVideo (videoName: string) {
65 const video = element(by.css('.videos .video-miniature .video-thumbnail[title="' + videoName + '"]'))
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 () {
73 const video = element.all(by.css('.videos .video-miniature .video-miniature-name')).first()
74 await browser.wait(browser.ExpectedConditions.elementToBeClickable(video))
75 const textToReturn = video.getText()
76
77 await video.click()
78
79 await browser.wait(browser.ExpectedConditions.urlContains('/watch/'))
80 return textToReturn
81 }
82
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)
89 }
90}