Files

50 lines
1.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import puppeteer from 'puppeteer-core';
const CHROME = 'C:/Program Files/Google/Chrome/Application/chrome.exe';
const URL = process.argv[2] || 'http://localhost:5199/';
// 轻量冒烟测试:不做完整渲染流程 / 不触发 Cesium,
// 只检查「加载无 JS 报错 + loading 环出现 + 6 秒后淡出 + App 就绪」。
// 用真实 GPU(不强制 swiftshader 软件渲染)。
const browser = await puppeteer.launch({
executablePath: CHROME,
headless: 'new',
args: ['--no-sandbox', '--window-size=1440,900'],
});
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 900 });
const errors = [];
page.on('pageerror', (e) => errors.push('pageerror: ' + e.message));
page.on('console', (m) => {
// preview 模式无 HMR,WebSocket 连接失败是正常现象,过滤掉
if (m.type() === 'error' && !/WebSocket|ERR_CONNECTION/i.test(m.text())) {
errors.push('console: ' + m.text());
}
});
await page.goto(URL, { waitUntil: 'domcontentloaded', timeout: 30000 });
// 阶段一:加载环应已出现且正在展示
await new Promise((r) => setTimeout(r, 2000));
const loading = await page.evaluate(() => ({
hasCanvas: !!document.querySelector('#loading-canvas canvas'),
loadingShown: !document.getElementById('loading').classList.contains('hidden'),
appReady: !!window.__app,
}));
// 阶段二:约 9 秒后,loading 应已淡出、App 应已就绪
await new Promise((r) => setTimeout(r, 7000));
const done = await page.evaluate(() => ({
loadingHidden: document.getElementById('loading').classList.contains('hidden'),
appReady: !!window.__app,
view: window.__app?.view,
pages: window.__app?.binder?.pages?.length,
timelineCards: window.__app?.timeline?.cards?.length,
}));
console.log('阶段一(加载中):', JSON.stringify(loading));
console.log('阶段二(加载后):', JSON.stringify(done));
console.log('ERRORS:', errors.length ? errors.join('\n') : '(none)');
await browser.close();