frontend/e2e/screens.spec.ts
Rama main · réplica de lectura del repositorio original.
import { expect, test } from "@playwright/test"
import path from "node:path"
import { MEDIA, registerUser } from "./helpers"
// Design review screenshots with real content. Run with SCREENS=1.
test.skip(!process.env.SCREENS, "screenshots only on demand")
test("populated screenshots", async ({ page }, info) => {
test.setTimeout(180_000)
await registerUser(page)
await page.goto("/photos")
await page.locator('input[type="file"]').setInputFiles(
["photo_0.jpg", "photo_1.jpg", "photo_2.jpg", "photo_3.jpg", "big_8000x6000.jpg", "photo.png", "photo.webp", "photo.heic"].map((f) => path.join(MEDIA, f)),
)
await expect(page.locator('img[src*="/thumb?size=sm"]')).toHaveCount(8, { timeout: 60_000 })
await page.goto("/videos")
await page.locator('input[type="file"]').setInputFiles([path.join(MEDIA, "sample_1080p.mp4"), path.join(MEDIA, "sample_hevc.mkv")])
await expect(page.getByText("0:30")).toBeVisible({ timeout: 60_000 })
await page.goto("/drive")
await page.locator('input[type="file"]').setInputFiles(["notes.txt", "code.py", "doc.pdf"].map((f) => path.join(MEDIA, f)))
await expect(page.getByRole("button", { name: "doc.pdf", exact: true })).toBeVisible({ timeout: 30_000 })
await page.waitForTimeout(4500)
for (const theme of ["light", "dark"]) {
for (const r of ["/", "/photos", "/videos", "/drive", "/settings"]) {
await page.goto(r)
await page.evaluate((t) => (document.documentElement.dataset.theme = t), theme)
await page.waitForTimeout(900)
await page.screenshot({ path: `../.devdata/screens/${info.project.name}-${theme}${r.replaceAll("/", "_")}.png` })
}
}
await page.goto("/photos")
await page.getByRole("button", { name: "big_8000x6000.jpg" }).click()
await page.waitForTimeout(1200)
await page.screenshot({ path: `../.devdata/screens/${info.project.name}-viewer.png` })
await page.goto("/logout-nope")
})