From f86b203d1503ea149d339073202c12da10f1f4af Mon Sep 17 00:00:00 2001 From: pavlov346346-source Date: Mon, 7 Sep 2026 19:29:47 +0300 Subject: [PATCH] Test v17.6.3 developer gate and SaaS hotfix --- tests/app.spec.mjs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/app.spec.mjs b/tests/app.spec.mjs index aef0992..08e22e1 100644 --- a/tests/app.spec.mjs +++ b/tests/app.spec.mjs @@ -65,6 +65,32 @@ test('v17.6.2 operations UX boots with menu and route features', async ({ page } expect(checks.calendarMore).toBeTruthy(); expect(await page.locator('header nav button', {hasText:'Меню'}).count()).toBeGreaterThan(0); }); +test('v17.6.3 developer gate bypasses workspace loading and SaaS click is safe', async ({ page }) => { + await page.goto('/index.html', { waitUntil:'domcontentloaded' }); + await page.evaluate(()=>{ + document.body.innerHTML='

Загружаю рабочую базу

'; + window.__devOpenArgs=[]; + window.SunCloudV2={ + getSession:()=>({user:{id:'dev',email:'developer@example.com'}}), + getWorkspace:()=>null, + status:()=>({membershipsLoading:true,membershipsLoaded:false}), + signOut:()=>{} + }; + window.SunDeveloperV22={ + open:arg=>{window.__devOpenArgs.push(arg===null?'null':arg?.constructor?.name||typeof arg)}, + isPlatformAdmin:()=>true, + checkPlatformAdmin:async()=>true + }; + }); + const content=fs.readFileSync(path.join(process.cwd(),'public','core','hotfix-v1763.js'),'utf8'); + await page.addScriptTag({content}); + await page.waitForFunction(()=>document.querySelector('[data-open-dev-v1763]')&&Boolean(window.SunHotfixV1763),null,{timeout:5000}); + expect(await page.locator('#sunCloudAuthGateV3 h2').textContent()).toBe('Аккаунт разработчика'); + await page.locator('[data-saas-admin]').click(); + await page.locator('[data-open-dev-v1763]').click(); + const args=await page.evaluate(()=>window.__devOpenArgs); + expect(args).toEqual(['null','null']); +}); 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}));