import { test, expect } from '@playwright/test'; test.describe('Dashboard 页面测试', () => { test.beforeEach(async ({ page }) => { // 打开仪表盘页面 await page.goto('http://web.argus.com/dashboard', { waitUntil: 'networkidle' }); }); test('应能成功加载页面并显示标题', async ({ page }) => { await expect(page.locator('text=仪表盘')).toBeVisible(); }); test('应显示节点健康状态卡片', async ({ page }) => { const healthCard = page.locator('text=节点健康状态'); await expect(healthCard).toBeVisible(); // 检查环形图是否渲染 const ring = page.locator('svg'); // RingProgress 是 SVG 渲染的 const ringCount = await ring.count(); expect(ringCount).toBeGreaterThan(0); }); test('应显示告警统计信息', async ({ page }) => { const alertCard = page.locator('text=告警统计'); await expect(alertCard).toBeVisible(); // 检查告警类别 const labels = ['总数', '严重', '警告', '信息']; for (const label of labels) { await expect(page.locator(`text=${label}`)).toBeVisible(); } }); test('应正确渲染集群节点表格', async ({ page }) => { const tableHeaders = ['ID', '名称', '状态', '类型', '版本']; for (const header of tableHeaders) { await expect(page.locator(`th:has-text("${header}")`)).toBeVisible(); } // 至少有一行节点数据 const rows = await page.locator('tbody tr').count(); expect(rows).toBeGreaterThan(0); }); test('“查看更多”链接应存在并指向 /nodeInfo', async ({ page }) => { const link = page.locator('a:has-text("查看更多")'); await expect(link).toBeVisible(); const href = await link.getAttribute('href'); expect(href).toContain('/nodeInfo'); }); test('页面应无加载错误提示', async ({ page }) => { await expect(page.locator('text=加载中...')).toHaveCount(0); await expect(page.locator('text=数据加载失败')).toHaveCount(0); }); });