From a1a913309dddbca85f206d2059a45a00fe11a33b Mon Sep 17 00:00:00 2001 From: creatixchu Date: Fri, 31 Jul 2026 16:43:31 +0800 Subject: [PATCH] fix(web): carry the merged master through the add-workspace helper Master gained a web-search e2e scenario that calls connectFreshWorkspace with the pre-change one-argument signature, which fails to compile against the test-merge commit CI builds. Give it the scaffold's workspace root like every other scenario. Master also gained the first-run welcome notice. The shared scaffold acknowledges it before boot, but the W5 smoke spawns its own server against a fresh $DSH_HOME, so its overlay owns pointer events and swallows the first click on the workspace chip; the scenario now dismisses the notice first. The notice is anchored structurally because this spec belongs to the client TypeScript program, which does not reference the package owning its copy. --- apps/web/tests/smoke-real.e2e.ts | 10 ++++++++++ apps/web/tests/web-search-round.e2e.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/web/tests/smoke-real.e2e.ts b/apps/web/tests/smoke-real.e2e.ts index abe33ab5d1..42bdee397c 100644 --- a/apps/web/tests/smoke-real.e2e.ts +++ b/apps/web/tests/smoke-real.e2e.ts @@ -511,6 +511,16 @@ describe.skipIf(!process.env.DEEPSEEK_API_KEY || notReady.length > 0)('web smoke it('2+3 empty-state first send completes a real model round', async () => { onTestFailed(() => saveFailureShot(page, 'w5-first-round')) + // This scenario spawns its own server against a fresh $DSH_HOME, so the + // first-run welcome notice is unacknowledged and its overlay owns pointer + // events (the shared scaffold acknowledges it before boot instead). The + // notice is anchored structurally, not by its copy: this spec sits in the + // client TypeScript program, which does not reference the package that + // owns the strings. + const welcome = page.locator('[class*="onboardingOverlay"]') + await welcome.waitFor({ timeout: 15_000 }) + await welcome.getByRole('button').click() + await welcome.waitFor({ state: 'detached', timeout: 15_000 }) // Fresh world: connect a Workspace so the composer starts live. await connectFreshWorkspace(page, sessionsDir) const input = page.locator('textarea').first() diff --git a/apps/web/tests/web-search-round.e2e.ts b/apps/web/tests/web-search-round.e2e.ts index 804c7a70ca..e887fb8e35 100644 --- a/apps/web/tests/web-search-round.e2e.ts +++ b/apps/web/tests/web-search-round.e2e.ts @@ -109,7 +109,7 @@ describe('web e2e: shipped default web search', () => { tripwire = watchConsole(page) await page.goto(scaffold.baseUrl, { waitUntil: 'load' }) await page.waitForSelector('[class*="frame"]', { timeout: 30_000 }) - await connectFreshWorkspace(page) + await connectFreshWorkspace(page, scaffold.workspaceCwd) }, 120_000) afterAll(async () => {