50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
test.describe("video", () => {
|
|
test("should be able to view video", async ({ page }) => {
|
|
await page.goto("http://localhost:3000/videos");
|
|
await page.locator("div.grid > a:nth-child(1)").click();
|
|
await expect(page).toHaveURL(
|
|
/http:\/\/localhost:3000\/share\/[A-Za-z0-9]+/
|
|
);
|
|
|
|
const video = page.locator("video");
|
|
expect(video).toBeTruthy();
|
|
await video.evaluate((v: HTMLVideoElement) => v.play());
|
|
const isPlaying = await video.evaluate((v: HTMLVideoElement) => !v.paused);
|
|
expect(isPlaying).toBe(true);
|
|
await video.click();
|
|
const isPaused = await video.evaluate((v: HTMLVideoElement) => v.paused);
|
|
expect(isPaused).toBe(true);
|
|
});
|
|
|
|
test("should be able to rename video", async ({ page }) => {
|
|
const randomTitle = "Random title " + Math.random().toString();
|
|
|
|
await page.goto("http://localhost:3000/videos");
|
|
await page.locator("div.grid > a:nth-child(1)").click();
|
|
await expect(page).toHaveURL(
|
|
/http:\/\/localhost:3000\/share\/[A-Za-z0-9]+/
|
|
);
|
|
|
|
await page.locator("button > svg").click();
|
|
await page.getByText("Rename").click();
|
|
await page.click("#title");
|
|
await page.fill("#title", randomTitle);
|
|
await page.getByText("Save").click();
|
|
expect(
|
|
await page.locator("div > span.text-lg.font-medium").textContent()
|
|
).toBe(randomTitle);
|
|
});
|
|
|
|
test("should be able to share video", async ({ page }) => {
|
|
await page.goto("http://localhost:3000/videos");
|
|
await page.locator("div.grid > a:nth-child(1)").click();
|
|
await expect(page).toHaveURL(
|
|
/http:\/\/localhost:3000\/share\/[A-Za-z0-9]+/
|
|
);
|
|
|
|
await page.getByText("Share").click();
|
|
await page.locator('div.mt-6 > button[role="switch"]').click();
|
|
});
|
|
});
|