import { chromium } from 'playwright-core' const BASE = 'http://localhost:5082' const browser = await chromium.launch({ headless: true, executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', }) const page = await browser.newPage({ viewport: { width: 1600, height: 1000 } }) const logs = [] page.on('console', (m) => { if (m.type() === 'error') logs.push(`[console.error] ${m.text()}`) }) page.on('pageerror', (e) => logs.push(`[pageerror] ${e.message}`)) await page.addInitScript(() => { sessionStorage.setItem( 'fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev' } } }), ) localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) }) // mock all API calls so the fake token never gets 401'd await page.route('**/api/**', (route) => route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null, message: '' }), }), ) try { await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) await page.waitForTimeout(1500) console.log('url after load:', page.url()) const clickInfo = await page.evaluate(() => { const els = Array.from(document.querySelectorAll('.button, button')) const el = els.find((b) => (b.textContent || '').includes('声明式弹窗')) if (!el) return { found: false } el.click() return { found: true } }) console.log('click:', JSON.stringify(clickInfo)) await page.waitForTimeout(1200) const state = await page.evaluate(() => ({ url: location.href, modalCount: document.querySelectorAll('.fms-modal').length, ffCount: document.querySelectorAll('.ff-container').length, ffSplitter: !!document.querySelector('.ff-splitter'), })) console.log('state:', JSON.stringify(state)) } catch (e) { console.log('ERROR:', String(e)) } console.log('logs:', JSON.stringify(logs.slice(0, 10), null, 2)) await browser.close()