From effbffbff15a35106726dcc5830a99348216efaf Mon Sep 17 00:00:00 2001 From: Yichen Jiang Date: Tue, 25 Aug 2026 19:55:45 +0800 Subject: [PATCH] test(web): drive the streaming-fence prompt through the composer surface The scenario landed on master with a textarea locator; the composer is a Lexical contenteditable surface here, so the fill waited 30s for a node that never exists. Use the shared per-key draft helper against [data-composer-input] like the other composer scenarios. --- apps/web/tests/streaming-fence-highlight.e2e.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/tests/streaming-fence-highlight.e2e.ts b/apps/web/tests/streaming-fence-highlight.e2e.ts index 411b37075c..4e74eb8764 100644 --- a/apps/web/tests/streaming-fence-highlight.e2e.ts +++ b/apps/web/tests/streaming-fence-highlight.e2e.ts @@ -16,7 +16,7 @@ import { webSnapshotMode, type WebScaffold, } from './scaffold.ts' -import { connectFreshWorkspace, newEnglishPage, saveFailureShot } from './support.ts' +import { connectFreshWorkspace, newEnglishPage, saveFailureShot, writeComposerDraft } from './support.ts' const SNAPSHOT_DIR = fileURLToPath(new URL('./snapshots/streaming-fence-highlight', import.meta.url)) const MID_EXPECTED = fileURLToPath(new URL('./snapshots/streaming-fence-highlight/mid-stream.expected.md', import.meta.url)) @@ -111,9 +111,9 @@ describe.skipIf(MODE === 'record')('web e2e: streaming code-fence highlighting', it('renders the growing fence through shiki and preserves its token tree when the turn settles', async () => { onTestFailed(() => saveFailureShot(page, 'web-e2e-streaming-fence-highlight')) - const input = page.locator('textarea').first() + const input = page.locator('[data-composer-input]').first() const settled = scaffold.whenTurnSettled(30_000) - await input.fill(PROMPT) + await writeComposerDraft(page, input, PROMPT) await input.press('Enter') await adapter.paused