Files
gym-manage/gym-manage-uniapp/e2e/global-setup.js
T

61 lines
1.8 KiB
JavaScript

const http = require('http');
const BACKEND_HEALTH_URL = 'http://192.168.110.64:8084/actuator/health';
const MAX_RETRIES = 5;
const RETRY_INTERVAL_MS = 3000;
function checkBackendHealth() {
return new Promise((resolve, reject) => {
const url = new URL(BACKEND_HEALTH_URL);
const req = http.get(url, (res) => {
let data = '';
res.on('data', (chunk) => { data += chunk; });
res.on('end', () => {
if (res.statusCode === 200) {
console.log('[global-setup] 后端服务健康检查通过:', data);
resolve(true);
} else {
reject(new Error(`后端服务返回非200状态码: ${res.statusCode}, 响应: ${data}`));
}
});
});
req.on('error', (err) => {
reject(new Error(`无法连接后端服务 ${BACKEND_HEALTH_URL}: ${err.message}`));
});
req.setTimeout(5000, () => {
req.destroy();
reject(new Error(`连接后端服务超时: ${BACKEND_HEALTH_URL}`));
});
});
}
async function retryCheck(retries) {
for (let i = 0; i < retries; i++) {
try {
await checkBackendHealth();
return;
} catch (err) {
console.warn(`[global-setup] 第 ${i + 1}/${retries} 次尝试失败: ${err.message}`);
if (i < retries - 1) {
await new Promise((resolve) => setTimeout(resolve, RETRY_INTERVAL_MS));
}
}
}
throw new Error(`后端服务不可用,已重试 ${retries}`);
}
module.exports = async () => {
console.log('[global-setup] 开始 E2E 测试环境准备...');
// 检查后端服务可用性
try {
await retryCheck(MAX_RETRIES);
console.log('[global-setup] 后端服务可用');
} catch (err) {
console.error('[global-setup] 后端服务不可用,测试可能失败:', err.message);
// 不阻塞测试,但记录警告
}
console.log('[global-setup] E2E 测试环境准备完成');
};