-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
vp test: test if video on autoplay on scroll page is playing
- Loading branch information
Showing
3 changed files
with
62 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import { vpTest } from '../fixtures/vpTest'; | ||
import { expect, test } from '@playwright/test'; | ||
import { waitForPageToLoadWithTimeout } from '../src/helpers/waitForPageToLoadWithTimeout'; | ||
import { getLinkByName } from '../testData/pageLinksData'; | ||
import { ExampleLinkName } from '../testData/ExampleLinkNames'; | ||
|
||
// Link to autoplay on scroll page | ||
const link = getLinkByName(ExampleLinkName.AutoplayOnScroll); | ||
/** | ||
* Testing if video on autoplay on scroll page is playing. | ||
* First making sure that video is not playing before scrolling. | ||
* Then, scroll until video element is visible and make sure video is playing by checking that is pause return false. | ||
*/ | ||
vpTest(`Test if video on autoplay on scroll page is playing as expected`, async ({ page, pomPages }) => { | ||
await test.step('Navigate to autoplay on scroll page by clicking on link', async () => { | ||
await pomPages.mainPage.clickLinkByName(link.name); | ||
await waitForPageToLoadWithTimeout(page, 5000); | ||
}); | ||
await test.step('Validating that the video is not playing before scrolling (in case isPause is true)', async () => { | ||
expect(await pomPages.autoplayOnScrollPage.autoplayOnScrollVideoComponent.isPaused()).toEqual(true); | ||
}); | ||
await test.step('Scroll until the video element is visible', async () => { | ||
await pomPages.autoplayOnScrollPage.scrollToVideoElement(); | ||
}); | ||
await test.step('Validating that the video is auto playing after scrolling (in case isPause is false)', async () => { | ||
expect(await pomPages.autoplayOnScrollPage.autoplayOnScrollVideoComponent.isPaused()).toEqual(false); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import { Page } from '@playwright/test'; | ||
import { VideoComponent } from '../../components/videoComponent'; | ||
import { BasePage } from './BasePage'; | ||
const AUTOPLAY_ON_SCROLL_PAGE_VIDEO_SELECTOR = '//*[@id="player_html5_api"]'; | ||
|
||
/** | ||
* Video player examples autoplay on scroll page object | ||
*/ | ||
export class AutoplayOnScrollPage extends BasePage { | ||
public autoplayOnScrollVideoComponent: VideoComponent; | ||
|
||
constructor(page: Page) { | ||
super(page); | ||
this.autoplayOnScrollVideoComponent = new VideoComponent(page, AUTOPLAY_ON_SCROLL_PAGE_VIDEO_SELECTOR); | ||
} | ||
/** | ||
* Scrolls the page until the video element is visible using scrollIntoViewIfNeeded method. | ||
* This action ensures the autoplay behavior is triggered when the video comes into view. | ||
* It waits briefly after scrolling to give the video enough time to load and trigger autoplay. | ||
*/ | ||
async scrollToVideoElement() { | ||
await this.page.locator(AUTOPLAY_ON_SCROLL_PAGE_VIDEO_SELECTOR).scrollIntoViewIfNeeded(); | ||
// Wait briefly to give time for the autoplay to apply | ||
await this.page.waitForTimeout(1000); | ||
} | ||
} |