fix(e2e): 用真实视频文件替换假buffer,修复Staging E2E上传失败 #634

Merged
auto-approve-bot merged 1 commits from ci/fix-e2e-fake-video-upload into develop 2026-07-20 12:56:34 +08:00
Owner

问题

Staging E2E 测试中 core-upload 和 core-generation 两个用例100%失败,根因是上传的视频素材进入 error 状态。

根因分析

E2E测试之前上传纯文本 buffer(Buffer.from("playwright mov upload smoke"),仅27字节)伪装成视频文件。

#488 增加了 ingest 素材有效性校验:

  • 视频文件最小 1KB
  • 必须有有效时长(duration > 0)
  • 必须能被 ffprobe 识别为视频编码

假文件通不过校验,直接被判 ERROR,导致测试等待 ready 状态超时。

修复方案

改用 e2e/fixtures/sample.mp4(真实 h264 视频,2.3KB,1秒时长)作为测试素材,文件已存在于仓库中。

涉及用例

  • core-upload.spec.ts: 上传视频并验证素材库展示
  • core-generation.spec.ts: 上传源视频并走生成向导流程

验证

  • Frontend Lint 通过
  • Staging E2E 全绿(合并到 develop 后验证)
## 问题 Staging E2E 测试中 core-upload 和 core-generation 两个用例100%失败,根因是上传的视频素材进入 error 状态。 ## 根因分析 E2E测试之前上传纯文本 buffer(`Buffer.from("playwright mov upload smoke")`,仅27字节)伪装成视频文件。 #488 增加了 ingest 素材有效性校验: - 视频文件最小 1KB - 必须有有效时长(duration > 0) - 必须能被 ffprobe 识别为视频编码 假文件通不过校验,直接被判 ERROR,导致测试等待 `ready` 状态超时。 ## 修复方案 改用 `e2e/fixtures/sample.mp4`(真实 h264 视频,2.3KB,1秒时长)作为测试素材,文件已存在于仓库中。 ## 涉及用例 - `core-upload.spec.ts`: 上传视频并验证素材库展示 - `core-generation.spec.ts`: 上传源视频并走生成向导流程 ## 验证 - [ ] Frontend Lint 通过 - [ ] Staging E2E 全绿(合并到 develop 后验证)
xiaoxia self-assigned this 2026-07-20 12:49:29 +08:00
xiaoxia added 1 commit 2026-07-20 12:49:29 +08:00
fix(e2e): 用真实视频文件替换假buffer,修复Staging E2E上传失败
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 / 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 Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 20s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m13s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 5m52s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m58s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 5m36s
AI Code Review / AI Code Review (pull_request) Successful in 6m59s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 7m3s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 33s
46945bbaba
E2E测试之前上传纯文本buffer伪装成视频文件,ingest增加媒体有效性校验后
(视频需>=1KB + 有效时长),假文件直接被判ERROR导致测试失败。

改用 e2e/fixtures/sample.mp4(真实h264视频,2.3KB,1秒)作为测试素材。

涉及用例:
- core-upload.spec.ts: 上传视频并验证素材库展示
- core-generation.spec.ts: 上传源视频并走生成向导流程

🚀 预览环境已部署

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

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

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

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

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-20 12:55:29 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

📊 审查概览

  • 整体评价:通过
  • 严重问题数量:0 个
  • 一般建议数量:1 个

需修改的问题(严重)

💡 改进建议(一般)

  1. [apps/web/e2e/core-generation.spec.ts, apps/web/e2e/core-upload.spec.ts] 测试资源文件体积控制
    • 具体内容:代码引入了 fixtures/sample.mp4 并通过 fs.readFileSync 同步读取到内存中。请确保该视频文件体积较小(建议几MB以内)。如果文件较大,建议使用 Git LFS 管理或在测试 setup 阶段通过下载方式获取,避免导致测试仓库体积膨胀或测试进程内存占用过高。

良好实践

  1. 使用真实二进制数据:将伪造的 Buffer 替换为真实的视频文件 Buffer,能有效测试后端对视频流/文件头的真实处理逻辑。
  2. 路径处理规范:使用 path.join(__dirname, ...) 构建路径,确保了跨操作系统(Windows/Linux/macOS)的兼容性。
  3. 断言更新及时:在 core-upload.spec.ts 中,文件名从 .MOV 修改为 .mp4 后,同步更新了所有相关的断言(expectfind),保证了测试逻辑的自洽。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 12:56:28 | 模型:

### 📊 审查概览 - 整体评价:通过 - 严重问题数量:0 个 - 一般建议数量:1 个 ### ❌ 需修改的问题(严重) 无 ### 💡 改进建议(一般) 1. **[apps/web/e2e/core-generation.spec.ts, apps/web/e2e/core-upload.spec.ts] 测试资源文件体积控制** - 具体内容:代码引入了 `fixtures/sample.mp4` 并通过 `fs.readFileSync` 同步读取到内存中。请确保该视频文件体积较小(建议几MB以内)。如果文件较大,建议使用 Git LFS 管理或在测试 setup 阶段通过下载方式获取,避免导致测试仓库体积膨胀或测试进程内存占用过高。 ### ✅ 良好实践 1. **使用真实二进制数据**:将伪造的 Buffer 替换为真实的视频文件 Buffer,能有效测试后端对视频流/文件头的真实处理逻辑。 2. **路径处理规范**:使用 `path.join(__dirname, ...)` 构建路径,确保了跨操作系统(Windows/Linux/macOS)的兼容性。 3. **断言更新及时**:在 `core-upload.spec.ts` 中,文件名从 `.MOV` 修改为 `.mp4` 后,同步更新了所有相关的断言(`expect` 和 `find`),保证了测试逻辑的自洽。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 12:56:28 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot merged commit afae36bf04 into develop 2026-07-20 12:56:34 +08:00
auto-approve-bot deleted branch ci/fix-e2e-fake-video-upload 2026-07-20 12:56:34 +08:00

🗑️ 预览环境已清理

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

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

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