25 lines
2.8 KiB
JavaScript
25 lines
2.8 KiB
JavaScript
import fs from 'node:fs';
|
|
const f='tests/app.spec.mjs';
|
|
let s=fs.readFileSync(f,'utf8');
|
|
const replace=(a,b,label)=>{if(!s.includes(a))throw new Error(label+' not found');s=s.replace(a,b)};
|
|
replace(" await page.waitForFunction(()=>Boolean(document.querySelector('header nav .nav-menu .sun-v1764-menu-icon')),null,{timeout:5000});"," await page.waitForFunction(()=>document.querySelector('header nav .nav-menu')?.dataset?.sunMenuIconV1766==='1',null,{timeout:5000});",'old menu wait');
|
|
replace(" 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 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};",'old menu result');
|
|
replace(" expect(result.icon).toBeTruthy();\n});\ntest('Developer Console"," expect(result.icon).toBeTruthy();\n expect(result.inlineIcon).toBe(0);\n});\ntest('Developer Console",'inline icon assertion');
|
|
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);
|