]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/e2e/src/po/video-watch.po.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / client / e2e / src / po / video-watch.po.ts
CommitLineData
6d210220 1import { browserSleep, FIXTURE_URLS, go } from '../utils'
5f92c4dc
C
2
3export class VideoWatchPage {
5f92c4dc 4
6d210220 5 constructor (private isMobileDevice: boolean, private isSafari: boolean) {
3419e0e1 6
5f92c4dc
C
7 }
8
6d210220
C
9 waitWatchVideoName (videoName: string) {
10 if (this.isSafari) return browserSleep(5000)
ee68bbc4 11
6247b205 12 // On mobile we display the first node, on desktop the second
6d210220 13 const index = this.isMobileDevice ? 0 : 1
6247b205 14
3419e0e1
C
15 return browser.waitUntil(async () => {
16 return (await $$('.video-info .video-info-name')[index].getText()).includes(videoName)
17 })
5f92c4dc
C
18 }
19
e69cb173 20 getVideoName () {
3419e0e1 21 return this.getVideoNameElement().then(e => e.getText())
e69cb173
C
22 }
23
3cf68b86
C
24 getPrivacy () {
25 return $('.attribute-privacy .attribute-value').getText()
26 }
27
28 getLicence () {
29 return $('.attribute-licence .attribute-value').getText()
30 }
31
32 async isDownloadEnabled () {
33 await this.clickOnMoreDropdownIcon()
34
35 return $('.dropdown-item .icon-download').isExisting()
36 }
37
38 areCommentsEnabled () {
39 return $('my-video-comment-add').isExisting()
40 }
41
a9bfa85d
C
42 isPrivacyWarningDisplayed () {
43 return $('my-privacy-concerns').isDisplayed()
44 }
45
7f90579c 46 async goOnAssociatedEmbed () {
3419e0e1 47 let url = await browser.getUrl()
18305950 48 url = url.replace('/w/', '/videos/embed/')
7f90579c 49 url = url.replace(':3333', ':9001')
ee68bbc4 50
a9bfa85d 51 await go(url)
814e9e07
C
52 await this.waitEmbedForDisplayed()
53 }
54
55 waitEmbedForDisplayed () {
56 return $('.vjs-big-play-button').waitForDisplayed()
a9bfa85d
C
57 }
58
2024a3b9
C
59 isEmbedWarningDisplayed () {
60 return $('.peertube-dock-description').isDisplayed()
7f90579c 61 }
91d95589 62
3419e0e1 63 goOnP2PMediaLoaderEmbed () {
12d6b873 64 return go(FIXTURE_URLS.HLS_EMBED)
7f90579c 65 }
cd4d7a2c 66
3419e0e1 67 goOnP2PMediaLoaderPlaylistEmbed () {
12d6b873 68 return go(FIXTURE_URLS.HLS_PLAYLIST_EMBED)
5f92c4dc
C
69 }
70
e69cb173 71 async clickOnUpdate () {
3cf68b86 72 await this.clickOnMoreDropdownIcon()
e69cb173 73
3419e0e1 74 const items = await $$('.dropdown-menu.show .dropdown-item')
e69cb173
C
75
76 for (const item of items) {
77 const href = await item.getAttribute('href')
78
3419e0e1 79 if (href?.includes('/update/')) {
e69cb173
C
80 await item.click()
81 return
82 }
83 }
84 }
85
3419e0e1
C
86 clickOnSave () {
87 return $('.action-button-save').click()
e69cb173
C
88 }
89
bbe078ba 90 async createPlaylist (name: string) {
3419e0e1
C
91 const newPlaylistButton = () => $('.new-playlist-button')
92
93 await newPlaylistButton().waitForClickable()
94 await newPlaylistButton().click()
95
96 const displayName = () => $('#displayName')
bbe078ba 97
3419e0e1
C
98 await displayName().waitForDisplayed()
99 await displayName().setValue(name)
bbe078ba 100
3419e0e1 101 return $('.new-playlist-block input[type=submit]').click()
bbe078ba
C
102 }
103
104 async saveToPlaylist (name: string) {
3419e0e1
C
105 const playlist = () => $('my-video-add-to-playlist').$(`.playlist=${name}`)
106
107 await playlist().waitForDisplayed()
108
109 return playlist().click()
e69cb173
C
110 }
111
112 waitUntilVideoName (name: string, maxTime: number) {
3419e0e1
C
113 return browser.waitUntil(async () => {
114 return (await this.getVideoName()) === name
115 }, { timeout: maxTime })
e69cb173
C
116 }
117
3cf68b86
C
118 async clickOnMoreDropdownIcon () {
119 const dropdown = $('my-video-actions-dropdown .action-button')
120 await dropdown.click()
121
122 await $('.dropdown-menu.show .dropdown-item').waitForDisplayed()
123 }
124
3419e0e1 125 private async getVideoNameElement () {
e69cb173 126 // We have 2 video info name block, pick the first that is not empty
3419e0e1
C
127 const elem = async () => {
128 const elems = await $$('.video-info-first-row .video-info-name').filter(e => e.isDisplayed())
129
130 return elems[0]
131 }
132
133 await browser.waitUntil(async () => {
134 const e = await elem()
135
136 return e?.isDisplayed()
137 })
138
139 return elem()
e69cb173 140 }
5f92c4dc 141}