import { chromium } from 'playwright-core'; const browser = await chromium.launch({ channel: 'chrome', headless: true, executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' }); const page = await browser.newPage({ viewport: { width: 1280, height: 800 } }); const errors = []; page.on('console', m => { if (m.type() === 'error') errors.push(m.text()); }); page.on('pageerror', e => errors.push('PAGEERROR: ' + e.message)); // Login await page.goto('http://127.0.0.1:5175/login', { waitUntil: 'networkidle' }); await page.fill('input[placeholder*="手机"], input[type="tel"]', '13943441149'); await page.fill('input[type="password"]', 'Test1234'); await page.click('button:has-text("登录")'); await page.waitForURL(/\/(home|courseware|exercise)/, { timeout: 8000 }).catch(() => {}); await page.waitForTimeout(1500); // Visit AI generation pages, check they render const pages = ['/exercise', '/exam', '/animation', '/lesson-plan', '/mindmap', '/essay-grade', '/courseware/create']; for (const p of pages) { await page.goto('http://127.0.0.1:5175' + p, { waitUntil: 'networkidle' }).catch(() => {}); await page.waitForTimeout(800); const h = await page.textContent('h1, h2').catch(() => '(none)'); console.log(p, '->', h?.trim()?.substring(0, 40)); } // Check exercise loading tip text exists in DOM (even if hidden) const tipExists = await page.evaluate(() => document.body.innerHTML.includes('模型深度推理中')); console.log('TIP_TEXT_PRESENT:', tipExists); console.log('CONSOLE_ERRORS:', errors.length); errors.slice(0, 8).forEach(e => console.log(' ERR:', e.substring(0, 120))); await browser.close();