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) })