mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
103 lines
3.0 KiB
TypeScript
103 lines
3.0 KiB
TypeScript
import { expect, test } from "playwright/test";
|
|
import {
|
|
corruptPng,
|
|
landscapePng,
|
|
largePng,
|
|
onePixelPng,
|
|
opaquePng,
|
|
} from "./helpers/fixtures";
|
|
import {
|
|
downloadResult,
|
|
emptyState,
|
|
errorAlert,
|
|
expectNoErrorAlert,
|
|
expectNoErrors,
|
|
openTool,
|
|
rangeInput,
|
|
resultImage,
|
|
sourceImage,
|
|
trackErrors,
|
|
uploadImage,
|
|
useEnglish,
|
|
} from "./helpers/page";
|
|
|
|
test("flip-png: full flow - upload, result, download", async ({ page }) => {
|
|
const sink = trackErrors(page);
|
|
await openTool(page, "flip-png");
|
|
await uploadImage(page, landscapePng);
|
|
await expect(resultImage(page)).toBeVisible();
|
|
expect(await downloadResult(page)).toBe("flip-png.png");
|
|
await expectNoErrorAlert(page);
|
|
expectNoErrors(sink);
|
|
});
|
|
|
|
test("convert-png-to-jpg: produces a downloadable jpg", async ({ page }) => {
|
|
const sink = trackErrors(page);
|
|
await openTool(page, "convert-png-to-jpg");
|
|
await uploadImage(page, opaquePng);
|
|
await expect(resultImage(page)).toBeVisible();
|
|
expect(await downloadResult(page)).toBe("convert-png-to-jpg.jpg");
|
|
await expectNoErrorAlert(page);
|
|
expectNoErrors(sink);
|
|
});
|
|
|
|
test.fixme("reset clears result but keeps source", async ({ page }) => {
|
|
await openTool(page, "flip-png");
|
|
await uploadImage(page, opaquePng);
|
|
await expect(resultImage(page)).toBeVisible();
|
|
await page.getByRole("button", { name: "Reset" }).click();
|
|
await expect(resultImage(page)).toHaveCount(0);
|
|
await expect(emptyState(page)).toBeVisible();
|
|
await expect(sourceImage(page)).toBeVisible();
|
|
});
|
|
|
|
test("blur: changing slider updates result image", async ({ page }) => {
|
|
await openTool(page, "blur-png");
|
|
await uploadImage(page, opaquePng);
|
|
await expect(resultImage(page)).toBeVisible();
|
|
const firstSource = await resultImage(page).getAttribute("src");
|
|
await rangeInput(page, /radius/i).fill("20");
|
|
await expect(resultImage(page)).not.toHaveAttribute("src", firstSource ?? "");
|
|
});
|
|
|
|
test("runs without Web Worker (fallback)", async ({ browser }) => {
|
|
const context = await browser.newContext();
|
|
try {
|
|
await context.addInitScript(() => {
|
|
Object.defineProperty(window, "Worker", {
|
|
value: undefined,
|
|
configurable: true,
|
|
});
|
|
});
|
|
const page = await context.newPage();
|
|
await useEnglish(page);
|
|
const sink = trackErrors(page);
|
|
await openTool(page, "flip-png");
|
|
await uploadImage(page, landscapePng);
|
|
await expect(resultImage(page)).toBeVisible();
|
|
await expectNoErrorAlert(page);
|
|
expectNoErrors(sink);
|
|
} finally {
|
|
await context.close();
|
|
}
|
|
});
|
|
|
|
test("invalid file upload shows error, no crash", async ({ page }) => {
|
|
const sink = trackErrors(page);
|
|
await openTool(page, "flip-png");
|
|
await uploadImage(page, corruptPng);
|
|
await expect(errorAlert(page)).toBeVisible();
|
|
await expect(resultImage(page)).toHaveCount(0);
|
|
expectNoErrors(sink);
|
|
});
|
|
|
|
for (const fixture of [onePixelPng, largePng]) {
|
|
test(`handles ${fixture.name} correctly`, async ({ page }) => {
|
|
const sink = trackErrors(page);
|
|
await openTool(page, "flip-png");
|
|
await uploadImage(page, fixture);
|
|
await expect(resultImage(page)).toBeVisible();
|
|
expectNoErrors(sink);
|
|
});
|
|
}
|