Files
rf4-spotter/apps/web/tests/tackle.spec.ts
T

46 lines
2.5 KiB
TypeScript

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");
});