fix(ui): сохранять фильтры ресурсов в URL
This commit is contained in:
1 parent
fd7a08d5dc
commit
0734679fd6
7 files changed
+85
-6
No files matched your search
@@ -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)
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user