From 412c28b4fe1fa78b6b38c5637f70d41a5b4ff641 Mon Sep 17 00:00:00 2001 From: pavlov346346-source Date: Mon, 7 Sep 2026 19:59:34 +0300 Subject: [PATCH] Add v17.6.4 browser regressions --- tests/app.spec.mjs | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tests/app.spec.mjs b/tests/app.spec.mjs index 08e22e1..d35acb1 100644 --- a/tests/app.spec.mjs +++ b/tests/app.spec.mjs @@ -91,6 +91,61 @@ test('v17.6.3 developer gate bypasses workspace loading and SaaS click is safe', const args=await page.evaluate(()=>window.__devOpenArgs); expect(args).toEqual(['null','null']); }); +test('v17.6.4 auto-completes and fully pays an order one minute after scheduled time', async ({ page }) => { + await page.addInitScript(()=>{ + localStorage.setItem('sunOrders',JSON.stringify([{id:764,event:'Тест авто-завершения',date:'2026-09-07',time:'12:00',status:'Новый',prepayment:100,total:1500,lines:[]}])) + }); + await page.goto('/index.html',{waitUntil:'domcontentloaded'}); + await page.waitForFunction(()=>Boolean(window.SunUXFixV1764),null,{timeout:7000}); + const result=await page.evaluate(()=>{ + window.orderTotalValue=()=>1500; + const run=window.SunUXFixV1764.autoCompleteOrders(new Date('2026-09-07T12:01:01').getTime(),{silent:true}); + const order=JSON.parse(localStorage.getItem('sunOrders')||'[]').find(x=>String(x.id)==='764'); + return {run,prepayment:order?.prepayment,balance:order?.balance,status:order?.status,auto:Boolean(order?.sunAutoCompletedAt),classDate:window.SunUXFixV1764.classificationDate(order,'2026-09-07')}; + }); + expect(result.run.changed).toBe(1); + expect(result.prepayment).toBe(1500); + expect(result.balance).toBe(0); + expect(result.status).toBe('Отдан заказчику'); + expect(result.auto).toBeTruthy(); + expect(result.classDate).toBe('0001-01-01'); +}); +test('v17.6.4 keeps proposal designs per order and renders a styled menu icon', async ({ page }) => { + await page.addInitScript(()=>{ + localStorage.setItem('sunOrders',JSON.stringify([ + {id:801,event:'Editorial',date:'2026-09-08',time:'12:00',clientOfferSnapshot:{version:8,offerTemplateId:'editorial-grid'}}, + {id:802,event:'Emerald',date:'2026-09-08',time:'13:00',clientOfferSnapshot:{version:8,offerTemplateId:'emerald-gold'}} + ])); + }); + await page.goto('/index.html',{waitUntil:'domcontentloaded'}); + await page.waitForFunction(()=>Boolean(window.SunUXFixV1764)&&Boolean(document.querySelector('header nav .nav-menu')),null,{timeout:7000}); + const result=await page.evaluate(()=>{ + window.SunUXFixV1764.persistOfferTemplate('801','midnight-glass'); + const list=JSON.parse(localStorage.getItem('sunOrders')||'[]'); + const one=list.find(x=>String(x.id)==='801'),two=list.find(x=>String(x.id)==='802'); + return {one:one?.clientOfferTemplateId,snapOne:one?.clientOfferSnapshot?.offerTemplateId,two:two?.clientOfferSnapshot?.offerTemplateId,icon:Boolean(document.querySelector('header nav .nav-menu .sun-v1764-menu-icon'))}; + }); + expect(result.one).toBe('midnight-glass'); + expect(result.snapOne).toBe('midnight-glass'); + expect(result.two).toBe('emerald-gold'); + expect(result.icon).toBeTruthy(); +}); +test('Developer Console memory refresh is bounded and does not react to its own DOM update', async ({ page }) => { + await page.goto('/index.html',{waitUntil:'domcontentloaded'}); + const performance=fs.readFileSync(path.join(process.cwd(),'public','core','performance.js'),'utf8'); + await page.evaluate(()=>{ + document.body.innerHTML='
'; + window.__rpcCount=0; + window.SunCloudV2={getClient:()=>({rpc:async()=>{window.__rpcCount++;return {data:{server_size:'35 MB',database_size:'21 MB',storage_size:'14 MB',storage_objects:12}}}})}; + }); + await page.addScriptTag({content:performance}); + await page.waitForFunction(()=>Boolean(window.SunPerformance),null,{timeout:5000}); + await page.evaluate(async()=>{await window.SunPerformance.refreshDeveloperMemory(true);await new Promise(r=>setTimeout(r,250));}); + const result=await page.evaluate(()=>({count:window.__rpcCount,box:document.querySelectorAll('#sunDevMemoryV1761').length,version:document.getElementById('sunDevReleaseVersion')?.textContent})); + expect(result.count).toBeLessThanOrEqual(2); + expect(result.box).toBe(1); + expect(result.version).toBe('17.6.4'); +}); test('mobile body does not overflow viewport', async ({ page }, testInfo) => { test.skip(testInfo.project.name!=='mobile-390'); await page.goto('/index.html', { waitUntil:'domcontentloaded' }); await page.waitForTimeout(500); const dims=await page.evaluate(()=>({innerWidth,scrollWidth:document.documentElement.scrollWidth,bodyWidth:document.body.scrollWidth}));