61 lines
1.8 KiB
JavaScript
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 测试环境准备完成');
|
|
};
|