fix(e2e): 加固核心生成向导冒烟测试(v2:按钮定位/等待/进度页断言) #1950

Merged
auto-approve-bot merged 1 commits from fix/e2e-wizard-confirm-btn into develop 2026-09-16 08:43:37 +08:00
Owner

背景

PR #1949 合入后(补了数量弹窗交互),Staging E2E CI 继续失败,错误位置前移到第 230 行点击「确认生成视频」:

根因

v1 版本用 .xx-btn-primary 全局 filter,标题页内还有「🔄 换一个」「生成标题」两个 xx-btn-primary 按钮(分别在 AI 自动选择标题分支、AiTitleGenerator 内),Playwright 可能命中非底部操作栏的按钮,或者按钮在 previewReady 前后状态切换时未能稳定触发请求。另外 Step4 进度页实际没有 h3「🎬 确认生成」,原断言会误报失败。

v2 加固

  1. 作用域限定:confirmBtn 改为 .xx-step-actions .xx-btn-primary + filter({hasText:"确认生成"}),精确命中底部操作栏的主按钮,避免标题页内其他 primary 按钮干扰
  2. 先断言再点击expect(confirmBtn).toBeVisible().toBeEnabled() 后再挂 waitForResponse + click,消除竞态
  3. 超时放宽:waitForResponse 30s→60s(staging 冷启动 + 首次生成可能慢)
  4. 进度页断言修正:去掉不存在的 h3「🎬 确认生成」,改为断言「视频渲染中」文案(Step4 进度卡真实可见文案)
  5. 下一步按钮:「下一步:选择封面」先 expect(visible) 再 click,避免按钮尚未挂载
  6. 更新测试名和注释

验证

  • Prettier
  • 仅 e2e 测试文件改动,无生产代码
## 背景 PR #1949 合入后(补了数量弹窗交互),Staging E2E CI 继续失败,错误位置前移到第 230 行点击「确认生成视频」: ## 根因 v1 版本用 `.xx-btn-primary` 全局 filter,标题页内还有「🔄 换一个」「生成标题」两个 xx-btn-primary 按钮(分别在 AI 自动选择标题分支、AiTitleGenerator 内),Playwright 可能命中非底部操作栏的按钮,或者按钮在 previewReady 前后状态切换时未能稳定触发请求。另外 Step4 进度页实际没有 h3「🎬 确认生成」,原断言会误报失败。 ## v2 加固 1. **作用域限定**:confirmBtn 改为 `.xx-step-actions .xx-btn-primary` + filter({hasText:"确认生成"}),精确命中底部操作栏的主按钮,避免标题页内其他 primary 按钮干扰 2. **先断言再点击**:`expect(confirmBtn).toBeVisible().toBeEnabled()` 后再挂 waitForResponse + click,消除竞态 3. **超时放宽**:waitForResponse 30s→60s(staging 冷启动 + 首次生成可能慢) 4. **进度页断言修正**:去掉不存在的 h3「🎬 确认生成」,改为断言「视频渲染中」文案(Step4 进度卡真实可见文案) 5. **下一步按钮**:「下一步:选择封面」先 expect(visible) 再 click,避免按钮尚未挂载 6. 更新测试名和注释 ## 验证 - Prettier ✅ - 仅 e2e 测试文件改动,无生产代码
xiaoxia added 1 commit 2026-09-16 08:37:26 +08:00
fix(e2e): 加固核心生成向导冒烟测试按钮定位与等待逻辑
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m24s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m33s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m42s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m39s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m47s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m46s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m49s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 5m28s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 4s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m26s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 18s
AI Code Review / AI Code Review (pull_request) Successful in 6m32s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 25s
3360ad79df
v2 修复(基于 v1 合入后 CI 结果反馈):
- 定位「 确认生成视频」按钮时改为限定在底部操作栏 xx-step-actions 内,
  避免命中标题页内「换一个」「生成标题」等同为 xx-btn-primary 的按钮
- 断言按钮 visible+enabled 后再挂 waitForResponse 监听,避免竞态
- waitForResponse 超时从 30s 放宽到 60s(staging 首次生成任务较慢)
- 生成后进度页没有 h3「🎬 确认生成」标题(只有进度卡),改为断言「视频渲染中」文案
- 「下一步:选择封面」按钮先 expect(visible) 再点击,避免点击时按钮尚未挂载
- 测试名更新为 walks through wizard with count modal

🚀 预览环境已部署

项目 详情
PR号 #1950
预览链接 https://pr-1950.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1950 | | 预览链接 | [https://pr-1950.preview.xiaoxiajianji.com](https://pr-1950.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-09-16 08:39:08 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-09-16 08:39:09 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 3f27d199f5 into develop 2026-09-16 08:43:37 +08:00
auto-approve-bot deleted branch fix/e2e-wizard-confirm-btn 2026-09-16 08:43:38 +08:00

🗑️ 预览环境已清理

PR #1950 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #1950 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.