dev_1.0.0_xuxt_3 完成web和alert的集成测试 #38

Merged
xuxt merged 12 commits from dev_1.0.0_xuxt_3 into dev_1.0.0 2025-10-31 14:18:20 +08:00
9 changed files with 74 additions and 68 deletions
Showing only changes of commit 35ed0f72f2 - Show all commits

View File

@ -69,7 +69,7 @@ rm -rf "$REPORT_DIR"
# Run Playwright tests with reporters
set +e # temporarily disable exit-on-error to capture test result
npx playwright test tests/playwright --reporter=list,html
BASE_URL=${FRONTEND_URL} npx playwright test tests/playwright --reporter=list,html
TEST_RESULT=$?
set -e # re-enable strict mode

View File

@ -1,11 +1,12 @@
import { test, expect } from "@playwright/test";
import {test, expect} from "@playwright/test";
import { BASE_URL } from './helpers/utils'
test.describe("Alerts 页面功能测试", () => {
test.beforeEach(async ({ page }) => {
await page.goto("http://localhost:8080/alerts"); // 根据你实际路由调整
test.beforeEach(async ({page}) => {
await page.goto(`${BASE_URL}/alerts`); // 根据你实际路由调整
});
test("页面加载并显示告警统计", async ({ page }) => {
test("页面加载并显示告警统计", async ({page}) => {
await expect(page.locator("text=告警详情")).toBeVisible();
await expect(page.locator("text=总数")).toBeVisible();
await expect(page.locator("text=严重")).toBeVisible();
@ -13,7 +14,7 @@ test.describe("Alerts 页面功能测试", () => {
await expect(page.locator("text=信息")).toBeVisible();
});
test("筛选功能验证", async ({ page }) => {
test("筛选功能验证", async ({page}) => {
const severitySelect = page.getByLabel("严重性");
const stateSelect = page.getByLabel("状态");
const nodeSelect = page.getByLabel("节点");
@ -28,7 +29,7 @@ test.describe("Alerts 页面功能测试", () => {
await expect(nodeSelect).toHaveValue("all");
});
test("排序功能", async ({ page }) => {
test("排序功能", async ({page}) => {
const severityHeader = page.locator("th:has-text('严重性') button");
await severityHeader.click(); // 切换升序
await severityHeader.click(); // 切换降序
@ -38,7 +39,7 @@ test.describe("Alerts 页面功能测试", () => {
await instanceHeader.click();
});
test("分页功能", async ({ page }) => {
test("分页功能", async ({page}) => {
const nextButton = page.locator("button:has-text('下一页')");
const prevButton = page.locator("button:has-text('上一页')");
@ -48,7 +49,7 @@ test.describe("Alerts 页面功能测试", () => {
}
});
test("展开更多信息行", async ({ page }) => {
test("展开更多信息行", async ({page}) => {
const infoIcons = page.locator("table tbody tr td [title='显示/隐藏更多信息']");
if (await infoIcons.count() > 0) {
await infoIcons.first().click();
@ -59,8 +60,8 @@ test.describe("Alerts 页面功能测试", () => {
}
});
test("自动刷新开关与刷新按钮", async ({ page }) => {
const switchBtn = page.getByRole("switch", { name: "自动刷新" });
test("自动刷新开关与刷新按钮", async ({page}) => {
const switchBtn = page.getByRole("switch", {name: "自动刷新"});
const refreshBtn = page.getByTitle("刷新");
await expect(switchBtn).toBeVisible();

View File

@ -1,10 +1,11 @@
import { test, expect } from '@playwright/test';
import { BASE_URL } from './helpers/utils'
test.describe('Dashboard 页面测试', () => {
test.beforeEach(async ({ page }) => {
// 打开仪表盘页面
await page.goto('http://localhost:8080/dashboard', { waitUntil: 'networkidle' });
await page.goto(`${BASE_URL}/dashboard`, { waitUntil: 'networkidle' });
});
test('应能成功加载页面并显示标题', async ({ page }) => {

View File

@ -1,10 +1,10 @@
import { Page, expect } from '@playwright/test';
import { BASE_URL } from './utils'
/**
*
*/
export async function checkPage(page: Page, path: string, title: string) {
await page.goto('http://localhost:8080/');
await page.goto(`${BASE_URL}`);
const menu = page.getByRole('link', { name: title });
await expect(menu).toBeVisible();
await menu.click();

View File

@ -0,0 +1 @@
export const BASE_URL = process.env.BASE_URL || "http://localhost:8080";

View File

@ -1,10 +1,11 @@
import { test, expect } from '@playwright/test';
import { logsEntries } from './test-entries';
import { testEntryCards } from './helpers/entrycards-helpers';
import { BASE_URL } from './helpers/utils'
test.describe('Logs Page', () => {
test('should render all log cards', async ({ page }) => {
await page.goto('http://localhost:8080m/logs');
await page.goto(`${BASE_URL}/logs`);
await expect(page.locator('h2', { hasText: '日志详情' })).toBeVisible();
await testEntryCards(page, logsEntries);
});

View File

@ -1,11 +1,12 @@
import { test, expect } from '@playwright/test';
import { metricsEntries } from './test-entries';
import { testEntryCards } from './helpers/entrycards-helpers';
import { BASE_URL } from './helpers/utils'
test.describe('Metrics Page', () => {
test('should render all metric cards', async ({ page }) => {
await page.goto('http://localhost:8080/metrics');
await page.goto(`${BASE_URL}/metrics`);
await expect(page.locator('h2', { hasText: '指标详情' })).toBeVisible();
await testEntryCards(page, metricsEntries);
});

View File

@ -1,9 +1,10 @@
import { test, expect } from "@playwright/test";
import { BASE_URL } from './helpers/utils'
test.describe("节点信息页面 NodeInfo", () => {
// 每次测试前打开目标页面
test.beforeEach(async ({ page }) => {
await page.goto("http://localhost:8080/node");
await page.goto(`${BASE_URL}/node`);
});
test("页面标题应该正确显示", async ({ page }) => {

View File

@ -1,7 +1,7 @@
import { test } from '@playwright/test';
import { checkPage, noConsoleError } from './helpers/testUtils';
import { BASE_URL } from './helpers/utils'
const BASE_URL = 'http://localhost:8080';
const pages = [
{ path: '/dashboard', title: '仪表盘' },
{ path: '/nodeInfo', title: '节点信息' },