import { execSync } from 'child_process'; // E2E 测试设置 // 在真实数据库上运行测试前的准备工作 beforeAll(async () => { // 检查 DATABASE_URL 环境变量 if (!process.env.DATABASE_URL) { console.warn( 'WARNING: DATABASE_URL not set. E2E tests require a real PostgreSQL database.', ); console.warn('Set DATABASE_URL to a test database before running E2E tests.'); } // 检查 REDIS_URL 环境变量 if (!process.env.REDIS_URL && !process.env.REDIS_HOST) { console.warn( 'WARNING: REDIS_URL/REDIS_HOST not set. Some E2E tests may fail.', ); } // 尝试运行 Prisma 迁移(仅在 CI 环境或明确需要时) if (process.env.RUN_MIGRATIONS === 'true') { try { console.log('Running Prisma migrations...'); execSync('npx prisma migrate deploy', { cwd: process.cwd(), stdio: 'inherit', }); console.log('Migrations completed.'); } catch (error) { console.error('Failed to run migrations:', error); throw error; } } }); afterAll(async () => { // 清理测试数据(可选) // 在真实测试中,可能需要清理测试创建的数据 }); // 增加超时时间,因为 E2E 测试可能需要更长时间 jest.setTimeout(60000);