From 28ec7da17cfad94c77c8b57747984f70273da7d8 Mon Sep 17 00:00:00 2001 From: pavlov346346-source Date: Tue, 8 Sep 2026 06:57:38 +0300 Subject: [PATCH] Align v17.6.6 E2E with native menu icon --- .github/workflows/fix-v1766-e2e.yml | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/fix-v1766-e2e.yml diff --git a/.github/workflows/fix-v1766-e2e.yml b/.github/workflows/fix-v1766-e2e.yml new file mode 100644 index 0000000..c43b0ce --- /dev/null +++ b/.github/workflows/fix-v1766-e2e.yml @@ -0,0 +1,59 @@ +name: Align v17.6.6 E2E + +on: + push: + branches: + - feature/v17.6.6-offer-templates + paths: + - .github/workflows/fix-v1766-e2e.yml + +permissions: + contents: write + +jobs: + fix: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Update deterministic icon checks + run: | + node <<'NODE' + const fs=require('fs'); + const f='tests/app.spec.mjs'; + let s=fs.readFileSync(f,'utf8'); + const oldWait=" await page.waitForFunction(()=>Boolean(document.querySelector('header nav .nav-menu .sun-v1764-menu-icon')),null,{timeout:5000});"; + const newWait=" await page.waitForFunction(()=>document.querySelector('header nav .nav-menu')?.dataset?.sunMenuIconV1766==='1',null,{timeout:5000});"; + if(!s.includes(oldWait))throw new Error('old menu wait not found'); + s=s.replace(oldWait,newWait); + const oldReturn=" return {one:one?.clientOfferTemplateId,snapOne:one?.clientOfferSnapshot?.offerTemplateId,two:two?.clientOfferSnapshot?.offerTemplateId,icon:Boolean(document.querySelector('header nav .nav-menu .sun-v1764-menu-icon'))};"; + const newReturn=" const menu=document.querySelector('header nav .nav-menu');return {one:one?.clientOfferTemplateId,snapOne:one?.clientOfferSnapshot?.offerTemplateId,two:two?.clientOfferSnapshot?.offerTemplateId,icon:menu?.dataset?.sunMenuIconV1766==='1',inlineIcon:menu?.querySelectorAll('.sun-v1764-menu-icon').length||0};"; + if(!s.includes(oldReturn))throw new Error('old menu result not found'); + s=s.replace(oldReturn,newReturn).replace(" expect(result.icon).toBeTruthy();\n});\ntest('Developer Console", " expect(result.icon).toBeTruthy();\n expect(result.inlineIcon).toBe(0);\n});\ntest('Developer Console"); + const start="test('v17.6.6 Menu sidebar icon uses native mask and has no duplicate inline SVG', async ({ page }) => {"; + const end="test('v17.6.6 proposal templates preserve selection and expose four structural previews'"; + const a=s.indexOf(start),b=s.indexOf(end,a); + if(a<0||b<0)throw new Error('v17.6.6 icon test boundaries not found'); + const replacement=`test('v17.6.6 Menu sidebar icon uses native mask and has no duplicate inline SVG', async ({ page }) => { + await page.goto('/index.html',{waitUntil:'domcontentloaded'}); + await page.evaluate(()=>{let nav=document.querySelector('header nav');if(!nav){const h=document.createElement('header');nav=document.createElement('nav');h.appendChild(nav);document.body.prepend(h)}let b=nav.querySelector('.nav-menu');if(!b){b=document.createElement('button');b.className='sun-nav-button nav-menu';b.dataset.navLabel='Меню';b.textContent='Меню';nav.appendChild(b)}}); + await injectCore(page,'ux-fixes-v1764.js','SunUXFixV1764'); + await page.waitForFunction(()=>document.querySelector('.nav-menu')?.dataset?.sunMenuIconV1766==='1',null,{timeout:5000}); + const r=await page.evaluate(()=>{const b=document.querySelector('.nav-menu');return {inline:b.querySelectorAll('.sun-v1764-menu-icon').length,marker:b.dataset.sunMenuIconV1766,label:b.textContent.trim()}}); + const uxSource=fs.readFileSync(path.join(process.cwd(),'public','core','ux-fixes-v1764.js'),'utf8'); + expect(r.inline).toBe(0);expect(r.marker).toBe('1');expect(r.label).toContain('Меню');expect(uxSource).toContain('--sun-icon:url('); +}); + +`; + s=s.slice(0,a)+replacement+s.slice(b); + fs.writeFileSync(f,s); + NODE + - name: Commit + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add tests/app.spec.mjs + git commit -m "Align v17.6.6 E2E with native menu icon" || exit 0 + git push