> reading-platform-frontend@1.0.0 test:e2e > playwright test --grep admin --reporter=list Running 113 tests using 1 worker ok 1 [chromium] › tests\e2e\admin\01-login.spec.ts:10:3 › 超管登录流程 › 超管登录成功 (1.6s) ok 2 [chromium] › tests\e2e\admin\01-login.spec.ts:18:3 › 超管登录流程 › 验证跳转到正确的仪表盘页面 (1.4s) ok 3 [chromium] › tests\e2e\admin\01-login.spec.ts:27:3 › 超管登录流程 › 记住登录状态 (1.6s) ok 4 [chromium] › tests\e2e\admin\01-login.spec.ts:37:3 › 超管登录流程 › 错误密码登录失败 (971ms) ok 5 [chromium] › tests\e2e\admin\01-login.spec.ts:54:3 › 超管登录流程 › 账号不存在登录失败 (967ms) x 6 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:14:3 › 数据看板 › 验证统计卡片显示 (11.5s) x 7 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:35:3 › 数据看板 › 验证趋势图加载 (12.2s) x 8 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:41:3 › 数据看板 › 验证活跃租户 TOP5 列表 (1.5s) x 9 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:51:3 › 数据看板 › 验证热门课程包 TOP5 列表 (2.8s) ok 10 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:61:3 › 数据看板 › 验证快捷入口点击跳转 - 创建课程包 (2.2s) ok 11 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:71:3 › 数据看板 › 验证快捷入口点击跳转 - 管理租户 (1.7s) ok 12 [chromium] › tests\e2e\admin\02-dashboard.spec.ts:81:3 › 数据看板 › 验证快捷入口点击跳转 - 资源库 (1.6s) ok 13 [chromium] › tests\e2e\admin\03-courses.spec.ts:17:5 › 课程包管理 › 列表页面 › 访问课程包列表页面 (1.4s) x 14 [chromium] › tests\e2e\admin\03-courses.spec.ts:22:5 › 课程包管理 › 列表页面 › 验证列表加载 (2.6s) x 15 [chromium] › tests\e2e\admin\03-courses.spec.ts:35:5 › 课程包管理 › 列表页面 › 搜索功能 (3.1s) x 16 [chromium] › tests\e2e\admin\03-courses.spec.ts:51:5 › 课程包管理 › 列表页面 › 筛选功能 - 按状态 (31.3s) x 17 [chromium] › tests\e2e\admin\03-courses.spec.ts:67:5 › 课程包管理 › 列表页面 › 分页功能 (8.2s) ok 18 [chromium] › tests\e2e\admin\03-courses.spec.ts:77:5 › 课程包管理 › 创建课程包 › 点击创建按钮 (2.7s) x 19 [chromium] › tests\e2e\admin\03-courses.spec.ts:87:5 › 课程包管理 › 创建课程包 › 步骤 1: 填写基本信息 (2.3s) x 20 [chromium] › tests\e2e\admin\03-courses.spec.ts:111:5 › 课程包管理 › 创建课程包 › 步骤 2: 课程介绍 (2.9s) x 21 [chromium] › tests\e2e\admin\03-courses.spec.ts:140:5 › 课程包管理 › 创建课程包 › 步骤 3: 排课参考 (4.5s) ok 22 [chromium] › tests\e2e\admin\03-courses.spec.ts:172:5 › 课程包管理 › 编辑课程包 › 点击编辑按钮 (2.0s) ok 23 [chromium] › tests\e2e\admin\03-courses.spec.ts:186:5 › 课程包管理 › 编辑课程包 › 修改基本信息 (1.6s) ok 24 [chromium] › tests\e2e\admin\03-courses.spec.ts:211:5 › 课程包管理 › 删除课程包 › 点击删除按钮 (1.6s) ok 25 [chromium] › tests\e2e\admin\03-courses.spec.ts:222:5 › 课程包管理 › 删除课程包 › 确认删除弹窗 (1.7s) ok 26 [chromium] › tests\e2e\admin\03-courses.spec.ts:244:5 › 课程包管理 › 课程包详情 › 查看详情页 (1.4s) ok 27 [chromium] › tests\e2e\admin\03-courses.spec.ts:258:5 › 课程包管理 › 课程包详情 › 查看课程资源 (1.8s) ok 28 [chromium] › tests\e2e\admin\04-packages.spec.ts:17:5 › 套餐管理 › 列表页面 › 访问套餐列表页面 (1.3s) x 29 [chromium] › tests\e2e\admin\04-packages.spec.ts:22:5 › 套餐管理 › 列表页面 › 验证列表加载 (1.9s) ok 30 [chromium] › tests\e2e\admin\04-packages.spec.ts:35:5 › 套餐管理 › 列表页面 › 验证套餐列表数据 (4.5s) x 31 [chromium] › tests\e2e\admin\04-packages.spec.ts:45:5 › 套餐管理 › 创建套餐 › 点击创建按钮 (31.1s) ok 32 [chromium] › tests\e2e\admin\04-packages.spec.ts:54:5 › 套餐管理 › 创建套餐 › 填写套餐信息 (3.7s) ok 33 [chromium] › tests\e2e\admin\04-packages.spec.ts:79:5 › 套餐管理 › 创建套餐 › 设置配额 (2.8s) ok 34 [chromium] › tests\e2e\admin\04-packages.spec.ts:103:5 › 套餐管理 › 创建套餐 › 保存套餐 (2.2s) ok 35 [chromium] › tests\e2e\admin\04-packages.spec.ts:152:5 › 套餐管理 › 编辑套餐 › 点击编辑按钮 (1.5s) ok 36 [chromium] › tests\e2e\admin\04-packages.spec.ts:165:5 › 套餐管理 › 编辑套餐 › 修改套餐信息 (1.6s) ok 37 [chromium] › tests\e2e\admin\04-packages.spec.ts:194:5 › 套餐管理 › 删除套餐 › 点击删除按钮 (1.4s) ok 38 [chromium] › tests\e2e\admin\04-packages.spec.ts:204:5 › 套餐管理 › 删除套餐 › 确认删除弹窗 (1.4s) ok 39 [chromium] › tests\e2e\admin\05-themes.spec.ts:17:5 › 主题字典 › 列表页面 › 访问主题列表页面 (1.7s) x 40 [chromium] › tests\e2e\admin\05-themes.spec.ts:22:5 › 主题字典 › 列表页面 › 验证列表加载 (2.2s) ok 41 [chromium] › tests\e2e\admin\05-themes.spec.ts:35:5 › 主题字典 › 列表页面 › 验证主题列表数据 (2.4s) x 42 [chromium] › tests\e2e\admin\05-themes.spec.ts:45:5 › 主题字典 › 创建主题 › 点击创建按钮 (31.5s) ok 43 [chromium] › tests\e2e\admin\05-themes.spec.ts:54:5 › 主题字典 › 创建主题 › 填写主题信息 (2.0s) ok 44 [chromium] › tests\e2e\admin\05-themes.spec.ts:79:5 › 主题字典 › 创建主题 › 上传主题图片 (2.0s) ok 45 [chromium] › tests\e2e\admin\05-themes.spec.ts:98:5 › 主题字典 › 创建主题 › 保存主题 (1.9s) ok 46 [chromium] › tests\e2e\admin\05-themes.spec.ts:127:5 › 主题字典 › 编辑主题 › 点击编辑按钮 (1.4s) ok 47 [chromium] › tests\e2e\admin\05-themes.spec.ts:140:5 › 主题字典 › 编辑主题 › 修改主题信息 (1.4s) ok 48 [chromium] › tests\e2e\admin\05-themes.spec.ts:169:5 › 主题字典 › 删除主题 › 点击删除按钮 (1.3s) ok 49 [chromium] › tests\e2e\admin\05-themes.spec.ts:179:5 › 主题字典 › 删除主题 › 确认删除弹窗 (1.7s) ok 50 [chromium] › tests\e2e\admin\06-tenants.spec.ts:17:5 › 租户管理 › 列表页面 › 访问租户列表页面 (1.6s) x 51 [chromium] › tests\e2e\admin\06-tenants.spec.ts:22:5 › 租户管理 › 列表页面 › 验证列表加载 (1.9s) x 52 [chromium] › tests\e2e\admin\06-tenants.spec.ts:35:5 › 租户管理 › 列表页面 › 搜索功能 (1.7s) x 53 [chromium] › tests\e2e\admin\06-tenants.spec.ts:53:5 › 租户管理 › 列表页面 › 筛选功能 - 按状态 (2.0s) x 54 [chromium] › tests\e2e\admin\06-tenants.spec.ts:71:5 › 租户管理 › 列表页面 › 筛选功能 - 按套餐 (1.9s) x 55 [chromium] › tests\e2e\admin\06-tenants.spec.ts:89:5 › 租户管理 › 列表页面 › 分页功能 (6.7s) x 56 [chromium] › tests\e2e\admin\06-tenants.spec.ts:99:5 › 租户管理 › 创建租户 › 点击添加租户按钮 (30.9s) x 57 [chromium] › tests\e2e\admin\06-tenants.spec.ts:112:5 › 租户管理 › 创建租户 › 填写基本信息 (30.9s) x 58 [chromium] › tests\e2e\admin\06-tenants.spec.ts:137:5 › 租户管理 › 创建租户 › 选择套餐类型 (31.0s) x 59 [chromium] › tests\e2e\admin\06-tenants.spec.ts:153:5 › 租户管理 › 创建租户 › 设置配额 (31.0s) x 60 [chromium] › tests\e2e\admin\06-tenants.spec.ts:174:5 › 租户管理 › 创建租户 › 设置有效期 (31.0s) x 61 [chromium] › tests\e2e\admin\06-tenants.spec.ts:187:5 › 租户管理 › 创建租户 › 保存租户 (30.9s) ok 62 [chromium] › tests\e2e\admin\06-tenants.spec.ts:243:5 › 租户管理 › 查看租户详情 › 点击租户查看详情 (1.7s) ok 63 [chromium] › tests\e2e\admin\06-tenants.spec.ts:257:5 › 租户管理 › 查看租户详情 › 查看基本信息 (1.4s) ok 64 [chromium] › tests\e2e\admin\06-tenants.spec.ts:271:5 › 租户管理 › 查看租户详情 › 查看教师列表 (1.4s) ok 65 [chromium] › tests\e2e\admin\06-tenants.spec.ts:285:5 › 租户管理 › 查看租户详情 › 查看学生列表 (1.3s) ok 66 [chromium] › tests\e2e\admin\06-tenants.spec.ts:301:5 › 租户管理 › 编辑租户 › 点击编辑按钮 (1.4s) ok 67 [chromium] › tests\e2e\admin\06-tenants.spec.ts:319:5 › 租户管理 › 编辑租户 › 修改基本信息 (1.4s) ok 68 [chromium] › tests\e2e\admin\06-tenants.spec.ts:351:5 › 租户管理 › 编辑租户 › 修改配额 (1.4s) ok 69 [chromium] › tests\e2e\admin\06-tenants.spec.ts:372:5 › 租户管理 › 租户状态管理 › 禁用租户 (1.4s) ok 70 [chromium] › tests\e2e\admin\06-tenants.spec.ts:399:5 › 租户管理 › 租户状态管理 › 启用租户 (1.4s) ok 71 [chromium] › tests\e2e\admin\06-tenants.spec.ts:428:5 › 租户管理 › 重置密码 › 点击重置密码 (1.4s) ok 72 [chromium] › tests\e2e\admin\06-tenants.spec.ts:455:5 › 租户管理 › 删除租户 › 点击删除按钮 (1.4s) ok 73 [chromium] › tests\e2e\admin\06-tenants.spec.ts:472:5 › 租户管理 › 删除租户 › 确认删除弹窗 (1.4s) ok 74 [chromium] › tests\e2e\admin\07-resources.spec.ts:17:5 › 资源库 › 列表页面 › 访问资源库列表页面 (1.3s) x 75 [chromium] › tests\e2e\admin\07-resources.spec.ts:22:5 › 资源库 › 列表页面 › 验证列表加载 (1.5s) x 76 [chromium] › tests\e2e\admin\07-resources.spec.ts:35:5 › 资源库 › 列表页面 › 搜索功能 (2.7s) x 77 [chromium] › tests\e2e\admin\07-resources.spec.ts:53:5 › 资源库 › 列表页面 › 筛选功能 - 按类型 (1.6s) x 78 [chromium] › tests\e2e\admin\07-resources.spec.ts:71:5 › 资源库 › 列表页面 › 分页功能 (6.8s) x 79 [chromium] › tests\e2e\admin\07-resources.spec.ts:81:5 › 资源库 › 创建资源 › 点击创建按钮 (31.1s) x 80 [chromium] › tests\e2e\admin\07-resources.spec.ts:102:5 › 资源库 › 创建资源 › 填写资源信息 (31.1s) x 81 [chromium] › tests\e2e\admin\07-resources.spec.ts:155:5 › 资源库 › 创建资源 › 上传资源文件 (31.1s) x 82 [chromium] › tests\e2e\admin\07-resources.spec.ts:181:5 › 资源库 › 创建资源 › 保存资源 (31.1s) ok 83 [chromium] › tests\e2e\admin\07-resources.spec.ts:252:5 › 资源库 › 编辑资源 › 点击编辑按钮 (1.7s) ok 84 [chromium] › tests\e2e\admin\07-resources.spec.ts:271:5 › 资源库 › 编辑资源 › 修改资源信息 (1.5s) ok 85 [chromium] › tests\e2e\admin\07-resources.spec.ts:298:5 › 资源库 › 删除资源 › 点击删除按钮 (1.3s) ok 86 [chromium] › tests\e2e\admin\07-resources.spec.ts:308:5 › 资源库 › 删除资源 › 确认删除弹窗 (1.4s) ok 87 [chromium] › tests\e2e\admin\08-settings.spec.ts:16:5 › 系统设置 › 基本设置 › 访问系统设置页面 (1.3s) x 88 [chromium] › tests\e2e\admin\08-settings.spec.ts:21:5 › 系统设置 › 基本设置 › 查看基本设置表单 (6.5s) ok 89 [chromium] › tests\e2e\admin\08-settings.spec.ts:34:5 › 系统设置 › 基本设置 › 修改系统名称 (1.9s) ok 90 [chromium] › tests\e2e\admin\08-settings.spec.ts:46:5 › 系统设置 › 基本设置 › 修改联系电话 (1.6s) ok 91 [chromium] › tests\e2e\admin\08-settings.spec.ts:57:5 › 系统设置 › 基本设置 › 修改联系邮箱 (1.6s) x 92 [chromium] › tests\e2e\admin\08-settings.spec.ts:68:5 › 系统设置 › 基本设置 › 上传系统 Logo (6.8s) ok 93 [chromium] › tests\e2e\admin\08-settings.spec.ts:77:5 › 系统设置 › 基本设置 › 保存基本设置 (4.1s) x 94 [chromium] › tests\e2e\admin\08-settings.spec.ts:111:5 › 系统设置 › 安全设置 › 查看安全设置 (7.5s) ok 95 [chromium] › tests\e2e\admin\08-settings.spec.ts:124:5 › 系统设置 › 安全设置 › 修改密码强度策略 (2.7s) ok 96 [chromium] › tests\e2e\admin\08-settings.spec.ts:137:5 › 系统设置 › 安全设置 › 修改最大登录尝试次数 (1.9s) ok 97 [chromium] › tests\e2e\admin\08-settings.spec.ts:150:5 › 系统设置 › 安全设置 › 修改 Token 过期时间 (1.9s) ok 98 [chromium] › tests\e2e\admin\08-settings.spec.ts:164:5 › 系统设置 › 安全设置 › 保存安全设置 (4.0s) ok 99 [chromium] › tests\e2e\admin\08-settings.spec.ts:188:5 › 系统设置 › 通知设置 › 查看通知设置 (2.1s) ok 100 [chromium] › tests\e2e\admin\08-settings.spec.ts:202:5 › 系统设置 › 通知设置 › 启用/禁用邮件通知 (2.3s) ok 101 [chromium] › tests\e2e\admin\08-settings.spec.ts:215:5 › 系统设置 › 通知设置 › 配置 SMTP 服务器 (1.9s) ok 102 [chromium] › tests\e2e\admin\08-settings.spec.ts:240:5 › 系统设置 › 通知设置 › 启用/禁用短信通知 (1.9s) ok 103 [chromium] › tests\e2e\admin\08-settings.spec.ts:253:5 › 系统设置 › 通知设置 › 保存通知设置 (4.2s) ok 104 [chromium] › tests\e2e\admin\08-settings.spec.ts:277:5 › 系统设置 › 存储设置 › 查看存储设置 (1.9s) ok 105 [chromium] › tests\e2e\admin\08-settings.spec.ts:289:5 › 系统设置 › 存储设置 › 选择存储类型 (1.8s) ok 106 [chromium] › tests\e2e\admin\08-settings.spec.ts:308:5 › 系统设置 › 存储设置 › 设置最大文件大小 (1.9s) ok 107 [chromium] › tests\e2e\admin\08-settings.spec.ts:321:5 › 系统设置 › 存储设置 › 设置允许的文件类型 (1.9s) ok 108 [chromium] › tests\e2e\admin\08-settings.spec.ts:334:5 › 系统设置 › 存储设置 › 保存存储设置 (3.8s) x 109 [chromium] › tests\e2e\admin\99-logout.spec.ts:10:3 › 退出登录 › 点击退出登录 (1.2s) x 110 [chromium] › tests\e2e\admin\99-logout.spec.ts:36:3 › 退出登录 › 验证跳转回登录页 (1.2s) x 111 [chromium] › tests\e2e\admin\99-logout.spec.ts:65:3 › 退出登录 › 验证 token 已清除 (1.5s) x 112 [chromium] › tests\e2e\admin\99-logout.spec.ts:101:3 › 退出登录 › 退出后无法访问管理页面 (1.3s) 步骤 1: 登录系统 ✓ 登录成功 步骤 2: 验证数据看板 x 113 [chromium] › tests\e2e\admin\admin-full-flow.spec.ts:13:3 › 超管端完整流程集成测试 › 超管端全功能流程测试 (11.5s) 1) [chromium] › tests\e2e\admin\02-dashboard.spec.ts:14:3 › 数据看板 › 验证统计卡片显示 ────────────────────── TimeoutError: page.waitForSelector: Timeout 10000ms exceeded. Call log:  - waiting for locator('.ant-statistic, [class*="statistic"]') to be visible 14 | test('验证统计卡片显示', async ({ page }) => { 15 | // 等待统计卡片加载 > 16 | await page.waitForSelector('.ant-statistic, [class*="statistic"]', { timeout: 10000 }); | ^ 17 | 18 | // 验证租户数卡片 19 | const tenantCard = page.getByText(/租户数|租户总数|机构数/).first(); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\02-dashboard.spec.ts:16:16 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证统计卡片显示-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证统计卡片显示-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-02-dashboard-数据看板-验证统计卡片显示-chromium\error-context.md 2) [chromium] › tests\e2e\admin\02-dashboard.spec.ts:35:3 › 数据看板 › 验证趋势图加载 ─────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[class*="trend"], [class*="chart"], canvas').first() Expected: visible Timeout: 10000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 10000ms  - waiting for locator('[class*="trend"], [class*="chart"], canvas').first() 36 | // 等待图表容器加载 37 | const chartContainer = page.locator('[class*="trend"], [class*="chart"], canvas').first(); > 38 | await expect(chartContainer).toBeVisible({ timeout: 10000 }); | ^ 39 | }); 40 | 41 | test('验证活跃租户 TOP5 列表', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\02-dashboard.spec.ts:38:34 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证趋势图加载-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证趋势图加载-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-02-dashboard-数据看板-验证趋势图加载-chromium\error-context.md 3) [chromium] › tests\e2e\admin\02-dashboard.spec.ts:41:3 › 数据看板 › 验证活跃租户 TOP5 列表 ──────────────── Error: expect(locator).toBeVisible() failed Locator: getByText(/活跃租户|活跃机构|TOP5/) Expected: visible Error: strict mode violation: getByText(/活跃租户|活跃机构|TOP5/) resolved to 2 elements: 1)
活跃租户 TOP5
aka getByText('活跃租户 TOP5') 2)
热门课程包 TOP5
aka getByText('热门课程包 TOP5') Call log:  - Expect "toBeVisible" with timeout 10000ms  - waiting for getByText(/活跃租户|活跃机构|TOP5/) 42 | // 查找活跃租户列表区域 43 | const activeTenantsSection = page.getByText(/活跃租户|活跃机构|TOP5/); > 44 | await expect(activeTenantsSection).toBeVisible({ timeout: 10000 }); | ^ 45 | 46 | // 验证列表中有数据行 47 | const listItems = page.locator('[class*="list-item"], [class*="table-row"]').first(); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\02-dashboard.spec.ts:44:40 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证活跃租户-TOP5-列表-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证活跃租户-TOP5-列表-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-02-dashboard-数据看板-验证活跃租户-TOP5-列表-chromium\error-context.md 4) [chromium] › tests\e2e\admin\02-dashboard.spec.ts:51:3 › 数据看板 › 验证热门课程包 TOP5 列表 ─────────────── Error: expect(locator).toBeVisible() failed Locator: getByText(/热门课程|热门课程包|TOP5/) Expected: visible Error: strict mode violation: getByText(/热门课程|热门课程包|TOP5/) resolved to 2 elements: 1)
活跃租户 TOP5
aka getByText('活跃租户 TOP5') 2)
热门课程包 TOP5
aka getByText('热门课程包 TOP5') Call log:  - Expect "toBeVisible" with timeout 10000ms  - waiting for getByText(/热门课程|热门课程包|TOP5/) 52 | // 查找热门课程包列表区域 53 | const popularCoursesSection = page.getByText(/热门课程|热门课程包|TOP5/); > 54 | await expect(popularCoursesSection).toBeVisible({ timeout: 10000 }); | ^ 55 | 56 | // 验证列表中有数据行 57 | const listItems = page.locator('[class*="list-item"], [class*="table-row"]').first(); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\02-dashboard.spec.ts:54:41 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证热门课程包-TOP5-列表-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-02-dashboard-数据看板-验证热门课程包-TOP5-列表-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-02-dashboard-数据看板-验证热门课程包-TOP5-列表-chromium\error-context.md 5) [chromium] › tests\e2e\admin\03-courses.spec.ts:22:5 › 课程包管理 › 列表页面 › 验证列表加载 ────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: '课程包名称关联绘本状态版本数据统计最近更新操作暂无数据' }).nth(5) 2) …
aka getByText('课程包名称关联绘本状态版本数据统计最近更新操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 26 | // 验证表格存在 27 | const table = page.locator('table, .ant-table'); > 28 | await expect(table).toBeVisible(); | ^ 29 | 30 | // 验证新建按钮存在 31 | const createButton = page.getByText(/新建课程包|创建课程包/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:28:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-验证列表加载-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-验证列表加载-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-列表页面-验证列表加载-chromium\error-context.md 6) [chromium] › tests\e2e\admin\03-courses.spec.ts:35:5 › 课程包管理 › 列表页面 › 搜索功能 ──────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: '课程包名称关联绘本状态版本数据统计最近更新操作暂无数据' }).nth(5) 2) …
aka getByText('课程包名称关联绘本状态版本数据统计最近更新操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 46 | // 验证搜索结果 47 | const table = page.locator('table, .ant-table'); > 48 | await expect(table).toBeVisible(); | ^ 49 | }); 50 | 51 | test('筛选功能 - 按状态', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:48:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-搜索功能-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-搜索功能-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-列表页面-搜索功能-chromium\error-context.md 7) [chromium] › tests\e2e\admin\03-courses.spec.ts:51:5 › 课程包管理 › 列表页面 › 筛选功能 - 按状态 ────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByPlaceholder('状态') 54 | // 选择状态筛选 55 | const statusSelect = page.getByPlaceholder('状态'); > 56 | await statusSelect.click(); | ^ 57 | await page.getByText('已发布').click(); 58 | 59 | // 等待筛选结果 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:56:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-筛选功能---按状态-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-筛选功能---按状态-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-列表页面-筛选功能---按状态-chromium\error-context.md 8) [chromium] › tests\e2e\admin\03-courses.spec.ts:67:5 › 课程包管理 › 列表页面 › 分页功能 ──────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ant-pagination') Expected: visible Timeout: 5000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('.ant-pagination') 70 | // 验证分页控件存在 71 | const pagination = page.locator('.ant-pagination'); > 72 | await expect(pagination).toBeVisible(); | ^ 73 | }); 74 | }); 75 | at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:72:32 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-分页功能-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-列表页面-分页功能-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-列表页面-分页功能-chromium\error-context.md 9) [chromium] › tests\e2e\admin\03-courses.spec.ts:87:5 › 课程包管理 › 创建课程包 › 步骤 1: 填写基本信息 ─────────── Error: expect(locator).toBeVisible() failed Locator: getByText(/课程介绍|课程目标/) Expected: visible Error: strict mode violation: getByText(/课程介绍|课程目标/) resolved to 2 elements: 1)
aka getByRole('button', { name: '课程介绍' }) 2) 课程介绍 aka locator('span').filter({ hasText: '课程介绍' }) Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for getByText(/课程介绍|课程目标/) 106 | 107 | // 验证进入步骤 2 > 108 | await expect(page.getByText(/课程介绍|课程目标/)).toBeVisible({ timeout: 5000 }); | ^ 109 | }); 110 | 111 | test('步骤 2: 课程介绍', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:108:49 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-创建课程包-步骤-1-填写基本信息-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-创建课程包-步骤-1-填写基本信息-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-创建课程包-步骤-1-填写基本信息-chromium\error-context.md 10) [chromium] › tests\e2e\admin\03-courses.spec.ts:111:5 › 课程包管理 › 创建课程包 › 步骤 2: 课程介绍 ─────────── Error: expect(locator).toBeVisible() failed Locator: getByText(/排课参考/) Expected: visible Error: strict mode violation: getByText(/排课参考/) resolved to 3 elements: 1)
aka getByRole('button', { name: '排课参考' }) 2)
排课参考说明
aka getByText('排课参考说明') 3)
此表格为排课参考,帮助教师了解课程安排建议。可根据实际情况调整。
aka getByText('此表格为排课参考,帮助教师了解课程安排建议。可根据实际情况调整。') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for getByText(/排课参考/) 135 | 136 | // 验证进入步骤 3 > 137 | await expect(page.getByText(/排课参考/)).toBeVisible({ timeout: 5000 }); | ^ 138 | }); 139 | 140 | test('步骤 3: 排课参考', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:137:44 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-创建课程包-步骤-2-课程介绍-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-创建课程包-步骤-2-课程介绍-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-创建课程包-步骤-2-课程介绍-chromium\error-context.md 11) [chromium] › tests\e2e\admin\03-courses.spec.ts:140:5 › 课程包管理 › 创建课程包 › 步骤 3: 排课参考 ─────────── Error: expect(locator).toBeVisible() failed Locator: getByText(/导入课/) Expected: visible Error: strict mode violation: getByText(/导入课/) resolved to 6 elements: 1)
aka getByRole('button', { name: '导入课' }) 2) 导入课配置 aka getByText('导入课配置') 3)
导入课说明
aka getByText('导入课说明') 4)
导入课用于激发幼儿兴趣,引入课程主题。建议时长5-15分钟,重点在于吸引注意力、建立学习期待。
aka getByText('导入课用于激发幼儿兴趣,引入课程主题。建议时长5-15') 5)

暂未配置导入课

aka getByText('暂未配置导入课') 6) 创建导入课 aka getByText('创建导入课') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for getByText(/导入课/) 165 | 166 | // 验证进入步骤 4 > 167 | await expect(page.getByText(/导入课/)).toBeVisible({ timeout: 5000 }); | ^ 168 | }); 169 | }); 170 | at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\03-courses.spec.ts:167:43 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-创建课程包-步骤-3-排课参考-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-03-courses-课程包管理-创建课程包-步骤-3-排课参考-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-03-courses-课程包管理-创建课程包-步骤-3-排课参考-chromium\error-context.md 12) [chromium] › tests\e2e\admin\04-packages.spec.ts:22:5 › 套餐管理 › 列表页面 › 验证列表加载 ───────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^ID套餐名称价格适用年级课程数使用学校数状态操作暂无数据$/ }).nth(3) 2) …
aka getByText('ID套餐名称价格适用年级课程数使用学校数状态操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 26 | // 验证表格存在 27 | const table = page.locator('table, .ant-table'); > 28 | await expect(table).toBeVisible(); | ^ 29 | 30 | // 验证新建按钮存在 31 | const createButton = page.getByText(/新建套餐 | 创建套餐/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\04-packages.spec.ts:28:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-04-packages-套餐管理-列表页面-验证列表加载-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-04-packages-套餐管理-列表页面-验证列表加载-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-04-packages-套餐管理-列表页面-验证列表加载-chromium\error-context.md 13) [chromium] › tests\e2e\admin\04-packages.spec.ts:45:5 › 套餐管理 › 创建套餐 › 点击创建按钮 ───────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/新建套餐 | 创建套餐/) 46 | // 点击新建套餐按钮 47 | const createButton = page.getByText(/新建套餐 | 创建套餐/); > 48 | await createButton.click(); | ^ 49 | 50 | // 验证跳转到创建页面 51 | await page.waitForURL(/\/admin\/packages\/create|\/admin\/packages\/new/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\04-packages.spec.ts:48:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-04-packages-套餐管理-创建套餐-点击创建按钮-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-04-packages-套餐管理-创建套餐-点击创建按钮-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-04-packages-套餐管理-创建套餐-点击创建按钮-chromium\error-context.md 14) [chromium] › tests\e2e\admin\05-themes.spec.ts:22:5 › 主题字典 › 列表页面 › 验证列表加载 ─────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^排序主题名称描述状态操作暂无数据$/ }).nth(4) 2) …
aka getByText('排序主题名称描述状态操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 26 | // 验证表格存在 27 | const table = page.locator('table, .ant-table'); > 28 | await expect(table).toBeVisible(); | ^ 29 | 30 | // 验证新建按钮存在 31 | const createButton = page.getByText(/新建主题 | 创建主题/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\05-themes.spec.ts:28:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-05-themes-主题字典-列表页面-验证列表加载-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-05-themes-主题字典-列表页面-验证列表加载-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-05-themes-主题字典-列表页面-验证列表加载-chromium\error-context.md 15) [chromium] › tests\e2e\admin\05-themes.spec.ts:45:5 › 主题字典 › 创建主题 › 点击创建按钮 ─────────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/新建主题 | 创建主题/) 46 | // 点击新建主题按钮 47 | const createButton = page.getByText(/新建主题 | 创建主题/); > 48 | await createButton.click(); | ^ 49 | 50 | // 验证跳转到创建页面 51 | await page.waitForURL(/\/admin\/themes\/create|\/admin\/themes\/new/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\05-themes.spec.ts:48:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-05-themes-主题字典-创建主题-点击创建按钮-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-05-themes-主题字典-创建主题-点击创建按钮-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-05-themes-主题字典-创建主题-点击创建按钮-chromium\error-context.md 16) [chromium] › tests\e2e\admin\06-tenants.spec.ts:22:5 › 租户管理 › 列表页面 › 验证列表加载 ────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据$/ }).nth(3) 2) …
aka getByText('学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 26 | // 验证表格存在 27 | const table = page.locator('table, .ant-table'); > 28 | await expect(table).toBeVisible(); | ^ 29 | 30 | // 验证添加租户按钮存在 31 | const addButton = page.getByText(/添加租户 | 新建租户/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:28:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-验证列表加载-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-验证列表加载-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-列表页面-验证列表加载-chromium\error-context.md 17) [chromium] › tests\e2e\admin\06-tenants.spec.ts:35:5 › 租户管理 › 列表页面 › 搜索功能 ──────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据$/ }).nth(3) 2) …
aka getByText('学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 48 | // 验证表格仍然存在 49 | const table = page.locator('table, .ant-table'); > 50 | await expect(table).toBeVisible(); | ^ 51 | }); 52 | 53 | test('筛选功能 - 按状态', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:50:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-搜索功能-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-搜索功能-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-列表页面-搜索功能-chromium\error-context.md 18) [chromium] › tests\e2e\admin\06-tenants.spec.ts:53:5 › 租户管理 › 列表页面 › 筛选功能 - 按状态 ────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据$/ }).nth(3) 2) …
aka getByText('学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 66 | // 验证表格仍然存在 67 | const table = page.locator('table, .ant-table'); > 68 | await expect(table).toBeVisible(); | ^ 69 | }); 70 | 71 | test('筛选功能 - 按套餐', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:68:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-筛选功能---按状态-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-筛选功能---按状态-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-列表页面-筛选功能---按状态-chromium\error-context.md 19) [chromium] › tests\e2e\admin\06-tenants.spec.ts:71:5 › 租户管理 › 列表页面 › 筛选功能 - 按套餐 ────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据$/ }).nth(3) 2) …
aka getByText('学校名称登录账号联系人联系电话套餐配额使用有效期状态操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 84 | // 验证表格仍然存在 85 | const table = page.locator('table, .ant-table'); > 86 | await expect(table).toBeVisible(); | ^ 87 | }); 88 | 89 | test('分页功能', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:86:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-筛选功能---按套餐-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-筛选功能---按套餐-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-列表页面-筛选功能---按套餐-chromium\error-context.md 20) [chromium] › tests\e2e\admin\06-tenants.spec.ts:89:5 › 租户管理 › 列表页面 › 分页功能 ──────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ant-pagination') Expected: visible Timeout: 5000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('.ant-pagination') 92 | // 验证分页控件存在 93 | const pagination = page.locator('.ant-pagination'); > 94 | await expect(pagination).toBeVisible(); | ^ 95 | }); 96 | }); 97 | at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:94:32 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-分页功能-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-列表页面-分页功能-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-列表页面-分页功能-chromium\error-context.md 21) [chromium] › tests\e2e\admin\06-tenants.spec.ts:99:5 › 租户管理 › 创建租户 › 点击添加租户按钮 ──────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/添加租户 | 新建租户/) 102 | // 点击添加租户按钮 103 | const addButton = page.getByText(/添加租户 | 新建租户/); > 104 | await addButton.click(); | ^ 105 | 106 | // 等待弹窗显示 107 | const modal = page.locator('.ant-modal'); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:104:23 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-点击添加租户按钮-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-点击添加租户按钮-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-创建租户-点击添加租户按钮-chromium\error-context.md 22) [chromium] › tests\e2e\admin\06-tenants.spec.ts:112:5 › 租户管理 › 创建租户 › 填写基本信息 ───────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/添加租户 | 新建租户/) 115 | // 点击添加租户按钮 116 | const addButton = page.getByText(/添加租户 | 新建租户/); > 117 | await addButton.click(); | ^ 118 | await page.waitForTimeout(500); 119 | 120 | // 填写学校名称 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:117:23 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-填写基本信息-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-填写基本信息-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-创建租户-填写基本信息-chromium\error-context.md 23) [chromium] › tests\e2e\admin\06-tenants.spec.ts:137:5 › 租户管理 › 创建租户 › 选择套餐类型 ───────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/添加租户 | 新建租户/) 140 | // 点击添加租户按钮 141 | const addButton = page.getByText(/添加租户 | 新建租户/); > 142 | await addButton.click(); | ^ 143 | await page.waitForTimeout(500); 144 | 145 | // 选择套餐类型 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:142:23 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-选择套餐类型-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-选择套餐类型-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-创建租户-选择套餐类型-chromium\error-context.md 24) [chromium] › tests\e2e\admin\06-tenants.spec.ts:153:5 › 租户管理 › 创建租户 › 设置配额 ─────────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/添加租户 | 新建租户/) 156 | // 点击添加租户按钮 157 | const addButton = page.getByText(/添加租户 | 新建租户/); > 158 | await addButton.click(); | ^ 159 | await page.waitForTimeout(500); 160 | 161 | // 设置教师配额 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:158:23 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-设置配额-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-设置配额-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-创建租户-设置配额-chromium\error-context.md 25) [chromium] › tests\e2e\admin\06-tenants.spec.ts:174:5 › 租户管理 › 创建租户 › 设置有效期 ────────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/添加租户 | 新建租户/) 177 | // 点击添加租户按钮 178 | const addButton = page.getByText(/添加租户 | 新建租户/); > 179 | await addButton.click(); | ^ 180 | await page.waitForTimeout(500); 181 | 182 | // 验证日期选择器存在 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:179:23 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-设置有效期-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-设置有效期-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-创建租户-设置有效期-chromium\error-context.md 26) [chromium] › tests\e2e\admin\06-tenants.spec.ts:187:5 › 租户管理 › 创建租户 › 保存租户 ─────────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/添加租户 | 新建租户/) 190 | // 点击添加租户按钮 191 | const addButton = page.getByText(/添加租户 | 新建租户/); > 192 | await addButton.click(); | ^ 193 | await page.waitForTimeout(500); 194 | 195 | // 填写学校名称 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\06-tenants.spec.ts:192:23 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-保存租户-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-06-tenants-租户管理-创建租户-保存租户-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-06-tenants-租户管理-创建租户-保存租户-chromium\error-context.md 27) [chromium] › tests\e2e\admin\07-resources.spec.ts:22:5 › 资源库 › 列表页面 › 验证列表加载 ───────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^资源所属资源库标签上传时间操作暂无数据$/ }).nth(3) 2) …
aka getByText('资源所属资源库标签上传时间操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 26 | // 验证表格存在 27 | const table = page.locator('table, .ant-table'); > 28 | await expect(table).toBeVisible(); | ^ 29 | 30 | // 验证新建按钮存在 31 | const createButton = page.getByText(/新建资源 | 创建资源 | 上传资源/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:28:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-验证列表加载-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-验证列表加载-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-列表页面-验证列表加载-chromium\error-context.md 28) [chromium] › tests\e2e\admin\07-resources.spec.ts:35:5 › 资源库 › 列表页面 › 搜索功能 ─────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^资源所属资源库标签上传时间操作暂无数据$/ }).nth(3) 2) …
aka getByText('资源所属资源库标签上传时间操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 48 | // 验证表格仍然存在 49 | const table = page.locator('table, .ant-table'); > 50 | await expect(table).toBeVisible(); | ^ 51 | }); 52 | 53 | test('筛选功能 - 按类型', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:50:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-搜索功能-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-搜索功能-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-列表页面-搜索功能-chromium\error-context.md 29) [chromium] › tests\e2e\admin\07-resources.spec.ts:53:5 › 资源库 › 列表页面 › 筛选功能 - 按类型 ───────────── Error: expect(locator).toBeVisible() failed Locator: locator('table, .ant-table') Expected: visible Error: strict mode violation: locator('table, .ant-table') resolved to 2 elements: 1)
aka locator('div').filter({ hasText: /^资源所属资源库标签上传时间操作暂无数据$/ }).nth(3) 2) …
aka getByText('资源所属资源库标签上传时间操作暂无数据') Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('table, .ant-table') 66 | // 验证表格仍然存在 67 | const table = page.locator('table, .ant-table'); > 68 | await expect(table).toBeVisible(); | ^ 69 | }); 70 | 71 | test('分页功能', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:68:27 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-筛选功能---按类型-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-筛选功能---按类型-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-列表页面-筛选功能---按类型-chromium\error-context.md 30) [chromium] › tests\e2e\admin\07-resources.spec.ts:71:5 › 资源库 › 列表页面 › 分页功能 ─────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ant-pagination') Expected: visible Timeout: 5000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('.ant-pagination') 74 | // 验证分页控件存在 75 | const pagination = page.locator('.ant-pagination'); > 76 | await expect(pagination).toBeVisible(); | ^ 77 | }); 78 | }); 79 | at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:76:32 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-分页功能-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-列表页面-分页功能-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-列表页面-分页功能-chromium\error-context.md 31) [chromium] › tests\e2e\admin\07-resources.spec.ts:81:5 › 资源库 › 创建资源 › 点击创建按钮 ───────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/新建资源 | 创建资源 | 上传资源/) 84 | // 点击新建资源按钮 85 | const createButton = page.getByText(/新建资源 | 创建资源 | 上传资源/); > 86 | await createButton.click(); | ^ 87 | 88 | // 验证跳转到创建页面或弹窗显示 89 | await page.waitForTimeout(1000); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:86:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-点击创建按钮-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-点击创建按钮-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-创建资源-点击创建按钮-chromium\error-context.md 32) [chromium] › tests\e2e\admin\07-resources.spec.ts:102:5 › 资源库 › 创建资源 › 填写资源信息 ──────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/新建资源 | 创建资源 | 上传资源/) 105 | // 点击新建资源按钮 106 | const createButton = page.getByText(/新建资源 | 创建资源 | 上传资源/); > 107 | await createButton.click(); | ^ 108 | await page.waitForTimeout(500); 109 | 110 | // 检查是弹窗还是新页面 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:107:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-填写资源信息-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-填写资源信息-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-创建资源-填写资源信息-chromium\error-context.md 33) [chromium] › tests\e2e\admin\07-resources.spec.ts:155:5 › 资源库 › 创建资源 › 上传资源文件 ──────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/新建资源 | 创建资源 | 上传资源/) 158 | // 点击新建资源按钮 159 | const createButton = page.getByText(/新建资源 | 创建资源 | 上传资源/); > 160 | await createButton.click(); | ^ 161 | await page.waitForTimeout(500); 162 | 163 | // 检查是弹窗还是新页面 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:160:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-上传资源文件-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-上传资源文件-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-创建资源-上传资源文件-chromium\error-context.md 34) [chromium] › tests\e2e\admin\07-resources.spec.ts:181:5 › 资源库 › 创建资源 › 保存资源 ────────────────── Test timeout of 30000ms exceeded. Error: locator.click: Test timeout of 30000ms exceeded. Call log:  - waiting for getByText(/新建资源 | 创建资源 | 上传资源/) 184 | // 点击新建资源按钮 185 | const createButton = page.getByText(/新建资源 | 创建资源 | 上传资源/); > 186 | await createButton.click(); | ^ 187 | await page.waitForTimeout(500); 188 | 189 | // 检查是弹窗还是新页面 at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\07-resources.spec.ts:186:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-保存资源-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-07-resources-资源库-创建资源-保存资源-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-07-resources-资源库-创建资源-保存资源-chromium\error-context.md 35) [chromium] › tests\e2e\admin\08-settings.spec.ts:21:5 › 系统设置 › 基本设置 › 查看基本设置表单 ─────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('系统 LOGO') Expected: visible Timeout: 5000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for getByText('系统 LOGO') 26 | // 验证表单字段存在 27 | await expect(page.getByText('系统名称')).toBeVisible(); > 28 | await expect(page.getByText('系统 LOGO')).toBeVisible(); | ^ 29 | await expect(page.getByText('系统简介')).toBeVisible(); 30 | await expect(page.getByText('联系电话')).toBeVisible(); 31 | await expect(page.getByText('联系邮箱')).toBeVisible(); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\08-settings.spec.ts:28:47 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-08-settings-系统设置-基本设置-查看基本设置表单-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-08-settings-系统设置-基本设置-查看基本设置表单-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-08-settings-系统设置-基本设置-查看基本设置表单-chromium\error-context.md 36) [chromium] › tests\e2e\admin\08-settings.spec.ts:68:5 › 系统设置 › 基本设置 › 上传系统 Logo ────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.ant-upload-picture-card') Expected: visible Timeout: 5000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for locator('.ant-upload-picture-card') 72 | // 验证上传组件存在 73 | const uploadButton = page.locator('.ant-upload-picture-card'); > 74 | await expect(uploadButton).toBeVisible(); | ^ 75 | }); 76 | 77 | test('保存基本设置', async ({ page }) => { at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\08-settings.spec.ts:74:34 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-08-settings-系统设置-基本设置-上传系统-Logo-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-08-settings-系统设置-基本设置-上传系统-Logo-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-08-settings-系统设置-基本设置-上传系统-Logo-chromium\error-context.md 37) [chromium] › tests\e2e\admin\08-settings.spec.ts:111:5 › 系统设置 › 安全设置 › 查看安全设置 ──────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Token 有效期') Expected: visible Timeout: 5000ms Error: element(s) not found Call log:  - Expect "toBeVisible" with timeout 5000ms  - waiting for getByText('Token 有效期') 118 | await expect(page.getByText('密码强度')).toBeVisible(); 119 | await expect(page.getByText('登录失败限制')).toBeVisible(); > 120 | await expect(page.getByText('Token 有效期')).toBeVisible(); | ^ 121 | await expect(page.getByText('强制 HTTPS')).toBeVisible(); 122 | }); 123 | at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\08-settings.spec.ts:120:49 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-08-settings-系统设置-安全设置-查看安全设置-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-08-settings-系统设置-安全设置-查看安全设置-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-08-settings-系统设置-安全设置-查看安全设置-chromium\error-context.md 38) [chromium] › tests\e2e\admin\99-logout.spec.ts:10:3 › 退出登录 › 点击退出登录 ────────────────────────── Error: locator.isVisible: Error: strict mode violation: locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) resolved to 5 elements: 1)
aka locator('div').filter({ hasText: 'Super Admin' }).nth(4) 2) aka locator('.user-avatar') 3) aka getByRole('img', { name: 'user' }) 4) Super Admin aka getByText('Super Admin') 5) aka locator('.lucide.lucide-users-icon') Call log:  - checking visibility of locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) 19 | // 尝试点击用户菜单后再找退出按钮 20 | const userMenu = page.locator('.ant-dropdown-trigger').or(page.locator('[class*="user"]')); > 21 | if (await userMenu.isVisible()) { | ^ 22 | await userMenu.click(); 23 | await page.waitForTimeout(200); 24 | const dropdownLogout = page.getByText(/退出登录 | 退出/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\99-logout.spec.ts:21:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-点击退出登录-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-点击退出登录-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-99-logout-退出登录-点击退出登录-chromium\error-context.md 39) [chromium] › tests\e2e\admin\99-logout.spec.ts:36:3 › 退出登录 › 验证跳转回登录页 ──────────────────────── Error: locator.isVisible: Error: strict mode violation: locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) resolved to 5 elements: 1)
aka locator('div').filter({ hasText: 'Super Admin' }).nth(4) 2) aka locator('.user-avatar') 3) aka getByRole('img', { name: 'user' }) 4) Super Admin aka getByText('Super Admin') 5) aka locator('.lucide.lucide-users-icon') Call log:  - checking visibility of locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) 44 | } else { 45 | const userMenu = page.locator('.ant-dropdown-trigger').or(page.locator('[class*="user"]')); > 46 | if (await userMenu.isVisible()) { | ^ 47 | await userMenu.click(); 48 | await page.waitForTimeout(200); 49 | const dropdownLogout = page.getByText(/退出登录 | 退出/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\99-logout.spec.ts:46:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-验证跳转回登录页-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-验证跳转回登录页-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-99-logout-退出登录-验证跳转回登录页-chromium\error-context.md 40) [chromium] › tests\e2e\admin\99-logout.spec.ts:65:3 › 退出登录 › 验证 token 已清除 ──────────────────── Error: locator.isVisible: Error: strict mode violation: locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) resolved to 5 elements: 1)
aka locator('div').filter({ hasText: 'Super Admin' }).nth(4) 2) aka locator('.user-avatar') 3) aka getByRole('img', { name: 'user' }) 4) Super Admin aka getByText('Super Admin') 5) aka locator('.lucide.lucide-users-icon') Call log:  - checking visibility of locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) 77 | } else { 78 | const userMenu = page.locator('.ant-dropdown-trigger').or(page.locator('[class*="user"]')); > 79 | if (await userMenu.isVisible()) { | ^ 80 | await userMenu.click(); 81 | await page.waitForTimeout(200); 82 | const dropdownLogout = page.getByText(/退出登录 | 退出/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\99-logout.spec.ts:79:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-验证-token-已清除-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-验证-token-已清除-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-99-logout-退出登录-验证-token-已清除-chromium\error-context.md 41) [chromium] › tests\e2e\admin\99-logout.spec.ts:101:3 › 退出登录 › 退出后无法访问管理页面 ──────────────────── Error: locator.isVisible: Error: strict mode violation: locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) resolved to 5 elements: 1)
aka locator('div').filter({ hasText: 'Super Admin' }).nth(4) 2) aka locator('.user-avatar') 3) aka getByRole('img', { name: 'user' }) 4) Super Admin aka getByText('Super Admin') 5) aka locator('.lucide.lucide-users-icon') Call log:  - checking visibility of locator('.ant-dropdown-trigger').or(locator('[class*="user"]')) 109 | } else { 110 | const userMenu = page.locator('.ant-dropdown-trigger').or(page.locator('[class*="user"]')); > 111 | if (await userMenu.isVisible()) { | ^ 112 | await userMenu.click(); 113 | await page.waitForTimeout(200); 114 | const dropdownLogout = page.getByText(/退出登录 | 退出/); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\99-logout.spec.ts:111:26 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-退出后无法访问管理页面-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-99-logout-退出登录-退出后无法访问管理页面-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-99-logout-退出登录-退出后无法访问管理页面-chromium\error-context.md 42) [chromium] › tests\e2e\admin\admin-full-flow.spec.ts:13:3 › 超管端完整流程集成测试 › 超管端全功能流程测试 ───────── TimeoutError: page.waitForSelector: Timeout 10000ms exceeded. Call log:  - waiting for locator('.ant-statistic, [class*="statistic"]') to be visible 22 | 23 | // 验证统计卡片 > 24 | await page.waitForSelector('.ant-statistic, [class*="statistic"]', { timeout: 10000 }); | ^ 25 | const tenantCard = page.getByText(/租户数 | 租户总数 | 机构数/).first(); 26 | await expect(tenantCard).toBeVisible(); 27 | console.log('✓ 数据看板验证通过'); at F:\LesingleProject\lesingle-kindergarten-course\kindergarten_java\reading-platform-frontend\tests\e2e\admin\admin-full-flow.spec.ts:24:16 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── test-results\admin-admin-full-flow-超管端完整流程集成测试-超管端全功能流程测试-chromium\test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── test-results\admin-admin-full-flow-超管端完整流程集成测试-超管端全功能流程测试-chromium\video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results\admin-admin-full-flow-超管端完整流程集成测试-超管端全功能流程测试-chromium\error-context.md 42 failed [chromium] › tests\e2e\admin\02-dashboard.spec.ts:14:3 › 数据看板 › 验证统计卡片显示 ─────────────────────── [chromium] › tests\e2e\admin\02-dashboard.spec.ts:35:3 › 数据看板 › 验证趋势图加载 ──────────────────────── [chromium] › tests\e2e\admin\02-dashboard.spec.ts:41:3 › 数据看板 › 验证活跃租户 TOP5 列表 ───────────────── [chromium] › tests\e2e\admin\02-dashboard.spec.ts:51:3 › 数据看板 › 验证热门课程包 TOP5 列表 ──────────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:22:5 › 课程包管理 › 列表页面 › 验证列表加载 ─────────────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:35:5 › 课程包管理 › 列表页面 › 搜索功能 ───────────────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:51:5 › 课程包管理 › 列表页面 › 筛选功能 - 按状态 ─────────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:67:5 › 课程包管理 › 列表页面 › 分页功能 ───────────────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:87:5 › 课程包管理 › 创建课程包 › 步骤 1: 填写基本信息 ──────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:111:5 › 课程包管理 › 创建课程包 › 步骤 2: 课程介绍 ───────────── [chromium] › tests\e2e\admin\03-courses.spec.ts:140:5 › 课程包管理 › 创建课程包 › 步骤 3: 排课参考 ───────────── [chromium] › tests\e2e\admin\04-packages.spec.ts:22:5 › 套餐管理 › 列表页面 › 验证列表加载 ─────────────────── [chromium] › tests\e2e\admin\04-packages.spec.ts:45:5 › 套餐管理 › 创建套餐 › 点击创建按钮 ─────────────────── [chromium] › tests\e2e\admin\05-themes.spec.ts:22:5 › 主题字典 › 列表页面 › 验证列表加载 ───────────────────── [chromium] › tests\e2e\admin\05-themes.spec.ts:45:5 › 主题字典 › 创建主题 › 点击创建按钮 ───────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:22:5 › 租户管理 › 列表页面 › 验证列表加载 ──────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:35:5 › 租户管理 › 列表页面 › 搜索功能 ────────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:53:5 › 租户管理 › 列表页面 › 筛选功能 - 按状态 ──────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:71:5 › 租户管理 › 列表页面 › 筛选功能 - 按套餐 ──────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:89:5 › 租户管理 › 列表页面 › 分页功能 ────────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:99:5 › 租户管理 › 创建租户 › 点击添加租户按钮 ────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:112:5 › 租户管理 › 创建租户 › 填写基本信息 ─────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:137:5 › 租户管理 › 创建租户 › 选择套餐类型 ─────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:153:5 › 租户管理 › 创建租户 › 设置配额 ───────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:174:5 › 租户管理 › 创建租户 › 设置有效期 ──────────────────── [chromium] › tests\e2e\admin\06-tenants.spec.ts:187:5 › 租户管理 › 创建租户 › 保存租户 ───────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:22:5 › 资源库 › 列表页面 › 验证列表加载 ─────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:35:5 › 资源库 › 列表页面 › 搜索功能 ───────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:53:5 › 资源库 › 列表页面 › 筛选功能 - 按类型 ─────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:71:5 › 资源库 › 列表页面 › 分页功能 ───────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:81:5 › 资源库 › 创建资源 › 点击创建按钮 ─────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:102:5 › 资源库 › 创建资源 › 填写资源信息 ────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:155:5 › 资源库 › 创建资源 › 上传资源文件 ────────────────── [chromium] › tests\e2e\admin\07-resources.spec.ts:181:5 › 资源库 › 创建资源 › 保存资源 ──────────────────── [chromium] › tests\e2e\admin\08-settings.spec.ts:21:5 › 系统设置 › 基本设置 › 查看基本设置表单 ───────────────── [chromium] › tests\e2e\admin\08-settings.spec.ts:68:5 › 系统设置 › 基本设置 › 上传系统 Logo ──────────────── [chromium] › tests\e2e\admin\08-settings.spec.ts:111:5 › 系统设置 › 安全设置 › 查看安全设置 ────────────────── [chromium] › tests\e2e\admin\99-logout.spec.ts:10:3 › 退出登录 › 点击退出登录 ──────────────────────────── [chromium] › tests\e2e\admin\99-logout.spec.ts:36:3 › 退出登录 › 验证跳转回登录页 ────────────────────────── [chromium] › tests\e2e\admin\99-logout.spec.ts:65:3 › 退出登录 › 验证 token 已清除 ────────────────────── [chromium] › tests\e2e\admin\99-logout.spec.ts:101:3 › 退出登录 › 退出后无法访问管理页面 ────────────────────── [chromium] › tests\e2e\admin\admin-full-flow.spec.ts:13:3 › 超管端完整流程集成测试 › 超管端全功能流程测试 ─────────── 71 passed (13.2m)