fix(ui): сохранять фильтры ресурсов в URL

This commit is contained in:
Denozordec committed 2026-09-23 09:28:03 +07:00
1 parent fd7a08d5dc
commit 0734679fd6
7 files changed
+85 -6

No files matched your search

+44
View File
@@ -523,3 +523,47 @@ for (const invalid of ["tab=unknown", "status=bad", "servers=%7B%7D", "q=a&q=b"]
expect(control.writes).toEqual([])
})
}
async function resourceSetup(page: Page, extra = "") {
const control = await setup(page, '/uptime?tab=resources&probe=p1&keep=1&q=ping' + extra, 0, false, "mm:uptime:read")
await page.route("**/api/uptime/overview?*", route => route.fulfill({ json: { probes: [], resources: [{ serverId: "1", hasData: true, cpu: 10, cpuHistory: [10], ramUsed: 100, ramTotal: 1000, hddUsed: 10, hddTotal: 100, uptimeSeconds: 60, boardName: "CHR" }] } }))
await page.reload()
return control
}
test("Resources URL: фильтры, смена вкладки, история и сброс сохраняют Ping-контекст", async ({ page }) => {
const control = await resourceSetup(page)
const rows = page.locator("tr[data-row-id]")
await expect(rows).toHaveCount(1)
const search = page.getByPlaceholder("Поиск по имени, площадке…")
await search.fill("Источник")
await page.getByRole("button", { name: "JumpHost", exact: true }).click()
await expect(rows).toHaveCount(0)
await expect(page).toHaveURL(url => url.searchParams.get("rtype") === "jump-host" && url.searchParams.get("rq") === "Источник")
await page.goBack()
await expect(rows).toHaveCount(1)
await page.goForward()
await expect(rows).toHaveCount(0)
await page.reload()
await expect(search).toHaveValue("Источник")
await expect(rows).toHaveCount(0)
await page.getByRole("button", { name: /Пинг-пробы/ }).click()
await expect(page.getByPlaceholder("Имя, IP-адрес, фильтр…")).toHaveValue("ping")
await page.getByRole("button", { name: /Ресурсы/ }).click()
await expect(search).toHaveValue("Источник")
await expect(rows).toHaveCount(0)
await page.getByRole("button", { name: "Сбросить фильтры ресурсов", exact: true }).click()
await expect(rows).toHaveCount(1)
await expect(page).toHaveURL(url => !url.searchParams.has("rq") && !url.searchParams.has("rtype") && url.searchParams.get("q") === "ping" && url.searchParams.get("probe") === "p1" && url.searchParams.get("keep") === "1")
expect(control.writes).toEqual([])
})
for (const extra of ["&rtype=unknown", "&rq=a&rq=b"]) {
test(`Resources URL: неверные фильтры ${extra}`, async ({ page }) => {
await resourceSetup(page, extra)
await expect(page.getByRole("alert").filter({ hasText: "фильтры ресурсов" })).toBeVisible()
await expect(page.locator("tr[data-row-id]")).toHaveCount(0)
await page.getByRole("button", { name: "Сбросить фильтры ресурсов", exact: true }).click()
await expect(page.locator("tr[data-row-id]")).toHaveCount(1)
})
}