mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
test: for tools - generators, text and verdicts, smoke
This commit is contained in:
@@ -7,6 +7,29 @@ import {
|
||||
trackErrors,
|
||||
} from "./helpers/page";
|
||||
|
||||
const GENERATOR_IDS = [
|
||||
"create-empty-png",
|
||||
"random-noise-png",
|
||||
"linear-gradient-png",
|
||||
"color-spectrum-png",
|
||||
"random-colors-png",
|
||||
"draw-grid-png",
|
||||
"placeholder-png",
|
||||
"blend-two-png",
|
||||
"step-colors-png",
|
||||
"emoji-to-png",
|
||||
"color-wheel-png",
|
||||
"complementary-png",
|
||||
"triadic-png",
|
||||
"tetradic-png",
|
||||
"analogous-png",
|
||||
"monochromatic-png",
|
||||
"shades-png",
|
||||
"mix-colors-png",
|
||||
"sort-colors-png",
|
||||
"text-to-png",
|
||||
] as const;
|
||||
|
||||
test.describe("generators", () => {
|
||||
test("single-color-png auto-runs and reacts to parameters", async ({
|
||||
page,
|
||||
@@ -24,10 +47,16 @@ test.describe("generators", () => {
|
||||
expectNoErrors(sink);
|
||||
});
|
||||
|
||||
test("create-empty-png page opens without errors", async ({ page }) => {
|
||||
const sink = trackErrors(page);
|
||||
await openTool(page, "create-empty-png");
|
||||
await expect(page.getByRole("heading", { level: 1 })).toBeVisible();
|
||||
expectNoErrors(sink);
|
||||
});
|
||||
for (const id of GENERATOR_IDS) {
|
||||
test(`tool ${id} produces a result image`, async ({ page }) => {
|
||||
const sink = trackErrors(page);
|
||||
await openTool(page, id);
|
||||
await expect(resultImage(page)).toBeVisible();
|
||||
await expect(page.getByRole("button", { name: "Generate" })).toHaveCount(
|
||||
0,
|
||||
);
|
||||
await expectNoErrorAlert(page);
|
||||
expectNoErrors(sink);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -69,6 +69,12 @@ export function rangeInput(page: Page, name: RegExp | string): Locator {
|
||||
return page.getByRole("slider", { name });
|
||||
}
|
||||
|
||||
export async function renderText(page: Page, value: string): Promise<void> {
|
||||
const input = page.getByRole("textbox", { name: "Text data" });
|
||||
await input.fill(value);
|
||||
await page.getByRole("button", { name: "Render text" }).click();
|
||||
}
|
||||
|
||||
export async function uploadImage(page: Page, file: SourceFile): Promise<void> {
|
||||
const input = page.locator('input[type="file"]');
|
||||
await expect(input).toHaveCount(1);
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
expectNoErrorAlert,
|
||||
expectNoErrors,
|
||||
openTool,
|
||||
renderText,
|
||||
resultImage,
|
||||
trackErrors,
|
||||
uploadImage,
|
||||
@@ -30,14 +31,14 @@ for (const [id, input] of [
|
||||
"rgb-values-to-png",
|
||||
Array.from({ length: 32 }, () => "rgba(255,0,0,255)").join(" "),
|
||||
],
|
||||
["data-uri-to-png", `data:image/png;base64,${tinyBase64}`],
|
||||
["svg-to-png", svgMarkup],
|
||||
] as const) {
|
||||
test(`text input → ${id} produces result image`, async ({ page }) => {
|
||||
const sink = trackErrors(page);
|
||||
await openTool(page, id);
|
||||
await expect(async () => {
|
||||
await page.getByRole("textbox", { name: "Text data" }).fill(input);
|
||||
await page.getByRole("button", { name: "Render text" }).click();
|
||||
await renderText(page, input);
|
||||
await expect(resultImage(page)).toBeVisible();
|
||||
}).toPass({ timeout: 25_000 });
|
||||
await expectNoErrorAlert(page);
|
||||
@@ -60,17 +61,13 @@ test("verify-is-png renders different verdicts for valid and invalid input", asy
|
||||
page,
|
||||
}) => {
|
||||
await openTool(page, "verify-is-png");
|
||||
const input = page.getByRole("textbox", { name: "Text data" });
|
||||
const render = page.getByRole("button", { name: "Render text" });
|
||||
const verdict = verdictStatus(page);
|
||||
|
||||
await input.fill(tinyBase64);
|
||||
await render.click();
|
||||
await renderText(page, tinyBase64);
|
||||
await expect(verdict).toBeVisible();
|
||||
const validText = await verdict.textContent();
|
||||
|
||||
await input.fill("aGVsbG8=");
|
||||
await render.click();
|
||||
await renderText(page, "aGVsbG8=");
|
||||
await expect(verdict).toBeVisible();
|
||||
const invalidText = await verdict.textContent();
|
||||
expect(invalidText).not.toBe(validText);
|
||||
|
||||
@@ -20,6 +20,10 @@ const CASES: { id: string; kind: Kind; file?: SourceFile }[] = [
|
||||
{ id: "convert-png-to-webp", kind: "image" },
|
||||
{ id: "png-to-bmp", kind: "image" },
|
||||
{ id: "png-to-base64", kind: "text-out" },
|
||||
{ id: "png-to-data-uri", kind: "text-out" },
|
||||
{ id: "png-to-hex", kind: "text-out" },
|
||||
{ id: "png-to-bytes", kind: "text-out" },
|
||||
{ id: "png-to-rgb-values", kind: "text-out" },
|
||||
// ── alpha ──────────────────────────────────────────────────
|
||||
{ id: "remove-background-png", kind: "image", file: transparentPng },
|
||||
{ id: "remove-color-from-png", kind: "image", file: transparentPng },
|
||||
@@ -53,9 +57,25 @@ const CASES: { id: string; kind: Kind; file?: SourceFile }[] = [
|
||||
{ id: "auto-contrast-png", kind: "image" },
|
||||
{ id: "png-to-hsl", kind: "image" },
|
||||
{ id: "png-to-cmyk", kind: "image" },
|
||||
{ id: "gamma-png", kind: "image" },
|
||||
{ id: "temperature-png", kind: "image" },
|
||||
{ id: "custom-palette-png", kind: "image" },
|
||||
{ id: "adjust-brightness-contrast-png", kind: "image" },
|
||||
{ id: "change-png-opacity", kind: "image" },
|
||||
{ id: "change-png-hue", kind: "image" },
|
||||
{ id: "swap-channels-png", kind: "image" },
|
||||
{ id: "black-and-white-png", kind: "image" },
|
||||
{ id: "posterize-png", kind: "image" },
|
||||
{ id: "png-to-hsv", kind: "image" },
|
||||
{ id: "png-to-hsi", kind: "image" },
|
||||
{ id: "png-to-ycbcr", kind: "image" },
|
||||
{ id: "png-to-lab", kind: "image" },
|
||||
// ── geometry ───────────────────────────────────────────────
|
||||
{ id: "flip-png", kind: "image" },
|
||||
{ id: "rotate-png", kind: "image" },
|
||||
{ id: "rotate-free-png", kind: "image" },
|
||||
{ id: "fit-on-background-png", kind: "image" },
|
||||
{ id: "add-padding-png", kind: "image" },
|
||||
{ id: "add-border-png", kind: "image" },
|
||||
{ id: "tile-png", kind: "image" },
|
||||
{ id: "change-canvas-size-png", kind: "image" },
|
||||
|
||||
Reference in New Issue
Block a user