Files
product-import-ai/tests/ui/catalog-maker.smoke.spec.ts
T

74 lines
3.3 KiB
TypeScript

// @ts-nocheck
import { test, expect } from "playwright/test";
test("catalog maker shell loads without page errors", async ({ page }) => {
const pageErrors = [];
page.on("pageerror", (error) => pageErrors.push(error.message));
await page.goto("/");
await expect(page.locator("#settingsButton")).toBeVisible();
await expect(page.locator("#recordId")).toBeVisible();
await expect(page.locator("#variantHeader")).toBeVisible();
await page.screenshot({ path: "test-results/catalog-maker-shell.png", fullPage: true });
expect(pageErrors).toEqual([]);
});
test("settings modal opens and shows local database controls", async ({ page }) => {
await page.goto("/");
await page.locator("#settingsButton").click();
await expect(page.locator("#settingsModal")).toBeVisible();
await expect(page.locator("#localDbHost")).toBeVisible();
await expect(page.locator("#testLocalDbButton")).toBeVisible();
});
test("manufacturer picker shows ten results and supports search", async ({ page }) => {
await page.goto("/");
await page.locator("#manufacturerTrigger").click();
await expect(page.locator("#manufacturerOptions .manufacturer-option")).toHaveCount(10);
await expect(page.locator("#manufacturerSearch")).toBeVisible();
await page.locator("#manufacturerSearch").fill("La Sportiva");
await expect(page.locator("#manufacturerOptions .manufacturer-option")).toHaveText(["La Sportiva"]);
});
test("catalog maker remains usable on a narrow viewport", async ({ page }) => {
await page.setViewportSize({ width: 390, height: 844 });
await page.goto("/");
await expect(page.locator("#sidebarDrawer")).toHaveAttribute("aria-hidden", "true");
await page.locator("#sidebarOpenButton").click();
await expect(page.locator("#findSourcesButton")).toBeVisible();
await expect(page.locator("#settingsButton")).toBeVisible();
await expect(page.locator("#sidebarOverlay")).toBeVisible();
await expect(page.locator(".secondary-panel")).toHaveCSS("order", "1");
await expect(page.locator(".main-workspace")).toHaveCSS("order", "2");
await page.screenshot({ path: "test-results/catalog-maker-mobile.png", fullPage: true });
});
test("left controls open in a responsive sidebar drawer", async ({ page }) => {
await page.goto("/");
await expect(page.locator("#sidebarDrawer")).toBeVisible();
await page.locator("#sidebarCloseButton").click();
await expect(page.locator("#sidebarDrawer")).toHaveAttribute("aria-hidden", "true");
await page.locator("#sidebarOpenButton").click();
await expect(page.locator("#sidebarDrawer")).toBeVisible();
await expect(page.locator("#sidebarOverlay")).toBeHidden();
});
test("theme toggle switches and persists dark mode", async ({ page }) => {
await page.goto("/");
await expect(page.locator("html")).not.toHaveClass(/dark/);
const lightPanelBackground = await page.locator("#sidebarDrawer").evaluate((element) => getComputedStyle(element).backgroundColor);
await page.locator("#themeToggle").click();
await expect(page.locator("html")).toHaveClass(/dark/);
await expect(page.locator("#themeToggle")).toHaveText("Light theme");
const darkPanelBackground = await page.locator("#sidebarDrawer").evaluate((element) => getComputedStyle(element).backgroundColor);
expect(darkPanelBackground).not.toBe(lightPanelBackground);
await page.reload();
await expect(page.locator("html")).toHaveClass(/dark/);
});