Files
MikrotikManager/tests/e2e/route-optimizer-observed.spec.ts
T

16 lines
2.0 KiB
TypeScript

import {test,expect} from "@playwright/test"
for(const hasProbe of [true,false])test("Оптимизатор: исходные измерения без clamp/"+hasProbe,async({page})=>{
await page.route("**/health",r=>r.fulfill({json:{ok:true}}))
const probe={id:"p",srcServerId:"1",dstServerId:"2",srcInterface:"ether1",dstInterface:"ether2",enabled:true,lastPingRttMs:0,lastPingLossPct:0,lastTxAvgMbps:150.25,lastRxAvgMbps:null,lastPingAt:"2020-01-01T00:00:00Z"}
await page.route("**/api/**",r=>{const p=new URL(r.request().url()).pathname;return r.fulfill({json:p==="/api/auth/config"?{required:false}:p==="/api/servers"?["home-router","jump-host","exit-node"].map((type,i)=>({id:i+1,name:"Router"+i,host:"192.0.2."+i,type,country:"RU",enabled:true,status:"online",latency:10,...(i===0?{wanUplinks:[{id:"w",name:"WAN",iface:"ether1",isp:"ISP",ip:"198.51.100.1",maxDl:100,maxUl:100}]}:{})})):p==="/api/filters/rules"?{rulesets:[]}:p==="/api/uptime/speed-probes"?{probes:hasProbe?[probe]:[]}:p==="/api/ospf/catalog"?{interfaces:[],instances:[],neighbors:[],bfdSessions:[],routes:[],failures:[]}:p.endsWith("/preview")?{serverId:1,serverName:"Router0",pingWeight:60,interfacesTotal:0,changedCount:0,unchangedCount:0,interfaces:[],changes:[]}:{}})})
await page.goto("/route-optimizer")
const matrix=page.getByRole("table").filter({hasText:"WAN-аплинк"})
await expect(matrix.locator("tr[data-row-id]")).toHaveCount(1)
await expect(matrix).toContainText(hasProbe?"0 мс":"— мс")
await expect(matrix).toContainText(hasProbe?"↓150.25 ↑—":"↓— ↑—")
await expect(matrix).toContainText(hasProbe?"Скорость: дата неизвестна":"Измерения отсутствуют")
if(hasProbe)await expect(matrix.locator("time")).toHaveAttribute("datetime","2020-01-01T00:00:00Z")
await page.getByRole("button",{name:"Маршруты (1)",exact:true}).click()
await expect(page.getByRole("table").filter({hasText:"# Маршрут"})).toContainText("Ping модели")
})