Files
MikrotikManager/tests/e2e/traffic-volume.spec.ts

20 lines
2.1 KiB
TypeScript

import { test, expect } from "@playwright/test"
for(const width of[1440,320])test(`Объём трафика: положительные байты/бинарные единицы/неизвестная единица ${width}`,async({page})=>{
await page.setViewportSize({width,height:1000});let unit=true,rxTotal=1/1024,txTotal=1/1024**3
const server=()=>({id:"1",name:"Объём CHR",site:"TEST",country:"RU",status:"online",rxNow:0,txNow:0,rxPeak:0,txPeak:0,rxTotal,txTotal,rxSeries:[0,0],txSeries:[0,0],sessions:1,...(unit?{volumeUnit:"GiB"}:{}),observations:{rxNow:true,txNow:true,rxSeries:[false,true],txSeries:[false,true],sampledAt:"2026-10-12T12:00:00Z"}})
await page.route("**/health",r=>r.fulfill({json:{ok:true}}));await page.route("**/api/**",r=>{
const path=new URL(r.request().url()).pathname;if(path.endsWith("/live"))return r.fulfill({status:503,json:{error:"Fixture без live"}})
return r.fulfill({json:path==="/api/auth/config"?{required:false}:path==="/api/traffic/servers"?{servers:[server()]}:path==="/api/traffic/servers/1"?{server:server()}:path.endsWith("/interfaces")||path==="/api/traffic/bound-interfaces"?{interfaces:[]}:path==="/api/traffic/users"?{users:[]}:path==="/api/servers"?[]:{}})
});await page.goto("/traffic")
const volume=page.getByRole("group",{name:"Учтённый объём по измерениям"})
await expect(volume).toContainText("1 МиБ");await expect(volume).toContainText("1 Б")
await volume.screenshot({path:`docs/ux-ui/screens/traffic-volume-${width}-2026-10-12.png`})
rxTotal=1;txTotal=1024;await page.getByRole("button",{name:"15м",exact:true}).click()
await expect(volume).toContainText("1 ГиБ");await expect(volume).toContainText("1 ТиБ")
unit=false;await page.getByRole("button",{name:"24ч",exact:true}).click()
await expect(volume.getByText("—",{exact:true})).toHaveCount(2)
unit=true;rxTotal=0;txTotal=0;await page.getByRole("button",{name:"4ч",exact:true}).click()
await expect(volume.getByText("0 Б",{exact:true})).toHaveCount(2)
expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth+1)).toBe(true)
})