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