fix(ui): сохранять каталог устройств диагностики при отказе
This commit is contained in:
1 parent
6fa8e5bfd1
commit
cba3db1508
7 files changed
+78
-46
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { test, expect, type Page } from "@playwright/test"
|
||||
const devices=[{id:1,name:"Первый",host:"192.0.2.1",site:"Тест",country:"RU",asn:"AS64500",type:"vps",enabled:true,status:"online",latency:null}]
|
||||
const devices=[{id:1,name:"Первый",host:"192.0.2.1",site:"Тест",country:"RU",asn:"AS64500",type:"exit-node",enabled:true,status:"online",latency:null}]
|
||||
async function routes(page:Page){
|
||||
await page.route("**/health",r=>r.fulfill({json:{ok:true}}))
|
||||
await page.route("**/api/**",r=>{const p=new URL(r.request().url()).pathname;return r.fulfill({json:p==="/api/servers"?devices:p==="/api/auth/config"?{required:false}:p.endsWith("/ros-src-address")?{ipv4:"192.0.2.1"}:{tunnels:[]}})})
|
||||
@@ -33,3 +33,21 @@ test("Диагностика: уход со страницы не перенос
|
||||
await page.route("**/api/servers/1/probes/run",async r=>{if(first){first=false;await gate;await r.fulfill({json:{output:"СТАРЫЙ ВЫВОД"}}).catch(()=>{})}else await r.fulfill({json:{output:"НОВЫЙ ВЫВОД"}})})
|
||||
await page.goto("/probes");await run(page).click();await expect(run(page)).toBeDisabled();await page.goto("/terminal");release();await page.goto("/probes");await run(page).click();await expect(page.getByText("НОВЫЙ ВЫВОД",{exact:true})).toBeVisible();await expect(page.getByText("СТАРЫЙ ВЫВОД",{exact:true})).toHaveCount(0)
|
||||
})
|
||||
|
||||
for(const malformed of [false,true])test("Диагностика: первоначальный отказ каталога и повтор "+malformed,async({page})=>{
|
||||
let fail=true;await page.route("**/api/servers",r=>r.fulfill(fail?(malformed?{json:[{...devices[0],enabled:"yes"}]}:{status:403,json:{error:"Каталог запрещён"}}):{json:devices}))
|
||||
await page.goto("/probes");await expect(page.getByRole("alert",{name:"Каталог диагностики"})).toContainText("Устройства пока неизвестны");await expect(run(page)).toBeDisabled()
|
||||
fail=false;await page.getByRole("button",{name:"Обновить устройства диагностики"}).click();await expect(run(page)).toBeEnabled()
|
||||
})
|
||||
test("Диагностика: фоновая ошибка сохраняет список и цель до повтора",async({page})=>{
|
||||
let fail=false;await page.route("**/api/servers",r=>r.fulfill(fail?{status:503,json:{error:"Каталог недоступен"}}:{json:devices}))
|
||||
await page.goto("/probes");await expect(run(page)).toBeEnabled();await page.getByRole("textbox",{name:"Цель диагностики"}).fill("198.51.100.5");fail=true;await page.getByRole("button",{name:"Обновить устройства диагностики"}).click()
|
||||
await expect(page.getByRole("alert",{name:"Каталог диагностики"})).toContainText("Последний список сохранён");await expect(page.getByRole("option",{name:/Первый/})).toBeVisible();await expect(run(page)).toBeDisabled();await expect(page.getByRole("textbox",{name:"Цель диагностики"})).toHaveValue("198.51.100.5")
|
||||
fail=false;await page.getByRole("button",{name:"Обновить устройства диагностики"}).click();await expect(run(page)).toBeEnabled();await expect(page.getByRole("textbox",{name:"Цель диагностики"})).toHaveValue("198.51.100.5")
|
||||
})
|
||||
test("Диагностика: пустой каталог отличается от отказа",async({page})=>{
|
||||
await page.route("**/api/servers",r=>r.fulfill({json:[]}));await page.goto("/probes");await expect(page.getByRole("status").filter({hasText:"В каталоге нет устройств"})).toBeVisible();await expect(page.getByRole("alert",{name:"Каталог диагностики"})).toHaveCount(0);await expect(run(page)).toBeDisabled()
|
||||
})
|
||||
test("Диагностика: неизвестный статус не становится offline",async({page})=>{
|
||||
await page.route("**/api/servers",r=>r.fulfill({json:[{...devices[0],status:null}]}));await page.goto("/probes");await expect(run(page)).toBeEnabled();await expect(page.getByRole("option",{name:/Первый/})).not.toHaveAccessibleName(/Не в сети|offline/i)
|
||||
})
|
||||
Reference in new issue
Block a user