import { expect, test } from "@playwright/test"; test("tackle catalog exposes an explicit empty state for unmatched filters", async ({ page }) => { await page.setViewportSize({ width: 320, height: 800 }); await page.goto("/tackle?category=lure&brand=NoSuchBrand&family=NoSuchFamily"); await expect(page.getByRole("heading", { name: "Подтверждённых карточек пока нет" })).toBeVisible(); await expect(page.getByRole("link", { name: "Сбросить" })).toHaveAttribute("href", "/tackle"); await expect(page.getByLabel("Категория")).toHaveValue("lure"); await expect(page.getByLabel("Бренд")).toHaveValue("NoSuchBrand"); await expect(page.getByLabel("Семейство")).toHaveValue("NoSuchFamily"); const dimensions = await page.evaluate(() => ({ clientWidth: document.documentElement.clientWidth, scrollWidth: document.documentElement.scrollWidth, })); expect(dimensions.scrollWidth).toBeLessThanOrEqual(dimensions.clientWidth); }); test("unknown tackle detail has a navigable not-found state", async ({ page }) => { await page.goto("/tackle/items/00000000-0000-0000-0000-000000000000"); await expect(page.getByRole("heading", { name: "Такой карточки нет в каталоге" })).toBeVisible(); await expect(page.getByRole("link", { name: "Открыть каталог" })).toHaveAttribute("href", "/tackle"); }); test("tackle analytics keeps an honest empty state", async ({ page }) => { await page.goto("/tackle/analytics"); await expect(page.getByRole("heading", { name: "Сочетания снастей" })).toBeVisible(); await expect(page.getByLabel("Фильтры сочетаний снастей")).toBeVisible(); await expect(page.locator("[data-analytics-results]")).toBeVisible(); await expect(page.getByText(/не рейтинг снасти/i)).toBeVisible(); }); test("tackle analytics keeps selected filters and exposes a clean reset", async ({ page }) => { await page.goto("/tackle/analytics?waterbody=kuori&fish=pike&method=spinning&hours=168"); await expect(page.getByLabel("Фильтры сочетаний снастей")).toBeVisible(); await expect(page.getByLabel("Водоём")).toHaveValue("kuori"); await expect(page.getByLabel("Рыба")).toHaveValue("pike"); await expect(page.getByLabel("Метод")).toHaveValue("spinning"); await expect(page.getByLabel("Период")).toHaveValue("168"); await expect(page.getByRole("link", { name: "Сбросить" })).toHaveAttribute("href", "/tackle/analytics"); });