Files
novalon-website/e2e/global-setup.ts
T
张翔 259b790309 fix: update E2E test selectors and improve login stability
- Fix selectors to use config keys instead of Chinese labels
- Add page load waiting and element visibility checks
- Improve global setup with better error handling
- Update all config-linkage tests with correct selectors
2026-03-13 13:35:10 +08:00

58 lines
2.0 KiB
TypeScript

import { chromium, FullConfig } from '@playwright/test';
import { getEnvironment } from './src/config/environments';
import { TestHistoryManager } from './src/utils/test-history';
const env = getEnvironment();
const historyManager = new TestHistoryManager();
async function globalSetup(config: FullConfig) {
console.log('🚀 开始E2E测试全局设置...');
console.log('📍 Base URL:', env.baseURL);
const browser = await chromium.launch();
const page = await browser.newPage();
try {
console.log('📝 访问登录页面...');
await page.goto(`${env.baseURL}/admin/login`, { waitUntil: 'networkidle' });
console.log('⏳ 等待页面加载...');
await page.waitForLoadState('domcontentloaded', { timeout: 10000 });
await page.waitForTimeout(2000);
console.log('🔑 填写登录信息...');
await page.waitForSelector('#email', { timeout: 10000 });
await page.locator('#email').fill('admin@novalon.cn');
await page.locator('#password').fill('admin123456');
console.log('🖱️ 点击登录按钮...');
await page.locator('button[type="submit"]').click();
console.log('⏳ 等待登录成功...');
console.log('🔍 当前URL:', page.url());
try {
await page.waitForURL(/\/admin(?!\/login)/, { timeout: 15000 });
console.log('✅ 登录成功,当前URL:', page.url());
} catch (error) {
console.log('❌ 登录超时,当前URL:', page.url());
console.log('📸 截图保存...');
await page.screenshot({ path: 'test-results/login-failure.png', fullPage: true });
throw error;
}
console.log('💾 保存认证状态...');
await page.context().storageState({ path: '.auth/admin.json' });
console.log('✅ 全局设置完成');
} catch (error) {
console.error('❌ 全局设置失败:', error);
await page.screenshot({ path: 'test-results/setup-error.png' });
throw error;
} finally {
await browser.close();
}
}
export default globalSetup;