docs: 添加用户管理和角色管理测试修复实现计划

- 详细定义4个任务
- 包含完整的代码示例和验证步骤
- 定义清晰的验收标准
This commit is contained in:
张翔
2026-04-15 22:55:48 +08:00
parent 484f332243
commit 279304e9eb
@@ -0,0 +1,277 @@
# 用户管理和角色管理测试修复实现计划
> **面向 AI 代理的工作者:** 必需子技能:使用 superpowers:subagent-driven-development(推荐)或 superpowers:executing-plans 逐任务实现此计划。步骤使用复选框(`- [ ]`)语法来跟踪进度。
**目标:** 修复用户管理和角色管理测试,使其能够正确展开系统管理菜单后再点击子菜单项,将测试通过率从80%提升到100%
**架构:** 采用与系统配置测试相同的策略:先展开父菜单,再点击子菜单项。修改测试脚本中的用户管理和角色管理测试代码,增加展开系统管理菜单的步骤。
**技术栈:** Playwright, JavaScript, Element Plus
---
## 文件结构
### 测试脚本文件
- **修改**: `novalon-manage-web/user-journey-test.js`
- **职责**: 修复用户管理和角色管理测试,增加展开菜单的步骤
---
## 任务 1:修改用户管理测试
**文件:**
- 修改:`novalon-manage-web/user-journey-test.js:140-180`
- [ ] **步骤 1:修改用户管理测试代码**
将以下代码:
```javascript
try {
const userMenuSelectors = [
'text=用户管理',
'text=用户',
'[data-menu="user"]',
'a[href*="user"]'
];
let navigated = false;
for (const selector of userMenuSelectors) {
const element = page.locator(selector).first();
if (await element.count() > 0) {
await element.click();
navigated = true;
break;
}
}
if (navigated) {
await page.waitForTimeout(1000);
await captureStep(page, '04-user-management');
logTest('导航到用户管理页面', true);
} else {
throw new Error('未找到用户管理菜单');
}
} catch (error) {
logTest('导航到用户管理页面', false, error.message);
}
```
替换为:
```javascript
try {
// 首先展开系统管理菜单(如果是折叠状态)
const systemMenuSelector = '.el-sub-menu:has-text("系统管理")';
const systemMenuElement = page.locator(systemMenuSelector).first();
if (await systemMenuElement.count() > 0) {
// 点击展开系统管理菜单
await systemMenuElement.click();
await page.waitForTimeout(500);
// 然后点击用户管理菜单项
const userMenuSelectors = [
'.el-menu-item:has-text("用户管理")',
'text=用户管理',
'text=用户',
'[data-menu="user"]',
'a[href*="user"]'
];
let navigated = false;
for (const selector of userMenuSelectors) {
const element = page.locator(selector).first();
if (await element.count() > 0) {
await element.click();
navigated = true;
break;
}
}
if (navigated) {
await page.waitForTimeout(1000);
await captureStep(page, '04-user-management');
logTest('导航到用户管理页面', true);
} else {
throw new Error('未找到用户管理菜单');
}
} else {
throw new Error('未找到系统管理菜单');
}
} catch (error) {
logTest('导航到用户管理页面', false, error.message);
}
```
- [ ] **步骤 2:验证修改**
运行:`cat novalon-manage-web/user-journey-test.js | grep -A 30 "阶段2: 用户管理测试"`
预期:显示修改后的代码,包含展开系统管理菜单的逻辑
---
## 任务 2:修改角色管理测试
**文件:**
- 修改:`novalon-manage-web/user-journey-test.js:210-240`
- [ ] **步骤 1:修改角色管理测试代码**
将以下代码:
```javascript
try {
const roleMenuSelectors = [
'text=角色管理',
'text=角色',
'[data-menu="role"]',
'a[href*="role"]'
];
let navigated = false;
for (const selector of roleMenuSelectors) {
const element = page.locator(selector).first();
if (await element.count() > 0) {
await element.click();
navigated = true;
break;
}
}
if (navigated) {
await page.waitForTimeout(1000);
await captureStep(page, '05-role-management');
logTest('导航到角色管理页面', true);
} else {
throw new Error('未找到角色管理菜单');
}
} catch (error) {
logTest('导航到角色管理页面', false, error.message);
}
```
替换为:
```javascript
try {
// 首先展开系统管理菜单(如果是折叠状态)
const systemMenuSelector = '.el-sub-menu:has-text("系统管理")';
const systemMenuElement = page.locator(systemMenuSelector).first();
if (await systemMenuElement.count() > 0) {
// 点击展开系统管理菜单
await systemMenuElement.click();
await page.waitForTimeout(500);
// 然后点击角色管理菜单项
const roleMenuSelectors = [
'.el-menu-item:has-text("角色管理")',
'text=角色管理',
'text=角色',
'[data-menu="role"]',
'a[href*="role"]'
];
let navigated = false;
for (const selector of roleMenuSelectors) {
const element = page.locator(selector).first();
if (await element.count() > 0) {
await element.click();
navigated = true;
break;
}
}
if (navigated) {
await page.waitForTimeout(1000);
await captureStep(page, '05-role-management');
logTest('导航到角色管理页面', true);
} else {
throw new Error('未找到角色管理菜单');
}
} else {
throw new Error('未找到系统管理菜单');
}
} catch (error) {
logTest('导航到角色管理页面', false, error.message);
}
```
- [ ] **步骤 2:验证修改**
运行:`cat novalon-manage-web/user-journey-test.js | grep -A 30 "阶段3: 角色管理测试"`
预期:显示修改后的代码,包含展开系统管理菜单的逻辑
---
## 任务 3:运行测试验证
**文件:**
- 无文件修改
- [ ] **步骤 1:运行User Journey测试**
运行:`cd novalon-manage-web && node user-journey-test.js`
预期:
- 总测试数: 10
- 通过: 10
- 失败: 0
- 通过率: 100%
- [ ] **步骤 2:检查测试报告**
运行:`cat /tmp/user-journey-report.json`
预期:JSON格式的测试报告,所有测试状态为"passed"
---
## 任务 4:提交代码
**文件:**
- 无文件修改
- [ ] **步骤 1:查看修改**
运行:`git diff novalon-manage-web/user-journey-test.js`
预期:显示用户管理和角色管理测试的修改内容
- [ ] **步骤 2:提交修改**
```bash
git add novalon-manage-web/user-journey-test.js
git commit -m "test: 修复用户管理和角色管理测试
- 增加展开系统管理菜单的步骤
- 修复菜单元素不可见导致的测试失败
- 测试通过率从80%提升到100%"
```
预期:提交成功,显示commit hash
- [ ] **步骤 3:验证提交**
运行:`git log --oneline -1`
预期:显示最新的commit信息
---
## 验收标准
### 功能验收
- ✅ 用户管理测试能够成功导航到用户管理页面
- ✅ 角色管理测试能够成功导航到角色管理页面
- ✅ 测试通过率达到100%(10/10)
### 质量验收
- ✅ 测试代码与系统配置测试保持一致的风格
- ✅ 测试代码包含清晰的注释
- ✅ 测试代码包含错误处理
### 提交验收
- ✅ Git提交信息清晰
- ✅ 代码变更符合预期