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;