mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Expand test coverage across all layers via 14 parallel agents: Unit tests (3,378 total, +534): - First-ever AI sidecar tests (157 tests covering bridge lifecycle, all 12 tool modules) - API route infrastructure (auth, pipeline, batch, settings, teams, roles, audit, api-keys, files, docs) - Lib coverage improvements (audit 7%->95%, worker-pool 33%->100%) - Web store/lib gap fills (features-store, tool-registry) Integration tests (4,403 total, +903): - Expanded 19 tool test files with parameter variations, format edge cases, boundary values - Cross-format matrix: 290 tests covering 14 tools x 17 formats - Adversarial/edge cases: 63 tests for extreme inputs, concurrent requests, corrupted files E2E-Docker (125 new tests): - Expanded 8 spec files + 1 new file covering all 49 tools - Added HEIC/format handling, auth failures, download verification GUI E2E (expanded 28 spec files): - Navigation, responsive layout, keyboard shortcuts - All 51 tool UIs with settings, processing, display modes - Batch/pipeline workflows, settings/RBAC, visual regression - Resilience, accessibility (ARIA, contrast, focus), performance budgets
95 lines
3.3 KiB
TypeScript
95 lines
3.3 KiB
TypeScript
import { expect, test, uploadTestImage } from "./helpers";
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// GUI E2E: Beautify Screenshot Tool
|
|
// ---------------------------------------------------------------------------
|
|
|
|
test.describe("Beautify Screenshot", () => {
|
|
test("renders tool page with settings", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
await expect(page.getByText("Beautify Screenshot").first()).toBeVisible();
|
|
});
|
|
|
|
test("uploads image and shows preview", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
await uploadTestImage(page);
|
|
await page.waitForTimeout(1000);
|
|
|
|
// Verify the image appeared in the preview area
|
|
await expect(page.locator("img").first()).toBeVisible();
|
|
});
|
|
|
|
test("shows preset cards", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
|
|
// Quick Presets section is open by default
|
|
await expect(page.getByText("Quick Presets").first()).toBeVisible();
|
|
await expect(page.getByText("Purple Haze").first()).toBeVisible();
|
|
await expect(page.getByText("Flamingo").first()).toBeVisible();
|
|
await expect(page.getByText("Ocean").first()).toBeVisible();
|
|
});
|
|
|
|
test("shows background, frame, spacing, and shadow sections", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
|
|
await expect(page.getByText("Background").first()).toBeVisible();
|
|
await expect(page.getByText("Device Frame").first()).toBeVisible();
|
|
await expect(page.getByText("Spacing").first()).toBeVisible();
|
|
await expect(page.getByText("Shadow").first()).toBeVisible();
|
|
});
|
|
|
|
test("submit button uses data-testid", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
await uploadTestImage(page);
|
|
|
|
await expect(page.getByTestId("beautify-submit")).toBeVisible();
|
|
});
|
|
|
|
test("processes image with default settings", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
await uploadTestImage(page);
|
|
await page.waitForTimeout(1500);
|
|
|
|
// Click the Beautify button
|
|
const processBtn = page.getByTestId("beautify-submit");
|
|
await expect(processBtn).toBeEnabled({ timeout: 5000 });
|
|
await processBtn.click();
|
|
|
|
// Wait for download link to appear (processing may be fast enough to skip spinner)
|
|
await expect(
|
|
page
|
|
.getByTestId("beautify-download")
|
|
.or(page.getByRole("link", { name: /download/i }).first()),
|
|
).toBeVisible({ timeout: 30_000 });
|
|
});
|
|
|
|
test("applies preset and processes", async ({ loggedInPage: page }) => {
|
|
await page.goto("/beautify");
|
|
await uploadTestImage(page);
|
|
await page.waitForTimeout(1500);
|
|
|
|
// Click a preset card
|
|
const presetCards = page.locator("button").filter({ hasText: /purple haze|flamingo|ocean/i });
|
|
if (
|
|
await presetCards
|
|
.first()
|
|
.isVisible({ timeout: 3000 })
|
|
.catch(() => false)
|
|
) {
|
|
await presetCards.first().click();
|
|
await page.waitForTimeout(500);
|
|
}
|
|
|
|
// Process
|
|
const processBtn = page.getByTestId("beautify-submit");
|
|
await expect(processBtn).toBeEnabled({ timeout: 5000 });
|
|
await processBtn.click();
|
|
|
|
await expect(
|
|
page
|
|
.getByTestId("beautify-download")
|
|
.or(page.getByRole("link", { name: /download/i }).first()),
|
|
).toBeVisible({ timeout: 30_000 });
|
|
});
|
|
});
|