diff --git a/package.json b/package.json index 667e088..6bb23a4 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "models:sync-metadata": "node scripts/sync-model-metadata.mjs", "test:model-metadata": "esbuild scripts/model-metadata-regression.ts --bundle --platform=node --format=esm --external:esbuild --outfile=.tmp/model-metadata-regression.mjs --log-level=warning && node .tmp/model-metadata-regression.mjs", "test:claude-kernel": "esbuild scripts/claude-endpoint-regression.ts scripts/claude-tool-input-regression.ts --bundle --platform=node --format=esm --out-extension:.js=.mjs --outdir=.tmp/claude-tests --log-level=warning && node .tmp/claude-tests/claude-endpoint-regression.mjs && node .tmp/claude-tests/claude-tool-input-regression.mjs && node scripts/build-claude-kernel-regression.mjs && node .tmp/claude-kernel-integration.mjs && node scripts/claude-kernel-smoke.mjs", + "test:browser-agent": "esbuild scripts/browser-agent-host-regression.ts --bundle --platform=node --format=cjs --external:electron --outfile=.tmp/browser-agent-host-regression.cjs --log-level=warning && electron .tmp/browser-agent-host-regression.cjs", "test:chat": "esbuild scripts/message-order-regression.ts scripts/chat-store-regression.ts scripts/chat-stream-committer-regression.ts --bundle --platform=node --format=esm --out-extension:.js=.mjs --outdir=.tmp/chat-tests --log-level=warning && node .tmp/chat-tests/message-order-regression.mjs && node .tmp/chat-tests/chat-store-regression.mjs && node .tmp/chat-tests/chat-stream-committer-regression.mjs", "test:references": "esbuild scripts/reference-content-regression.tsx --bundle --platform=node --format=cjs --jsx=automatic --loader:.css=empty --outfile=.tmp/reference-content-regression.cjs --log-level=error && node .tmp/reference-content-regression.cjs", "test:markdown": "esbuild scripts/markdown-regression.tsx --bundle --platform=node --format=cjs --jsx=automatic --loader:.css=empty --outfile=.tmp/markdown-regression.cjs --log-level=warning && node .tmp/markdown-regression.cjs", diff --git a/scripts/browser-agent-host-regression.ts b/scripts/browser-agent-host-regression.ts new file mode 100644 index 0000000..34ec72a --- /dev/null +++ b/scripts/browser-agent-host-regression.ts @@ -0,0 +1,38 @@ +import assert from 'node:assert/strict' +import { app, BrowserWindow } from 'electron' +import { + browserHostView, + closeAgentBrowser, + createAgentBrowser, + publishBrowserHostOpened, + setBrowserBounds, + setBrowserHostEventSink +} from '../src/main/browser-host' + +async function main(): Promise { + await app.whenReady() + const owner = new BrowserWindow({ show: false, width: 1335, height: 916 }) + const events: Array<{ type: string; id: string; sessionId?: string }> = [] + setBrowserHostEventSink(event => events.push({ type: event.type, id: event.view.id, sessionId: event.view.sessionId })) + + const sessionId = 'browser-agent-regression' + const agent = createAgentBrowser(owner, sessionId) + await agent.contents.loadURL('data:text/html,Agent Browser

ready

') + + assert.equal(browserHostView(owner, agent.id, sessionId).visible, false) + setBrowserBounds(owner, agent.id, { x: 20, y: 20, width: 800, height: 600 }, sessionId) + assert.equal(browserHostView(owner, agent.id, sessionId).visible, true) + publishBrowserHostOpened(owner, agent.id, sessionId) + assert.deepEqual(events, [{ type: 'opened', id: agent.id, sessionId }]) + + closeAgentBrowser(owner, agent.id, sessionId) + setBrowserHostEventSink(undefined) + owner.destroy() + console.log('Agent browser host lifecycle regression checks passed.') + app.quit() +} + +void main().catch(error => { + console.error(error) + app.exit(1) +}) diff --git a/scripts/verify-ui.mjs b/scripts/verify-ui.mjs index c3dc080..7296676 100644 --- a/scripts/verify-ui.mjs +++ b/scripts/verify-ui.mjs @@ -109,7 +109,7 @@ const STUB = `