027ee2137e
refactor(cases): 更新案例数据结构字段 test(admin): 增加富文本编辑器多种格式测试 fix(contact-form): 修复表单提交测试并移除skip标记 perf(smart-wait): 改进页面就绪等待逻辑 ci(playwright): 调整firefox配置并优化全局setup
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import { chromium, firefox, webkit, FullConfig } from '@playwright/test';
|
|
import { getEnvironment } from './src/config/environments';
|
|
|
|
const env = getEnvironment();
|
|
|
|
async function globalSetup(config: FullConfig) {
|
|
const browserName = config.projects?.[0]?.use?.browserName || 'chromium';
|
|
let browser;
|
|
|
|
try {
|
|
switch (browserName) {
|
|
case 'firefox':
|
|
browser = await firefox.launch();
|
|
break;
|
|
case 'webkit':
|
|
browser = await webkit.launch();
|
|
break;
|
|
default:
|
|
browser = await chromium.launch();
|
|
}
|
|
|
|
const page = await browser.newPage();
|
|
|
|
try {
|
|
await page.goto(`${env.baseURL}/admin/login`, { waitUntil: 'commit', timeout: 120000 });
|
|
|
|
await page.waitForSelector('#email', { timeout: 30000 });
|
|
|
|
await page.locator('#email').fill('admin@novalon.cn');
|
|
await page.locator('#password').fill('admin123456');
|
|
|
|
await page.locator('button[type="submit"]').click();
|
|
|
|
try {
|
|
await page.waitForURL(/\/admin(?!\/login)/, { timeout: 30000 });
|
|
await page.context().storageState({ path: '.auth/admin.json' });
|
|
} catch {
|
|
console.warn('登录失败,跳过需要认证的测试');
|
|
}
|
|
} catch {
|
|
console.warn('Admin登录页面不可用,跳过需要认证的测试');
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
} catch (error) {
|
|
console.warn(`浏览器启动失败 (${browserName}),跳过需要认证的测试:`, error.message);
|
|
}
|
|
}
|
|
|
|
export default globalSetup;
|