From 46945bbaba4229addc1a105786e184becf779f92 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 20 Jul 2026 12:49:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(e2e):=20=E7=94=A8=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=96=87=E4=BB=B6=E6=9B=BF=E6=8D=A2=E5=81=87?= =?UTF-8?q?buffer=EF=BC=8C=E4=BF=AE=E5=A4=8DStaging=20E2E=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit E2E测试之前上传纯文本buffer伪装成视频文件,ingest增加媒体有效性校验后 (视频需>=1KB + 有效时长),假文件直接被判ERROR导致测试失败。 改用 e2e/fixtures/sample.mp4(真实h264视频,2.3KB,1秒)作为测试素材。 涉及用例: - core-upload.spec.ts: 上传视频并验证素材库展示 - core-generation.spec.ts: 上传源视频并走生成向导流程 --- apps/web/e2e/core-generation.spec.ts | 6 +++++- apps/web/e2e/core-upload.spec.ts | 16 ++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/web/e2e/core-generation.spec.ts b/apps/web/e2e/core-generation.spec.ts index d6134e250..06427acf1 100755 --- a/apps/web/e2e/core-generation.spec.ts +++ b/apps/web/e2e/core-generation.spec.ts @@ -1,4 +1,6 @@ import { expect, test, type APIRequestContext } from "@playwright/test" +import * as fs from "node:fs" +import * as path from "node:path" const PASSWORD = "SmokePass123!" const apiBase = process.env.E2E_API_BASE || "/api/v1" @@ -88,6 +90,8 @@ test.describe("Core generation flow", () => { // Upload source video const sourceFileName = "e2e-gen-source.mp4" + const sampleVideoPath = path.join(__dirname, "fixtures", "sample.mp4") + const sampleVideoBuffer = fs.readFileSync(sampleVideoPath) const upload = await request.post(`${apiBase}/upload`, { headers, multipart: { @@ -96,7 +100,7 @@ test.describe("Core generation flow", () => { file: { name: sourceFileName, mimeType: "video/mp4", - buffer: Buffer.from("e2e source data"), + buffer: sampleVideoBuffer, }, }, }) diff --git a/apps/web/e2e/core-upload.spec.ts b/apps/web/e2e/core-upload.spec.ts index ee1f88e92..e3ba3af49 100755 --- a/apps/web/e2e/core-upload.spec.ts +++ b/apps/web/e2e/core-upload.spec.ts @@ -1,4 +1,6 @@ import { expect, test, type APIRequestContext } from "@playwright/test" +import * as fs from "node:fs" +import * as path from "node:path" const PASSWORD = "SmokePass123!" const apiBase = process.env.E2E_API_BASE || "/api/v1" @@ -116,15 +118,17 @@ test.describe("Core media upload flow", () => { timeout: 20_000, }) + const sampleVideoPath = path.join(__dirname, "fixtures", "sample.mp4") + const sampleVideoBuffer = fs.readFileSync(sampleVideoPath) const upload = await request.post(`${apiBase}/upload`, { headers, multipart: { project_id: projectData.id, library_id: libraryData.id, file: { - name: "e2e-sample.MOV", - mimeType: "video/quicktime", - buffer: Buffer.from("playwright mov upload smoke"), + name: "e2e-sample.mp4", + mimeType: "video/mp4", + buffer: sampleVideoBuffer, }, }, }) @@ -152,7 +156,7 @@ test.describe("Core media upload flow", () => { mime_type?: string }> } - const asset = data.items.find((item) => item.name === "e2e-sample.MOV") + const asset = data.items.find((item) => item.name === "e2e-sample.mp4") return asset ? `${asset.mime_type || asset.file_type || ""}:${asset.status}` : "missing" }, { timeout: 30_000, intervals: [1_000, 2_000, 3_000] }, @@ -169,12 +173,12 @@ test.describe("Core media upload flow", () => { await expect(page.locator(".xx-assets-content")).toBeVisible({ timeout: 20_000, }) - await expect(page.getByText("e2e-sample.MOV", { exact: true })).toBeVisible({ + await expect(page.getByText("e2e-sample.mp4", { exact: true })).toBeVisible({ timeout: 20_000, }) // Verify asset card shows status - const assetCard = page.locator(".xx-asset-card").filter({ hasText: "e2e-sample.MOV" }) + const assetCard = page.locator(".xx-asset-card").filter({ hasText: "e2e-sample.mp4" }) await expect(assetCard).toBeVisible() await expect(assetCard.locator(".xx-asset-diagnose-btn")).toBeVisible() -- 2.54.0