fix(uptime): отличать ошибки опроса от измеренных потерь Ping
This commit is contained in:
1 parent
ca23284486
commit
8fb46b1552
35 files changed
+1582
-78
No files matched your search
@@ -0,0 +1,25 @@
|
||||
import {test,expect,type Page} from "@playwright/test"
|
||||
async function setup(page:Page,known:boolean){
|
||||
const server={id:1,name:"Источник",host:"192.0.2.1",type:"exit-node",enabled:true,country:"RU",site:"TEST",asn:"64512",status:"online",latency:1,os:"7",model:"CHR",sessions:0,wanUplinks:[]}
|
||||
const time="2026-10-12T10:30:00Z",point=known?{sampledAt:time,rtt:null,loss:100,status:"down"}:{sampledAt:time,rtt:null,loss:null,status:"unknown",error:"RouterOS API error 401: Unauthorized"}
|
||||
const probe={id:"probe",srcServerId:"1",name:"Проверка",target:"192.0.2.10",filter:"—",srcInterface:"",rtt:null,loss:known?100:null,status:known?"down":"unknown",series:[],enabled:true,showOnDashboard:true,observations:{samples:[point]}}
|
||||
await page.route("**/health",r=>r.fulfill({json:{status:"ok"}}))
|
||||
await page.route("**/api/**",r=>{const path=new URL(r.request().url()).pathname
|
||||
const json=path==="/api/auth/config"?{required:false}:path==="/api/servers"?[server]:path==="/api/uptime/overview"?{probes:[probe],resources:[],rangeStartAt:"2026-10-12T10:00:00Z",rangeEndAt:"2026-10-12T11:00:00Z"}:path==="/api/uptime/speed-probes"?{probes:[]}:path==="/api/uptime/speed-test/runs"?{runs:[]}:{}
|
||||
return r.fulfill({json})
|
||||
})
|
||||
await page.goto("/uptime?tab=probes")
|
||||
}
|
||||
for(const width of[1440,320])test(`Ping ${width}: API failure is no data, not measured loss`,async({page})=>{
|
||||
await page.setViewportSize({width,height:1000});await setup(page,false)
|
||||
await expect(page.getByText("Ошибка измерения: RouterOS API error 401: Unauthorized",{exact:true})).toBeVisible()
|
||||
await expect(page.getByText("100%",{exact:true})).toHaveCount(0)
|
||||
await page.getByRole("button",{name:/Нет данных/}).first().click();await expect(page).toHaveURL(/status=unknown/)
|
||||
await expect(page.getByText("Ошибка измерения: RouterOS API error 401: Unauthorized",{exact:true})).toBeVisible()
|
||||
expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth)).toBe(true)
|
||||
await page.screenshot({path:`docs/ux-ui/screens/ping-measurement-unknown-${width}-2026-10-12.png`,fullPage:true})
|
||||
})
|
||||
test("Ping measured 100 percent loss remains a real down observation",async({page})=>{
|
||||
await setup(page,true);await expect(page.getByText("100%",{exact:true})).toBeVisible()
|
||||
await expect(page.getByText(/Ошибка измерения:/)).toHaveCount(0)
|
||||
})
|
||||
Reference in new issue
Block a user