/** * ================================================================ * 场景:后台管理全流程 E2E 测试 * ================================================================ * 目标:管理员通过 cfc-web Element UI 管理后台进行用户管理、数据看板等 * 部署地址:http://cfc.iwintrue.com/admin * * 流程步骤: * 1. 管理员查看用户列表 * 2. 管理员查看数据看板 * 3. 能量规则管理(复用 energy-rules-config.spec.js) * 4. 系统健康检查 * * 前置条件:已登录管理员账号 * ================================================================ */ const { test, expect } = require('@playwright/test'); async function ensureLoggedIn(page) { const sidebar = page.locator('.sidebar-container, .el-menu-vertical-demo, .el-aside'); if (await sidebar.isVisible({ timeout: 3000 }).catch(() => false)) { return; } await page.goto('/login'); await page.waitForSelector('.el-input__inner', { timeout: 15000 }); await page.fill('.el-input__inner', 'admin', { timeout: 5000 }); const passwordInputs = page.locator('.el-input__inner').filter({ hasPlaceholder: /密码/ }); if (await passwordInputs.count() > 0) { await passwordInputs.first().fill('admin123'); } else { const inputs = page.locator('.el-input__inner'); const count = await inputs.count(); if (count >= 2) { await inputs.nth(1).fill('admin123'); } } await page.click('.el-button--primary.login-btn, .el-button[type="primary"]:not(.skip)'); await page.waitForURL(/\/dashboard|\/admin\/dashboard/, { timeout: 15000 }); } test.describe('【场景流程】后台管理全流程', () => { test('[场景1] 管理员查看用户列表 - 期望返回分页列表', async ({ page }) => { await ensureLoggedIn(page); await page.goto('/users'); await page.waitForLoadState('networkidle'); await expect(page.locator('.el-table')).toBeVisible({ timeout: 10000 }); const rows = page.locator('.el-table__body tr'); const count = await rows.count(); expect(count).toBeGreaterThan(0); }); test('[场景2] 管理员查看数据看板 - 期望返回统计数据', async ({ page }) => { await ensureLoggedIn(page); await page.goto('/dashboard'); await page.waitForLoadState('networkidle'); // Element UI cards / stat panels const statCards = page.locator('.el-card, .stat-panel'); const count = await statCards.count(); expect(count).toBeGreaterThan(0); }); test('[场景3] 管理员查看能量规则管理', async ({ page }) => { await ensureLoggedIn(page); await page.goto('/energy-rule'); await page.waitForLoadState('networkidle'); await expect(page.locator('.el-table')).toBeVisible({ timeout: 10000 }); const rows = page.locator('.el-table__body tr'); const count = await rows.count(); expect(count).toBeGreaterThan(0); }); test('[场景4] 系统健康检查 - 期望返回健康状态', async ({ page }) => { await ensureLoggedIn(page); await page.goto('/sys-config'); await page.waitForLoadState('networkidle'); // 系统配置页面应该可见 await expect(page.locator('.el-card, .sys-config-page')).toBeVisible({ timeout: 10000 }); }); });