fix(ui): восстанавливать фильтры WireGuard из ссылки

This commit is contained in:
Denozordec committed 2026-10-04 12:30:43 +07:00
1 parent c6702efcc4
commit e51964b4d2
8 files changed
+103 -13

No files matched your search

+26
View File
@@ -527,3 +527,29 @@ for (const oldFails of [false, true]) {
await expect(sheet.getByRole("button", { name: "Откатить", exact: true })).toBeVisible()
})
}
test("WireGuard URL filters: search/tab/status reload and history preserve selected device", async ({ page }) => {
const control=await setup(page,"/wireguard?server=2&interface=*%2F2&keep=1&status=down&q=wg-same#context")
const rows=page.locator("tr[data-row-id]")
await expect(rows).toHaveCount(1);await expect(page.getByPlaceholder("Поиск по имени, серверу, IP…")).toHaveValue("wg-same")
await page.getByRole("tab",{name:/Пиры/}).click()
await expect(page).toHaveURL(url=>url.searchParams.get("tab")==="peers"&&url.searchParams.get("status")==="down"&&url.hash==="#context")
const search=page.getByPlaceholder("Поиск по ключу, IP, endpoint…");await search.fill("10.0.2.1")
await expect(page).toHaveURL(url=>url.searchParams.get("q")==="10.0.2.1"&&url.searchParams.get("server")==="2"&&url.searchParams.get("interface")==="*/2")
await page.reload();await expect(search).toHaveValue("10.0.2.1");await expect(rows).toHaveCount(1)
await page.getByRole("tab",{name:/Интерфейсы/}).click();await expect(rows).toHaveCount(1)
await page.goBack();await expect(page.getByRole("tab",{name:/Пиры/})).toHaveAttribute("aria-selected","true")
await page.goForward();await page.getByRole("button",{name:/^UP/}).click();await expect(rows).toHaveCount(0)
await expect(page).toHaveURL(url=>url.searchParams.get("status")==="up"&&url.searchParams.get("keep")==="1")
await page.reload();await expect(rows).toHaveCount(0);expect(control.posts).toEqual([])
})
for(const invalid of ["tab=bad","status=bad","q=a&q=b","tab=peers&tab=cli"])test("WireGuard URL rejects invalid filters without widening/"+invalid,async({page})=>{
const control=await setup(page,"/wireguard?server=2&interface=*%2F2&keep=1&"+invalid)
const warning=page.getByRole("alert",{name:"Фильтры WireGuard",exact:true})
await expect(warning).toBeVisible();await expect(page.locator("tr[data-row-id]")).toHaveCount(0)
await expect(page.getByRole("button",{name:"Новый интерфейс",exact:true}).first()).toBeDisabled()
await warning.getByRole("button",{name:"Сбросить фильтры",exact:true}).click()
await expect(warning).toHaveCount(0);await expect(page.locator("tr[data-row-id]")).toHaveCount(1)
await expect(page).toHaveURL(url=>url.searchParams.get("server")==="2"&&url.searchParams.get("interface")==="*/2"&&url.searchParams.get("keep")==="1")
expect(control.posts).toEqual([])
})