# 用户管理和角色管理测试修复实现计划 > **面向 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提交信息清晰 - ✅ 代码变更符合预期