const { chromium } = require('playwright-core'); const fs = require('fs'); (async () => { const CHROME = String.raw`C:\Program Files\Google\Chrome\Application\chrome.exe`; const browser = await chromium.launch({ executablePath: CHROME, headless: true }); const page = await browser.newPage({ viewport: { width: 1366, height: 850 } }); const base = 'http://127.0.0.1:8010'; const loginRes = await fetch(base + '/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ phone: '13943441149', password: 'Test1234' }) }); const loginData = await loginRes.json(); const token = loginData.data?.access_token || loginData.access_token; await page.goto('http://127.0.0.1:5175/login'); await page.evaluate(t => { localStorage.setItem('access_token', t); localStorage.setItem('refresh_token', 'r'); }, token); await page.goto('http://127.0.0.1:5175/animation'); await page.waitForTimeout(1800); await page.locator('.tpl-btn').first().click(); await page.waitForTimeout(1200); const cards = await page.locator('.tg-card').count(); const bad = []; for (let i = 0; i < cards; i++) { let beforeErr = 0; const errs = []; const handler = e => errs.push(e.message); page.on('pageerror', handler); await page.locator('.tg-card').nth(i).click(); await page.waitForTimeout(700); const name = (await page.locator('.tg-main-head h3').textContent().catch(()=> '') || '').trim(); page.off('pageerror', handler); if (errs.length) bad.push({ i, name, errs: errs.slice(0,2) }); } console.log('BAD_TEMPLATES:', JSON.stringify(bad, null, 2)); await browser.close(); })();