docs: 添加用户管理和角色管理测试修复实现计划
- 详细定义4个任务 - 包含完整的代码示例和验证步骤 - 定义清晰的验收标准
This commit is contained in:
@@ -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提交信息清晰
|
||||
- ✅ 代码变更符合预期
|
||||
Reference in New Issue
Block a user