Skip to content

Commit 3a3c712

Browse files
authored
vp test: tests if video is playing on recommendations, seek thumbnails and shoppable videos pages (#790)
1 parent 6422dfa commit 3a3c712

File tree

7 files changed

+117
-0
lines changed

7 files changed

+117
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { vpTest } from '../fixtures/vpTest';
2+
import { test } from '@playwright/test';
3+
import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout';
4+
import { getLinkByName } from '../testData/pageLinksData';
5+
import { ExampleLinkName } from '../testData/ExampleLinkNames';
6+
7+
const link = getLinkByName(ExampleLinkName.Recommendations);
8+
9+
vpTest(`Test if video on recommendations page is playing as expected`, async ({ page, pomPages }) => {
10+
await test.step('Navigate to recommendations page by clicking on link', async () => {
11+
await pomPages.mainPage.clickLinkByName(link.name);
12+
await waitForPageToLoadWithTimeout(page, 5000);
13+
});
14+
await test.step('Validating that recommendations video is playing', async () => {
15+
await pomPages.recommendationsPage.recommendationsVideoComponent.validateVideoIsPlaying(true);
16+
});
17+
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { vpTest } from '../fixtures/vpTest';
2+
import { test } from '@playwright/test';
3+
import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout';
4+
import { getLinkByName } from '../testData/pageLinksData';
5+
import { ExampleLinkName } from '../testData/ExampleLinkNames';
6+
7+
const link = getLinkByName(ExampleLinkName.SeekThumbnails);
8+
9+
vpTest(`Test if video on seek thumbnails page is playing as expected`, async ({ page, pomPages }) => {
10+
await test.step('Navigate to seek thumbnails page by clicking on link', async () => {
11+
await pomPages.mainPage.clickLinkByName(link.name);
12+
await waitForPageToLoadWithTimeout(page, 5000);
13+
});
14+
await test.step('Validating that seek thumbnails video is playing', async () => {
15+
await pomPages.seekThumbnailsPage.seekThumbnailsVideoComponent.validateVideoIsPlaying(true);
16+
});
17+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { vpTest } from '../fixtures/vpTest';
2+
import { test } from '@playwright/test';
3+
import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout';
4+
import { getLinkByName } from '../testData/pageLinksData';
5+
import { ExampleLinkName } from '../testData/ExampleLinkNames';
6+
7+
const link = getLinkByName(ExampleLinkName.ShoppableVideos);
8+
9+
vpTest(`Test if video on shoppable videos page is playing as expected`, async ({ page, pomPages }) => {
10+
await test.step('Navigate to shoppable video page by clicking on link', async () => {
11+
await pomPages.mainPage.clickLinkByName(link.name);
12+
await waitForPageToLoadWithTimeout(page, 5000);
13+
});
14+
await test.step('Click on play button of shoppable videos to play video', async () => {
15+
return pomPages.shoppableVideosPage.shoppableVideosVideoComponent.clickPlay();
16+
});
17+
await test.step('Validating that seek thumbnails video is playing', async () => {
18+
await pomPages.shoppableVideosPage.shoppableVideosVideoComponent.validateVideoIsPlaying(true);
19+
});
20+
});

test/e2e/src/pom/PageManager.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import { PlaylistByTagPage } from './playlistByTagPage';
2121
import { PosterOptionsPage } from './posterOptionsPage';
2222
import { ProfilesPage } from './profilesPage';
2323
import { RawUrlPage } from './rawUrlPage';
24+
import { RecommendationsPage } from './recommendationsPage';
25+
import { SeekThumbnailsPage } from './seekThumbnailsPage';
26+
import { ShoppableVideosPage } from './shoppableVideosPage';
2427

2528
/**
2629
* Page manager,
@@ -156,5 +159,17 @@ export class PageManager {
156159
public get rawUrlPage(): RawUrlPage {
157160
return this.getPage(RawUrlPage);
158161
}
162+
163+
public get recommendationsPage(): RecommendationsPage {
164+
return this.getPage(RecommendationsPage);
165+
}
166+
167+
public get seekThumbnailsPage(): SeekThumbnailsPage {
168+
return this.getPage(SeekThumbnailsPage);
169+
}
170+
171+
public get shoppableVideosPage(): ShoppableVideosPage {
172+
return this.getPage(ShoppableVideosPage);
173+
}
159174
}
160175
export default PageManager;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Page } from '@playwright/test';
2+
import { VideoComponent } from '../../components/videoComponent';
3+
import { BasePage } from './BasePage';
4+
const RECOMMENDATIONS_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]';
5+
6+
/**
7+
* Video player examples recommendations page object
8+
*/
9+
export class RecommendationsPage extends BasePage {
10+
public recommendationsVideoComponent: VideoComponent;
11+
12+
constructor(page: Page) {
13+
super(page);
14+
this.recommendationsVideoComponent = new VideoComponent(page, RECOMMENDATIONS_PAGE_VIDEO_SELECTOR);
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Page } from '@playwright/test';
2+
import { VideoComponent } from '../../components/videoComponent';
3+
import { BasePage } from './BasePage';
4+
const SEEK_THUMBNAILS_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]';
5+
6+
/**
7+
* Video player examples seek thumbnails page object
8+
*/
9+
export class SeekThumbnailsPage extends BasePage {
10+
public seekThumbnailsVideoComponent: VideoComponent;
11+
12+
constructor(page: Page) {
13+
super(page);
14+
this.seekThumbnailsVideoComponent = new VideoComponent(page, SEEK_THUMBNAILS_PAGE_VIDEO_SELECTOR);
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Page } from '@playwright/test';
2+
import { VideoComponent } from '../../components/videoComponent';
3+
import { BasePage } from './BasePage';
4+
const SHOPPABLE_VIDEOS_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]';
5+
6+
/**
7+
* Video player examples shoppable vidoes page object
8+
*/
9+
export class ShoppableVideosPage extends BasePage {
10+
public shoppableVideosVideoComponent: VideoComponent;
11+
12+
constructor(page: Page) {
13+
super(page);
14+
this.shoppableVideosVideoComponent = new VideoComponent(page, SHOPPABLE_VIDEOS_PAGE_VIDEO_SELECTOR);
15+
}
16+
}

0 commit comments

Comments
 (0)