fix(ui): блокировать изменение проб во время Speed-test
This commit is contained in:
1 parent
ce14f5de3e
commit
cc40a5e33d
4 files changed
+46
-2
No files matched your search
@@ -371,3 +371,32 @@ test("звезда дашборда: состояние меняется пос
|
||||
await expect(page.getByRole("button", { name: "Убрать с дашборда", exact: true })).toHaveAttribute("aria-pressed", "true")
|
||||
expect(calls).toBe(2)
|
||||
})
|
||||
|
||||
test("Speed-test: один запуск, запись проб заблокирована до ответа и освобождается при ошибке", async ({ page }) => {
|
||||
await setup(page, "/uptime?probe=p1", 0, false, "mm:uptime:write")
|
||||
await page.getByRole("button", { name: "Пауза", exact: true }).click()
|
||||
await page.getByRole("button", { name: /Скорость/ }).click()
|
||||
let calls = 0
|
||||
let release!: () => void
|
||||
const pending = new Promise<void>(resolve => { release = resolve })
|
||||
await page.route("**/api/uptime/speed-test", async route => {
|
||||
calls++
|
||||
await pending
|
||||
await route.fulfill({ status: 500, json: { error: "Измерение отклонено" } })
|
||||
})
|
||||
const run = page.getByRole("button", { name: "Запустить", exact: true })
|
||||
await run.evaluate(button => { (button as HTMLButtonElement).click(); (button as HTMLButtonElement).click() })
|
||||
await expect(run).toBeDisabled()
|
||||
await expect(page.getByRole("button", { name: "Удалить speed-пробу", exact: true })).toBeDisabled()
|
||||
await expect(page.getByRole("button", { name: "Редактировать speed-пробу", exact: true })).toBeDisabled()
|
||||
await expect(page.getByRole("switch")).toBeDisabled()
|
||||
await expect.poll(() => calls).toBe(1)
|
||||
await page.getByRole("button", { name: /Пинг-пробы/ }).click()
|
||||
await expect(page.getByRole("button", { name: "Показать на дашборде", exact: true })).toBeDisabled()
|
||||
await expect(page.getByRole("button", { name: "Обновить", exact: true })).toBeDisabled()
|
||||
release()
|
||||
await expect(page.getByRole("button", { name: "Показать на дашборде", exact: true })).toBeEnabled()
|
||||
await page.getByRole("button", { name: /Скорость/ }).click()
|
||||
await expect(run).toBeEnabled()
|
||||
await expect(page.getByText("Измерение отклонено", { exact: true }).first()).toBeVisible()
|
||||
})
|
||||
Reference in new issue
Block a user