aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/e2e
diff options
context:
space:
mode:
Diffstat (limited to 'client/e2e')
-rw-r--r--client/e2e/local-protractor.conf.js9
-rw-r--r--client/e2e/protractor.conf.js7
-rw-r--r--client/e2e/src/po/login.po.ts6
-rw-r--r--client/e2e/src/po/video-upload.po.ts5
-rw-r--r--client/e2e/src/po/video-watch.po.ts6
-rw-r--r--client/e2e/src/videos.e2e-spec.ts31
6 files changed, 46 insertions, 18 deletions
diff --git a/client/e2e/local-protractor.conf.js b/client/e2e/local-protractor.conf.js
index 53edf26f2..a4990fcef 100644
--- a/client/e2e/local-protractor.conf.js
+++ b/client/e2e/local-protractor.conf.js
@@ -7,20 +7,21 @@ exports.config = {
7 allScriptsTimeout: 25000, 7 allScriptsTimeout: 25000,
8 specs: ['./src/**/*.e2e-spec.ts'], 8 specs: ['./src/**/*.e2e-spec.ts'],
9 9
10 seleniumAddress: 'http://localhost:4444/wd/hub', 10 directConnect: true,
11 11
12 capabilities: { 12 capabilities: {
13 'browserName': 'firefox', 13 'browserName': 'firefox',
14 'moz:firefoxOptions': { 14 'moz:firefoxOptions': {
15 'args': ["-headless"], 15 binary: '/usr/bin/firefox-esr',
16 "log": { 16 // args: ["-headless"],
17 log: {
17 "level": "info" // default is "info" 18 "level": "info" // default is "info"
18 } 19 }
19 } 20 }
20 }, 21 },
21 22
22 // maxSessions: 1, 23 // maxSessions: 1,
23 baseUrl: 'http://localhost:3333/', 24 baseUrl: 'http://localhost:3000/',
24 framework: 'jasmine', 25 framework: 'jasmine',
25 jasmineNodeOpts: { 26 jasmineNodeOpts: {
26 showColors: true, 27 showColors: true,
diff --git a/client/e2e/protractor.conf.js b/client/e2e/protractor.conf.js
index c5c913a4a..51d0b220d 100644
--- a/client/e2e/protractor.conf.js
+++ b/client/e2e/protractor.conf.js
@@ -18,7 +18,6 @@ exports.config = {
18 multiCapabilities: [ 18 multiCapabilities: [
19 { 19 {
20 browserName: 'Chrome', 20 browserName: 'Chrome',
21 version: '66',
22 name: 'Latest Chrome Desktop' 21 name: 'Latest Chrome Desktop'
23 }, 22 },
24 { 23 {
@@ -28,17 +27,15 @@ exports.config = {
28 }, 27 },
29 { 28 {
30 browserName: 'Firefox', 29 browserName: 'Firefox',
31 version: '52', // ESR, 30 version: '60', // ESR,
32 name: 'Old Firefox ESR Desktop' 31 name: 'Firefox ESR Desktop'
33 }, 32 },
34 { 33 {
35 browserName: 'Firefox', 34 browserName: 'Firefox',
36 version: '60',
37 name: 'Latest Firefox Desktop' 35 name: 'Latest Firefox Desktop'
38 }, 36 },
39 { 37 {
40 browserName: 'Edge', 38 browserName: 'Edge',
41 version: '16',
42 name: 'Latest Edge Desktop' 39 name: 'Latest Edge Desktop'
43 }, 40 },
44 { 41 {
diff --git a/client/e2e/src/po/login.po.ts b/client/e2e/src/po/login.po.ts
index 40f958d2b..90b65c7ea 100644
--- a/client/e2e/src/po/login.po.ts
+++ b/client/e2e/src/po/login.po.ts
@@ -11,6 +11,10 @@ export class LoginPage {
11 11
12 await element(by.css('form input[type=submit]')).click() 12 await element(by.css('form input[type=submit]')).click()
13 13
14 return browser.wait(browser.ExpectedConditions.urlContains('/videos/')) 14 expect(this.getLoggedInInfo().getText()).toContain('root')
15 }
16
17 private getLoggedInInfo () {
18 return element(by.css('.logged-in-display-name'))
15 } 19 }
16} 20}
diff --git a/client/e2e/src/po/video-upload.po.ts b/client/e2e/src/po/video-upload.po.ts
index 1978707e3..f79927abc 100644
--- a/client/e2e/src/po/video-upload.po.ts
+++ b/client/e2e/src/po/video-upload.po.ts
@@ -14,13 +14,14 @@ export class VideoUploadPage {
14 14
15 const fileToUpload = join(__dirname, '../../fixtures/video.mp4') 15 const fileToUpload = join(__dirname, '../../fixtures/video.mp4')
16 const fileInputSelector = '.upload-video-container input[type=file]' 16 const fileInputSelector = '.upload-video-container input[type=file]'
17 const parentFileInput = '.upload-video .button-file' 17 const parentFileInput = '.upload-video-container .button-file'
18 18
19 // Avoid sending keys on non visible element 19 // Avoid sending keys on non visible element
20 await browser.executeScript(`document.querySelector('${fileInputSelector}').style.opacity = 1`) 20 await browser.executeScript(`document.querySelector('${fileInputSelector}').style.opacity = 1`)
21 // await browser.executeScript(`document.querySelector('${fileInputSelector}').style.opacity = 1`)
22 await browser.executeScript(`document.querySelector('${parentFileInput}').style.overflow = 'initial'`) 21 await browser.executeScript(`document.querySelector('${parentFileInput}').style.overflow = 'initial'`)
23 22
23 await browser.sleep(1000)
24
24 const elem = element(by.css(fileInputSelector)) 25 const elem = element(by.css(fileInputSelector))
25 await elem.sendKeys(fileToUpload) 26 await elem.sendKeys(fileToUpload)
26 27
diff --git a/client/e2e/src/po/video-watch.po.ts b/client/e2e/src/po/video-watch.po.ts
index d1e2a73b8..5f61d5668 100644
--- a/client/e2e/src/po/video-watch.po.ts
+++ b/client/e2e/src/po/video-watch.po.ts
@@ -44,7 +44,7 @@ export class VideoWatchPage {
44 .then(seconds => parseInt(seconds, 10)) 44 .then(seconds => parseInt(seconds, 10))
45 } 45 }
46 46
47 async pauseVideo (isAutoplay: boolean, isMobileDevice: boolean) { 47 async playAndPauseVideo (isAutoplay: boolean, isMobileDevice: boolean) {
48 if (isAutoplay === false) { 48 if (isAutoplay === false) {
49 const playButton = element(by.css('.vjs-big-play-button')) 49 const playButton = element(by.css('.vjs-big-play-button'))
50 await browser.wait(browser.ExpectedConditions.elementToBeClickable(playButton)) 50 await browser.wait(browser.ExpectedConditions.elementToBeClickable(playButton))
@@ -97,4 +97,8 @@ export class VideoWatchPage {
97 97
98 return browser.get(url) 98 return browser.get(url)
99 } 99 }
100
101 async goOnP2PMediaLoaderEmbed () {
102 return browser.get('https://peertube2.cpy.re/videos/embed/969bf103-7818-43b5-94a0-de159e13de50?mode=p2p-media-loader')
103 }
100} 104}
diff --git a/client/e2e/src/videos.e2e-spec.ts b/client/e2e/src/videos.e2e-spec.ts
index 606b6ac5d..25521cad9 100644
--- a/client/e2e/src/videos.e2e-spec.ts
+++ b/client/e2e/src/videos.e2e-spec.ts
@@ -12,8 +12,6 @@ describe('Videos workflow', () => {
12 let isSafari = false 12 let isSafari = false
13 13
14 beforeEach(async () => { 14 beforeEach(async () => {
15 await browser.waitForAngularEnabled(false)
16
17 videoWatchPage = new VideoWatchPage() 15 videoWatchPage = new VideoWatchPage()
18 pageUploadPage = new VideoUploadPage() 16 pageUploadPage = new VideoUploadPage()
19 loginPage = new LoginPage() 17 loginPage = new LoginPage()
@@ -21,6 +19,14 @@ describe('Videos workflow', () => {
21 const caps = await browser.getCapabilities() 19 const caps = await browser.getCapabilities()
22 isMobileDevice = caps.get('realMobile') === 'true' || caps.get('realMobile') === true 20 isMobileDevice = caps.get('realMobile') === 'true' || caps.get('realMobile') === true
23 isSafari = caps.get('browserName') && caps.get('browserName').toLowerCase() === 'safari' 21 isSafari = caps.get('browserName') && caps.get('browserName').toLowerCase() === 'safari'
22
23 if (isMobileDevice) {
24 console.log('Mobile device detected.')
25 }
26
27 if (isSafari) {
28 console.log('Safari detected.')
29 }
24 }) 30 })
25 31
26 it('Should log in', () => { 32 it('Should log in', () => {
@@ -44,7 +50,7 @@ describe('Videos workflow', () => {
44 return pageUploadPage.validSecondUploadStep(videoName) 50 return pageUploadPage.validSecondUploadStep(videoName)
45 }) 51 })
46 52
47 it('Should list the video', async () => { 53 it('Should list videos', async () => {
48 await videoWatchPage.goOnVideosList(isMobileDevice, isSafari) 54 await videoWatchPage.goOnVideosList(isMobileDevice, isSafari)
49 55
50 if (isMobileDevice || isSafari) { 56 if (isMobileDevice || isSafari) {
@@ -66,14 +72,29 @@ describe('Videos workflow', () => {
66 }) 72 })
67 73
68 it('Should play the video', async () => { 74 it('Should play the video', async () => {
69 await videoWatchPage.pauseVideo(!isMobileDevice, isMobileDevice) 75 await videoWatchPage.playAndPauseVideo(true, isMobileDevice)
70 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 76 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
71 }) 77 })
72 78
73 it('Should watch the associated embed video', async () => { 79 it('Should watch the associated embed video', async () => {
80 await browser.waitForAngularEnabled(false)
81
74 await videoWatchPage.goOnAssociatedEmbed() 82 await videoWatchPage.goOnAssociatedEmbed()
75 83
76 await videoWatchPage.pauseVideo(false, isMobileDevice) 84 await videoWatchPage.playAndPauseVideo(false, isMobileDevice)
77 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2) 85 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
86
87 await browser.waitForAngularEnabled(true)
88 })
89
90 it('Should watch the p2p media loader embed video', async () => {
91 await browser.waitForAngularEnabled(false)
92
93 await videoWatchPage.goOnP2PMediaLoaderEmbed()
94
95 await videoWatchPage.playAndPauseVideo(false, isMobileDevice)
96 expect(videoWatchPage.getWatchVideoPlayerCurrentTime()).toBeGreaterThanOrEqual(2)
97
98 await browser.waitForAngularEnabled(true)
78 }) 99 })
79}) 100})