import { test, expect } from "@playwright/test" test.beforeEach(async ({ page }) => { await page.route("**/health", r => r.fulfill({ json: { ok: true } })) await page.route("**/api/**", r => { const p = new URL(r.request().url()).pathname return r.fulfill({ json: p === "/api/auth/config" ? { required: false } : p === "/api/servers" ? [1, 2].map(id => ({ id, name: "Роутер " + id, host: "192.0.2." + id, enabled: true, type: "home-router", country: "RU", status: "online" })) : p === "/api/ipsec" ? { servers: [1, 2].map(id => ({ serverId: String(id), serverName: "Роутер " + id, initialized: false, ike2Ready: false, natRuleManaged: false, clientsTotal: 0, clientsOnline: 0, peers: [] })), clients: [] } : {} }) }) }) test("IPsec: URL сохраняет устройство и вкладку после reload", async ({ page }) => { await page.goto("/ipsec?server=2&tab=server") await expect(page.getByRole("tab", { name: "Сервер", exact: true })).toHaveAttribute("aria-selected", "true") await expect(page.getByRole("button", { name: "Инициализировать", exact: true })).toHaveCount(1) await page.getByRole("tab", { name: "Клиенты", exact: true }).click() await expect(page).toHaveURL(/server=2$/) await page.reload() await expect(page.getByRole("tab", { name: "Клиенты", exact: true })).toHaveAttribute("aria-selected", "true") await page.getByRole("tab", { name: "Сервер", exact: true }).click() await expect(page).toHaveURL(/server=2&tab=server$/) }) test("IPsec: неизвестное устройство из URL не подменяется общим срезом", async ({ page }) => { await page.goto("/ipsec?server=999&tab=server") await expect(page.getByRole("alert").filter({ hasText: "Устройство из ссылки не найдено" })).toBeVisible() await expect(page.getByRole("button", { name: "Инициализировать", exact: true })).toHaveCount(0) await expect(page.getByRole("button", { name: "Новый клиент", exact: true })).toBeDisabled() })