Files
MikrotikManager/tests/e2e/ipsec-links.spec.ts
T

29 lines
2.0 KiB
TypeScript

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()
})