From 9417593ea7df0bf9136e6163a1cc452b659991e3 Mon Sep 17 00:00:00 2001 From: MT-Mint <798521692@qq.com> Date: Sat, 11 Apr 2026 09:19:39 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E6=B5=8B=E8=AF=95html=E6=96=87=E4=BB=B6=E6=9C=89=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=90=91=E7=94=A8=E6=88=B7=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../e2e/artifacts-and-thread-reuse.spec.ts | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts b/frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts index 739f1af5..b72ab576 100644 --- a/frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts +++ b/frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts @@ -1,11 +1,13 @@ import { expect, test } from "@playwright/test"; import { + PRIMARY_THREAD_ID, THREAD_WITH_ARTIFACTS, THREAD_WITH_HTML_ARTIFACT, THREAD_WITH_IMAGE_ARTIFACT, openChat, reuseThreadChatEntry, + sendMessage, skipIfMissingThread, waitForAnyMessages, waitForMessageListReady, @@ -87,8 +89,22 @@ test.describe("聊天工作台 / Artifact 面板", () => { (await htmlFile.count()) === 0, "当前线程没有 HTML artifact。", ); + + const htmlArtifactResponsePromise = page.waitForResponse((response) => { + const url = decodeURIComponent(response.url()); + return ( + response.status() === 200 && + /\/api\/threads\/[^/]+\/artifacts\//.test(url) && + /\.html?($|\?)/i.test(url) + ); + }); + await htmlFile.click(); + const htmlArtifactResponse = await htmlArtifactResponsePromise; + expect(htmlArtifactResponse.headers()["content-disposition"] ?? "").toContain( + "attachment;", + ); await expect(page.getByTitle(/Artifact preview(?::.*)?$/i)).toBeVisible(); }); @@ -117,4 +133,32 @@ test.describe("聊天工作台 / Artifact 面板", () => { await expect(page.getByTestId("artifacts-open-button")).toBeVisible(); await expect(page.getByRole("log").first()).toBeVisible(); }); + + test("DF-ART-005 生成简单 HTML 后出现 artifact-file-card", async ({ + page, + }, testInfo) => { + test.setTimeout(180_000); + skipIfMissingThread(testInfo, PRIMARY_THREAD_ID, "FRONTEND_E2E_THREAD_ID"); + + await openChat(page, reuseThreadChatEntry(PRIMARY_THREAD_ID!)); + await waitForMessageListReady(page, { requireMessages: false }); + + await sendMessage(page, "生成一个简单的html文件"); + + await expect + .poll( + async () => await page.getByTestId("artifacts-open-button").count(), + { timeout: 120_000 }, + ) + .toBeGreaterThan(0); + + await page.getByTestId("artifacts-open-button").click(); + + await expect + .poll( + async () => await page.getByTestId("artifact-file-card").count(), + { timeout: 30_000 }, + ) + .toBeGreaterThan(0); + }); });