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

This commit is contained in:
Denozordec committed 2026-09-23 09:24:18 +07:00
1 parent f7e0e20673
commit fd7a08d5dc
7 files changed
+157 -9

No files matched your search

+50
View File
@@ -473,3 +473,53 @@ test("ручной Ping: поздняя ошибка выбранной проб
await expect(page.getByText("Ошибка прежнего контекста", { exact: true })).toHaveCount(0)
await expect(page.getByRole("button", { name: "Новая проба", exact: true })).toBeEnabled()
})
test("URL мониторинга: вкладка, поиск, reload и история без записи", async ({ page }) => {
const control = await setup(page, "/uptime?probe=p1&keep=1", 0, false, "mm:uptime:read")
const search = page.getByPlaceholder("Имя, IP-адрес, фильтр…")
await search.fill("нет совпадений")
await expect(page.locator("[data-probe-id]")).toHaveCount(0)
await page.getByRole("button", { name: /Скорость/ }).click()
await expect(page).toHaveURL(url => url.searchParams.get("tab") === "speed" && url.searchParams.get("q") === "нет совпадений" && url.searchParams.get("probe") === "p1")
await page.reload()
await expect(page.getByRole("button", { name: /Скорость/ })).toHaveAttribute("aria-pressed", "true")
await page.goBack()
await expect(search).toHaveValue("нет совпадений")
await expect(page.locator("[data-probe-id]")).toHaveCount(0)
await page.goForward()
await expect(page.getByRole("button", { name: /Скорость/ })).toHaveAttribute("aria-pressed", "true")
await page.getByRole("button", { name: /Пинг-пробы/ }).click()
await page.getByRole("button", { name: "Сбросить", exact: true }).click()
await expect(page).toHaveURL(/\/uptime\?probe=p1&keep=1$/)
await expect(page.locator("[data-probe-id]")).toHaveCount(1)
expect(control.writes).toEqual([])
})
test("URL мониторинга: статус и неизвестный сервер не расширяют выдачу", async ({ page }) => {
const control = await setup(page, '/uptime?probe=p1&keep=1&status=down&servers=%5B%22999%22%5D', 0, false, "mm:uptime:read")
await expect(page.locator("[data-probe-id]")).toHaveCount(0)
await page.getByRole("button", { name: "Сбросить", exact: true }).click()
await expect(page.locator("[data-probe-id]")).toHaveCount(1)
await page.getByRole("button", { name: /^OK/ }).click()
await expect(page).toHaveURL(url => url.searchParams.get("status") === "up")
await expect(page.locator("[data-probe-id]")).toHaveCount(0)
await page.goBack()
await expect(page.locator("[data-probe-id]")).toHaveCount(1)
await page.locator('button[aria-pressed]').filter({ hasText: "Источник" }).click()
await expect(page).toHaveURL(url => url.searchParams.get("servers") === '["1"]')
await page.reload()
await expect(page.locator('button[aria-pressed]').filter({ hasText: "Источник" })).toHaveAttribute("aria-pressed", "true")
expect(control.writes).toEqual([])
})
for (const invalid of ["tab=unknown", "status=bad", "servers=%7B%7D", "q=a&q=b"]) {
test(`URL мониторинга: неверный параметр ${invalid}`, async ({ page }) => {
const control = await setup(page, "/uptime?probe=p1&keep=1&" + invalid)
await expect(page.getByRole("alert").filter({ hasText: "Параметры ссылки требуют внимания" })).toBeVisible()
await expect(page.locator("[data-probe-id]")).toHaveCount(0)
await page.getByRole("button", { name: "Сбросить параметры мониторинга", exact: true }).click()
await expect(page).toHaveURL(/\/uptime\?probe=p1&keep=1$/)
await expect(page.locator("[data-probe-id]")).toHaveCount(1)
expect(control.writes).toEqual([])
})
}