From 279304e9ebac041333da1ee5619612f81a1fb28a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Wed, 15 Apr 2026 22:55:48 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=92=8C=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BF=AE=E5=A4=8D=E5=AE=9E=E7=8E=B0=E8=AE=A1?= =?UTF-8?q?=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 详细定义4个任务 - 包含完整的代码示例和验证步骤 - 定义清晰的验收标准 --- ...2026-04-15-user-role-menu-test-fix-plan.md | 277 ++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 docs/superpowers/plans/2026-04-15-user-role-menu-test-fix-plan.md diff --git a/docs/superpowers/plans/2026-04-15-user-role-menu-test-fix-plan.md b/docs/superpowers/plans/2026-04-15-user-role-menu-test-fix-plan.md new file mode 100644 index 0000000..bf51251 --- /dev/null +++ b/docs/superpowers/plans/2026-04-15-user-role-menu-test-fix-plan.md @@ -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提交信息清晰 +- ✅ 代码变更符合预期