diff --git a/test/e2e/specs/recommendationsPage.spec.ts b/test/e2e/specs/recommendationsPage.spec.ts new file mode 100644 index 00000000..36c07367 --- /dev/null +++ b/test/e2e/specs/recommendationsPage.spec.ts @@ -0,0 +1,17 @@ +import { vpTest } from '../fixtures/vpTest'; +import { test } from '@playwright/test'; +import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout'; +import { getLinkByName } from '../testData/pageLinksData'; +import { ExampleLinkName } from '../testData/ExampleLinkNames'; + +const link = getLinkByName(ExampleLinkName.Recommendations); + +vpTest(`Test if video on recommendations page is playing as expected`, async ({ page, pomPages }) => { + await test.step('Navigate to recommendations page by clicking on link', async () => { + await pomPages.mainPage.clickLinkByName(link.name); + await waitForPageToLoadWithTimeout(page, 5000); + }); + await test.step('Validating that recommendations video is playing', async () => { + await pomPages.recommendationsPage.recommendationsVideoComponent.validateVideoIsPlaying(true); + }); +}); diff --git a/test/e2e/specs/seekThumbnailsPage.spec.ts b/test/e2e/specs/seekThumbnailsPage.spec.ts new file mode 100644 index 00000000..85f0606c --- /dev/null +++ b/test/e2e/specs/seekThumbnailsPage.spec.ts @@ -0,0 +1,17 @@ +import { vpTest } from '../fixtures/vpTest'; +import { test } from '@playwright/test'; +import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout'; +import { getLinkByName } from '../testData/pageLinksData'; +import { ExampleLinkName } from '../testData/ExampleLinkNames'; + +const link = getLinkByName(ExampleLinkName.SeekThumbnails); + +vpTest(`Test if video on seek thumbnails page is playing as expected`, async ({ page, pomPages }) => { + await test.step('Navigate to seek thumbnails page by clicking on link', async () => { + await pomPages.mainPage.clickLinkByName(link.name); + await waitForPageToLoadWithTimeout(page, 5000); + }); + await test.step('Validating that seek thumbnails video is playing', async () => { + await pomPages.seekThumbnailsPage.seekThumbnailsVideoComponent.validateVideoIsPlaying(true); + }); +}); diff --git a/test/e2e/specs/shoppableVideosPage.spec.ts b/test/e2e/specs/shoppableVideosPage.spec.ts new file mode 100644 index 00000000..1f639f36 --- /dev/null +++ b/test/e2e/specs/shoppableVideosPage.spec.ts @@ -0,0 +1,20 @@ +import { vpTest } from '../fixtures/vpTest'; +import { test } from '@playwright/test'; +import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout'; +import { getLinkByName } from '../testData/pageLinksData'; +import { ExampleLinkName } from '../testData/ExampleLinkNames'; + +const link = getLinkByName(ExampleLinkName.ShoppableVideos); + +vpTest(`Test if video on shoppable videos page is playing as expected`, async ({ page, pomPages }) => { + await test.step('Navigate to shoppable video page by clicking on link', async () => { + await pomPages.mainPage.clickLinkByName(link.name); + await waitForPageToLoadWithTimeout(page, 5000); + }); + await test.step('Click on play button of shoppable videos to play video', async () => { + return pomPages.shoppableVideosPage.shoppableVideosVideoComponent.clickPlay(); + }); + await test.step('Validating that seek thumbnails video is playing', async () => { + await pomPages.shoppableVideosPage.shoppableVideosVideoComponent.validateVideoIsPlaying(true); + }); +}); diff --git a/test/e2e/src/pom/PageManager.ts b/test/e2e/src/pom/PageManager.ts index 14e699c9..12665b06 100644 --- a/test/e2e/src/pom/PageManager.ts +++ b/test/e2e/src/pom/PageManager.ts @@ -21,6 +21,9 @@ import { PlaylistByTagPage } from './playlistByTagPage'; import { PosterOptionsPage } from './posterOptionsPage'; import { ProfilesPage } from './profilesPage'; import { RawUrlPage } from './rawUrlPage'; +import { RecommendationsPage } from './recommendationsPage'; +import { SeekThumbnailsPage } from './seekThumbnailsPage'; +import { ShoppableVideosPage } from './shoppableVideosPage'; /** * Page manager, @@ -156,5 +159,17 @@ export class PageManager { public get rawUrlPage(): RawUrlPage { return this.getPage(RawUrlPage); } + + public get recommendationsPage(): RecommendationsPage { + return this.getPage(RecommendationsPage); + } + + public get seekThumbnailsPage(): SeekThumbnailsPage { + return this.getPage(SeekThumbnailsPage); + } + + public get shoppableVideosPage(): ShoppableVideosPage { + return this.getPage(ShoppableVideosPage); + } } export default PageManager; diff --git a/test/e2e/src/pom/recommendationsPage.ts b/test/e2e/src/pom/recommendationsPage.ts new file mode 100644 index 00000000..3b02aa8d --- /dev/null +++ b/test/e2e/src/pom/recommendationsPage.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test'; +import { VideoComponent } from '../../components/videoComponent'; +import { BasePage } from './BasePage'; +const RECOMMENDATIONS_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]'; + +/** + * Video player examples recommendations page object + */ +export class RecommendationsPage extends BasePage { + public recommendationsVideoComponent: VideoComponent; + + constructor(page: Page) { + super(page); + this.recommendationsVideoComponent = new VideoComponent(page, RECOMMENDATIONS_PAGE_VIDEO_SELECTOR); + } +} diff --git a/test/e2e/src/pom/seekThumbnailsPage.ts b/test/e2e/src/pom/seekThumbnailsPage.ts new file mode 100644 index 00000000..69c7eca0 --- /dev/null +++ b/test/e2e/src/pom/seekThumbnailsPage.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test'; +import { VideoComponent } from '../../components/videoComponent'; +import { BasePage } from './BasePage'; +const SEEK_THUMBNAILS_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]'; + +/** + * Video player examples seek thumbnails page object + */ +export class SeekThumbnailsPage extends BasePage { + public seekThumbnailsVideoComponent: VideoComponent; + + constructor(page: Page) { + super(page); + this.seekThumbnailsVideoComponent = new VideoComponent(page, SEEK_THUMBNAILS_PAGE_VIDEO_SELECTOR); + } +} diff --git a/test/e2e/src/pom/shoppableVideosPage.ts b/test/e2e/src/pom/shoppableVideosPage.ts new file mode 100644 index 00000000..38a0105f --- /dev/null +++ b/test/e2e/src/pom/shoppableVideosPage.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test'; +import { VideoComponent } from '../../components/videoComponent'; +import { BasePage } from './BasePage'; +const SHOPPABLE_VIDEOS_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]'; + +/** + * Video player examples shoppable vidoes page object + */ +export class ShoppableVideosPage extends BasePage { + public shoppableVideosVideoComponent: VideoComponent; + + constructor(page: Page) { + super(page); + this.shoppableVideosVideoComponent = new VideoComponent(page, SHOPPABLE_VIDEOS_PAGE_VIDEO_SELECTOR); + } +}