fix(ui): подтверждать переключение проб через API
This commit is contained in:
1 parent
2f5b617e8c
commit
4f235058be
4 files changed
+63
-21
No files matched your search
@@ -268,3 +268,38 @@ for (const speed of [false, true]) {
|
||||
await expect(dialog).toBeVisible()
|
||||
})
|
||||
}
|
||||
|
||||
for (const speed of [false, true]) {
|
||||
test(`переключение ${speed ? "Speed" : "Ping"}: ожидание API, отказ, повтор без потери состояния`, async ({ page }) => {
|
||||
await setup(page, "/uptime?probe=p1", 0, false, "mm:uptime:write")
|
||||
await page.getByRole("button", { name: "Пауза", exact: true }).click()
|
||||
if (speed) await page.getByRole("button", { name: /Скорость/ }).click()
|
||||
let calls = 0
|
||||
let fail = true
|
||||
let release!: () => void
|
||||
const pending = new Promise<void>(resolve => { release = resolve })
|
||||
await page.route(speed ? "**/api/uptime/speed-probes" : "**/api/uptime/probes", async route => {
|
||||
if (route.request().method() !== "PUT") return route.fallback()
|
||||
calls++
|
||||
expect(route.request().postDataJSON().probes[0].enabled).toBe(false)
|
||||
if (fail) await pending
|
||||
await route.fulfill({ status: fail ? 403 : 200, json: fail ? { error: "Forbidden" } : { ok: true } })
|
||||
})
|
||||
const toggle = page.getByRole("switch")
|
||||
await expect(toggle).toBeChecked()
|
||||
await toggle.click()
|
||||
await expect(toggle).toBeDisabled()
|
||||
await expect(toggle).toBeChecked()
|
||||
await expect.poll(() => calls).toBe(1)
|
||||
release()
|
||||
await expect(page.getByRole("alert").filter({ hasText: "Недостаточно прав" })).toBeVisible()
|
||||
await expect(toggle).toBeChecked()
|
||||
await expect(toggle).toBeEnabled()
|
||||
fail = false
|
||||
await toggle.click()
|
||||
await expect(toggle).not.toBeChecked()
|
||||
await expect(toggle).toBeEnabled()
|
||||
await expect(page.getByRole("alert").filter({ hasText: "Недостаточно прав" })).toHaveCount(0)
|
||||
expect(calls).toBe(2)
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user