| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { chromium } from 'playwright';
- const b = await chromium.launch({ executablePath: 'C:/Program Files/Google/Chrome/Application/chrome.exe' });
- const ctx = await b.newContext({ viewport: { width: 1440, height: 900 } });
- const p = await ctx.newPage();
- const errs = [];
- p.on('pageerror', e => errs.push(e.message.slice(0,120)));
- p.on('console', m => { if (m.type()==='error') errs.push(m.text().slice(0,120)); });
- const clear = () => p.evaluate(() => document.querySelectorAll('vite-error-overlay').forEach(e=>e.remove()));
- // 登录页(新版落地页)
- await p.goto('http://localhost:4200/login', { waitUntil: 'networkidle' });
- await clear(); await p.waitForTimeout(1500);
- await p.screenshot({ path: '../../.shots/v2-login.png' });
- const loginProbe = await p.evaluate(() => ({
- landing: !!document.querySelector('.landing'),
- landingHidden: !!document.querySelector('.landing') && getComputedStyle(document.querySelector('.landing')).display === 'none',
- cards: document.querySelectorAll('.lp-card').length,
- inputs: document.querySelectorAll('ui-input').length,
- }));
- console.log('=== 登录页 ==='); console.log(JSON.stringify(loginProbe));
- await p.fill('ui-input input >> nth=0', '13800138000');
- await p.fill('ui-input input >> nth=1', '123456');
- await p.click('button[type="submit"], ui-button button');
- await p.waitForTimeout(3000);
- console.log('登录后:', p.url());
- // 「我的」页:配色缩略图 + 使用端是否移除
- await p.goto('http://localhost:4200/desktop/mine', { waitUntil: 'networkidle' });
- await clear(); await p.waitForTimeout(2000);
- await p.screenshot({ path: '../../.shots/v2-mine.png' });
- const mineProbe = await p.evaluate(() => {
- const thumbs = [...document.querySelectorAll('.thumb')].map(t => {
- const nav = t.querySelector('.thumb-nav');
- const main = t.querySelector('.thumb-main');
- return {
- palette: t.getAttribute('data-preview-palette'),
- navBg: nav ? getComputedStyle(nav).backgroundColor : null,
- mainBg: main ? getComputedStyle(main).backgroundColor : null,
- };
- });
- return {
- thumbs,
- hasUsageSection: /使用端/.test(document.body.innerText),
- hasAutoDetect: /恢复自动识别/.test(document.body.innerText),
- };
- });
- console.log('\n=== 我的页 ===');
- console.log('配色缩略图(每格应是不同色):');
- mineProbe.thumbs.forEach(t => console.log(` ${(t.palette||'').padEnd(10)} nav=${t.navBg} main=${t.mainBg}`));
- console.log(`「使用端」区块存在: ${mineProbe.hasUsageSection} 「恢复自动识别」存在: ${mineProbe.hasAutoDetect}`);
- console.log(errs.length ? '\n⚠ '+errs.slice(0,2).join(' | ') : '\n✅ 无控制台错误');
- await b.close();
|