26 lines
1.9 KiB
TypeScript
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)
|
|
})
|