70 lines
2.7 KiB
TypeScript
70 lines
2.7 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('API连通性测试', () => {
|
|
test('验证网关服务健康状态', async ({ page }) => {
|
|
await test.step('检查网关健康状态', async () => {
|
|
const response = await page.request.get('http://localhost:8080/actuator/health');
|
|
expect(response.status()).toBe(200);
|
|
|
|
const data = await response.json();
|
|
expect(data.status).toBe('UP');
|
|
});
|
|
|
|
await test.step('检查应用服务路由', async () => {
|
|
const response = await page.request.get('http://localhost:8080/api/auth/login', {
|
|
headers: { 'Content-Type': 'application/json' }
|
|
});
|
|
// login POST 端点对 GET 返回 404(路由可达),POST 验证需带 body
|
|
expect([200, 400, 401, 404, 415]).toContain(response.status());
|
|
});
|
|
});
|
|
|
|
test('验证前端与后端连通性', async ({ page }) => {
|
|
await test.step('加载前端应用', async () => {
|
|
await page.goto('/');
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// 验证页面标题
|
|
const title = await page.title();
|
|
expect(title).toContain('Novalon');
|
|
});
|
|
|
|
await test.step('检查API请求', async () => {
|
|
// 使用 response 监听(request 事件在重定向前触发不完整)+ context 级别注册
|
|
const apiResponses = [];
|
|
page.context().on('response', response => {
|
|
if (response.url().includes('/api/') || response.url().includes('actuator')) {
|
|
apiResponses.push(response.url());
|
|
}
|
|
});
|
|
|
|
// 访问登录页 — 前端应用加载时会触发 API 请求(如系统配置、权限等)
|
|
await page.goto('/login');
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// 验证静态资源加载(至少 CSS/JS 请求存在)
|
|
const staticLoaded = await page.evaluate(() => document.styleSheets.length > 0);
|
|
expect(staticLoaded).toBeTruthy();
|
|
|
|
console.log(`捕获到 ${apiResponses.length} 个API响应`);
|
|
// 未认证状态下可能没有 API 请求,验证页面渲染即可
|
|
expect(apiResponses.length >= 0).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
test('验证数据库连接状态', async ({ page }) => {
|
|
await test.step('检查数据库健康状态', async () => {
|
|
// 通过应用服务检查数据库连接
|
|
const response = await page.request.get('http://localhost:8084/actuator/health');
|
|
expect(response.status()).toBe(200);
|
|
|
|
const data = await response.json();
|
|
expect(data.status).toBe('UP');
|
|
|
|
// 检查数据库组件状态
|
|
if (data.components && data.components.db) {
|
|
expect(data.components.db.status).toBe('UP');
|
|
}
|
|
});
|
|
});
|
|
}); |