Skip to content

Commit d73c666

Browse files
committed
Extract out setup steps
1 parent 3187efa commit d73c666

File tree

1 file changed

+34
-17
lines changed

1 file changed

+34
-17
lines changed

test/selenium.test.ts

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
1-
import { Builder, By, until, Key, WebDriver } from "selenium-webdriver";
1+
import { Builder, By, until, WebDriver } from "selenium-webdriver";
22
import * as Chrome from "selenium-webdriver/chrome";
33
import * as Path from "path";
44

55
test("Selenium Chrome test", async () => {
6+
const driver = await setup();
7+
8+
try {
9+
await waitForInstall(driver);
10+
// This video has no ads
11+
await goToVideo(driver, "jNQXAC9IVRw");
12+
13+
await createSegment(driver, "4", "10.33", "0:04.000 to 0:10.330");
14+
15+
await editSegments(driver, 0, "0:04.000", "0:10.330", "5", "13.211", "0:05.000 to 0:13.211", false);
16+
17+
await autoskipSegment(driver, 5, 13.211);
18+
} finally {
19+
await driver.quit();
20+
}
21+
}, 100_000);
22+
23+
async function setup(): Promise<WebDriver> {
624
const options = new Chrome.Options();
725
options.addArguments("--load-extension=" + Path.join(__dirname, "../dist/"));
826
options.addArguments("--mute-audio");
@@ -13,23 +31,22 @@ test("Selenium Chrome test", async () => {
1331
implicit: 5000
1432
});
1533

16-
try {
17-
// Selenium only knows about the one tab it's on,
18-
// so we can't wait for the help page to appear
19-
await driver.sleep(3000);
20-
// This video has no ads
21-
await driver.get("https://www.youtube.com/watch?v=jNQXAC9IVRw");
22-
await driver.wait(until.elementIsVisible(await driver.findElement(By.className("ytd-video-primary-info-renderer"))));
34+
return driver;
35+
}
2336

24-
await createSegment(driver, "4", "10.33", "0:04.000 to 0:10.330");
37+
async function waitForInstall(driver: WebDriver, startingTab = 0): Promise<void> {
38+
// Selenium only knows about the one tab it's on,
39+
// so we can't wait for the help page to appear
40+
await driver.sleep(3000);
2541

26-
await editSegments(driver, 0, "0:04.000", "0:10.330", "5", "13.211", "0:05.000 to 0:13.211", false);
42+
const handles = await driver.getAllWindowHandles();
43+
await driver.switchTo().window(handles[startingTab]);
44+
}
2745

28-
await skipSegment(driver, 5, 13.211);
29-
} finally {
30-
await driver.quit();
31-
}
32-
}, 100_000);
46+
async function goToVideo(driver: WebDriver, videoId: string): Promise<void> {
47+
await driver.get("https://www.youtube.com/watch?v=" + videoId);
48+
await driver.wait(until.elementIsVisible(await driver.findElement(By.className("ytd-video-primary-info-renderer"))));
49+
}
3350

3451
async function createSegment(driver: WebDriver, startTime: string, endTime: string, expectedDisplayedTime: string): Promise<void> {
3552
const startSegmentButton = await driver.findElement(By.id("startSegmentButton"));
@@ -89,13 +106,13 @@ async function editSegments(driver: WebDriver, index: number, expectedStartTimeB
89106
await driver.wait(until.elementTextIs(sponsorTimeDisplay, expectedDisplayedTime));
90107
}
91108

92-
async function skipSegment(driver: WebDriver, startTime: number, endTime: number): Promise<void> {
109+
async function autoskipSegment(driver: WebDriver, startTime: number, endTime: number): Promise<void> {
93110
const video = await driver.findElement(By.css("video"));
94111

95112
await driver.executeScript("document.querySelector('video').currentTime = " + (startTime - 0.5));
96113
await driver.executeScript("document.querySelector('video').play()");
97114

98-
await driver.sleep(1000);
115+
await driver.sleep(1300);
99116

100117
expect(parseFloat(await video.getAttribute("currentTime"))).toBeGreaterThan(endTime);
101118
await driver.executeScript("document.querySelector('video').pause()");

0 commit comments

Comments
 (0)