Files
MikrotikManager/tests/e2e/traffic-peak-confidence.spec.ts
T

26 lines
1.9 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 peakKnown=false,peak=100
const server=()=>({id:'1',name:'Пик CHR',site:'TEST',country:'RU',status:'online',volumeUnit:'GiB',sessions:1,
rxNow:0,txNow:0,rxPeak:peak,txPeak:peak,rxTotal:1,txTotal:1,rxSeries:[0,100],txSeries:[0,100],
observations:{rxNow:true,txNow:true,rxPeak:peakKnown,txPeak:peakKnown,rxSeries:[false,true],txSeries:[false,true],sampledAt:'2026-10-13T00:00:00Z'}})
await page.route('**/health',r=>r.fulfill({json:{ok:true}}))
await page.route('**/api/**',r=>{
const p=new URL(r.request().url()).pathname
if(p.endsWith('/live'))return r.fulfill({status:503,json:{error:'Fixture без live'}})
return r.fulfill({json:p==='/api/auth/config'?{required:false}:p==='/api/traffic/servers'?{servers:[server()]}:
p==='/api/traffic/servers/1'?{server:server()}:p.endsWith('/interfaces')||p==='/api/traffic/bound-interfaces'?{interfaces:[]}:
p==='/api/traffic/users'?{users:[]}:p==='/api/servers'?[]:{}})
})
await page.goto('/traffic')
const peakCard=page.locator('[data-slot="frame-panel"]').filter({has:page.getByText('Пик RX',{exact:true})}).first()
await expect(peakCard).toContainText('—')
await expect(page.getByRole('group',{name:'Учтённый объём по измерениям'})).toContainText('1 ГиБ')
peakKnown=true;await page.getByRole('button',{name:'15м',exact:true}).click()
await expect(peakCard).toContainText('100')
peak=0;await page.getByRole('button',{name:'24ч',exact:true}).click()
await expect(peakCard).toContainText('0')
expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth+1)).toBe(true)
})