modify playwright ts
This commit is contained in:
parent
752d2991ec
commit
35ed0f72f2
@ -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
|
||||
|
||||
|
||||
@ -1,77 +1,78 @@
|
||||
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 }) => {
|
||||
await expect(page.locator("text=告警详情")).toBeVisible();
|
||||
await expect(page.locator("text=总数")).toBeVisible();
|
||||
await expect(page.locator("text=严重")).toBeVisible();
|
||||
await expect(page.locator("text=警告")).toBeVisible();
|
||||
await expect(page.locator("text=信息")).toBeVisible();
|
||||
});
|
||||
test("页面加载并显示告警统计", async ({page}) => {
|
||||
await expect(page.locator("text=告警详情")).toBeVisible();
|
||||
await expect(page.locator("text=总数")).toBeVisible();
|
||||
await expect(page.locator("text=严重")).toBeVisible();
|
||||
await expect(page.locator("text=警告")).toBeVisible();
|
||||
await expect(page.locator("text=信息")).toBeVisible();
|
||||
});
|
||||
|
||||
test("筛选功能验证", async ({ page }) => {
|
||||
const severitySelect = page.getByLabel("严重性");
|
||||
const stateSelect = page.getByLabel("状态");
|
||||
const nodeSelect = page.getByLabel("节点");
|
||||
test("筛选功能验证", async ({page}) => {
|
||||
const severitySelect = page.getByLabel("严重性");
|
||||
const stateSelect = page.getByLabel("状态");
|
||||
const nodeSelect = page.getByLabel("节点");
|
||||
|
||||
await severitySelect.selectOption("critical");
|
||||
await expect(severitySelect).toHaveValue("critical");
|
||||
await severitySelect.selectOption("critical");
|
||||
await expect(severitySelect).toHaveValue("critical");
|
||||
|
||||
await stateSelect.selectOption("active");
|
||||
await expect(stateSelect).toHaveValue("active");
|
||||
await stateSelect.selectOption("active");
|
||||
await expect(stateSelect).toHaveValue("active");
|
||||
|
||||
await nodeSelect.selectOption("all");
|
||||
await expect(nodeSelect).toHaveValue("all");
|
||||
});
|
||||
await nodeSelect.selectOption("all");
|
||||
await expect(nodeSelect).toHaveValue("all");
|
||||
});
|
||||
|
||||
test("排序功能", async ({ page }) => {
|
||||
const severityHeader = page.locator("th:has-text('严重性') button");
|
||||
await severityHeader.click(); // 切换升序
|
||||
await severityHeader.click(); // 切换降序
|
||||
test("排序功能", async ({page}) => {
|
||||
const severityHeader = page.locator("th:has-text('严重性') button");
|
||||
await severityHeader.click(); // 切换升序
|
||||
await severityHeader.click(); // 切换降序
|
||||
|
||||
const instanceHeader = page.locator("th:has-text('节点') button");
|
||||
await instanceHeader.click();
|
||||
await instanceHeader.click();
|
||||
});
|
||||
const instanceHeader = page.locator("th:has-text('节点') button");
|
||||
await instanceHeader.click();
|
||||
await instanceHeader.click();
|
||||
});
|
||||
|
||||
test("分页功能", async ({ page }) => {
|
||||
const nextButton = page.locator("button:has-text('下一页')");
|
||||
const prevButton = page.locator("button:has-text('上一页')");
|
||||
test("分页功能", async ({page}) => {
|
||||
const nextButton = page.locator("button:has-text('下一页')");
|
||||
const prevButton = page.locator("button:has-text('上一页')");
|
||||
|
||||
if (await nextButton.isEnabled()) {
|
||||
await nextButton.click();
|
||||
await expect(prevButton).toBeEnabled();
|
||||
}
|
||||
});
|
||||
if (await nextButton.isEnabled()) {
|
||||
await nextButton.click();
|
||||
await expect(prevButton).toBeEnabled();
|
||||
}
|
||||
});
|
||||
|
||||
test("展开更多信息行", async ({ page }) => {
|
||||
const infoIcons = page.locator("table tbody tr td [title='显示/隐藏更多信息']");
|
||||
if (await infoIcons.count() > 0) {
|
||||
await infoIcons.first().click();
|
||||
// 展开的详情行应出现
|
||||
const details = page.locator("table tbody tr >> text=alertname");
|
||||
const detailCount = await details.count();
|
||||
expect(detailCount).toBeGreaterThan(0);
|
||||
}
|
||||
});
|
||||
test("展开更多信息行", async ({page}) => {
|
||||
const infoIcons = page.locator("table tbody tr td [title='显示/隐藏更多信息']");
|
||||
if (await infoIcons.count() > 0) {
|
||||
await infoIcons.first().click();
|
||||
// 展开的详情行应出现
|
||||
const details = page.locator("table tbody tr >> text=alertname");
|
||||
const detailCount = await details.count();
|
||||
expect(detailCount).toBeGreaterThan(0);
|
||||
}
|
||||
});
|
||||
|
||||
test("自动刷新开关与刷新按钮", async ({ page }) => {
|
||||
const switchBtn = page.getByRole("switch", { name: "自动刷新" });
|
||||
const refreshBtn = page.getByTitle("刷新");
|
||||
test("自动刷新开关与刷新按钮", async ({page}) => {
|
||||
const switchBtn = page.getByRole("switch", {name: "自动刷新"});
|
||||
const refreshBtn = page.getByTitle("刷新");
|
||||
|
||||
await expect(switchBtn).toBeVisible();
|
||||
await expect(refreshBtn).toBeVisible();
|
||||
await expect(switchBtn).toBeVisible();
|
||||
await expect(refreshBtn).toBeVisible();
|
||||
|
||||
// 手动点击刷新按钮
|
||||
await refreshBtn.click();
|
||||
// 手动点击刷新按钮
|
||||
await refreshBtn.click();
|
||||
|
||||
// 自动刷新开关切换
|
||||
const isChecked = await switchBtn.isChecked();
|
||||
await switchBtn.click();
|
||||
await expect(switchBtn).toHaveJSProperty("checked", !isChecked);
|
||||
});
|
||||
// 自动刷新开关切换
|
||||
const isChecked = await switchBtn.isChecked();
|
||||
await switchBtn.click();
|
||||
await expect(switchBtn).toHaveJSProperty("checked", !isChecked);
|
||||
});
|
||||
});
|
||||
|
||||
@ -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 }) => {
|
||||
|
||||
@ -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();
|
||||
|
||||
1
src/web/tests/playwright/helpers/utils.ts
Normal file
1
src/web/tests/playwright/helpers/utils.ts
Normal file
@ -0,0 +1 @@
|
||||
export const BASE_URL = process.env.BASE_URL || "http://localhost:8080";
|
||||
@ -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);
|
||||
});
|
||||
|
||||
@ -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);
|
||||
});
|
||||
|
||||
@ -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 }) => {
|
||||
|
||||
@ -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: '节点信息' },
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user