aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/e2e/src/po/my-account.ts
blob: 9866953e910bfc36900f8e85d3e29f1edd2fe67b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import { by, element, browser } from 'protractor'

export class MyAccountPage {

  navigateToMyVideos () {
    return element(by.css('a[href="/my-library/videos"]')).click()
  }

  navigateToMyPlaylists () {
    return element(by.css('a[href="/my-library/video-playlists"]')).click()
  }

  navigateToMyHistory () {
    return element(by.css('a[href="/my-library/history/videos"]')).click()
  }

  // My account Videos

  async removeVideo (name: string) {
    const container = this.getVideoElement(name)

    await container.element(by.css('.dropdown-toggle')).click()

    const dropdownMenu = container.element(by.css('.dropdown-menu .dropdown-item:nth-child(2)'))
    await browser.wait(browser.ExpectedConditions.presenceOf(dropdownMenu))

    return dropdownMenu.click()
  }

  validRemove () {
    return element(by.css('input[type=submit]')).click()
  }

  countVideos (names: string[]) {
    return element.all(by.css('.video'))
                  .filter(e => {
                    return e.element(by.css('.video-miniature-name'))
                            .getText()
                            .then(t => names.some(n => t.includes(n)))
                  })
                  .count()
  }

  // My account playlists

  getPlaylistVideosText (name: string) {
    return this.getPlaylist(name).element(by.css('.miniature-playlist-info-overlay')).getText()
  }

  clickOnPlaylist (name: string) {
    return this.getPlaylist(name).element(by.css('.miniature-thumbnail')).click()
  }

  countTotalPlaylistElements () {
    return element.all(by.css('my-video-playlist-element-miniature')).count()
  }

  playPlaylist () {
    return element(by.css('.playlist-info .miniature-thumbnail')).click()
  }

  async goOnAssociatedPlaylistEmbed () {
    let url = await browser.getCurrentUrl()
    url = url.replace('/w/p/', '/video-playlists/embed/')
    url = url.replace(':3333', ':9001')

    return browser.get(url)
  }

  // My account Videos

  private getVideoElement (name: string) {
    return element.all(by.css('.video'))
                  .filter(e => e.element(by.css('.video-miniature-name')).getText().then(t => t.includes(name)))
                  .first()
  }

  // My account playlists

  private getPlaylist (name: string) {
    return element.all(by.css('my-video-playlist-miniature'))
      .filter(e => e.element(by.css('.miniature-name')).getText().then(t => t.includes(name)))
      .first()
  }
}