29 lines
2.0 KiB
TypeScript
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()
|
|
})
|