From 00d4cf6a4eb5f47ebdca7aa3975d0dd59ba646e3 Mon Sep 17 00:00:00 2001 From: Neil Date: Sat, 19 Sep 2026 02:49:30 -0700 Subject: [PATCH] test(opencode2): cover live form lifecycle --- .../hook-plugin-opencode2-setup.test.ts | 28 +++++++++++++++++++ ...lientHostedBrowserPagePane.markup.test.tsx | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/opencode/hook-plugin-opencode2-setup.test.ts b/src/main/opencode/hook-plugin-opencode2-setup.test.ts index c3817bb5084..afb3d3c10f2 100644 --- a/src/main/opencode/hook-plugin-opencode2-setup.test.ts +++ b/src/main/opencode/hook-plugin-opencode2-setup.test.ts @@ -149,6 +149,10 @@ describe('OpenCode 2 setup and prompt ordering', () => { type: 'permission.asked', data: { id: 'perm-1', sessionID: 'ses_root', action: 'bash', resources: ['pwd'] } } + yield { + type: 'permission.replied', + data: { id: 'perm-1', requestID: 'perm-1', sessionID: 'ses_root' } + } yield { type: 'form.created', data: { @@ -189,6 +193,30 @@ describe('OpenCode 2 setup and prompt ordering', () => { ) expect(names).toEqual(expect.arrayContaining(['PermissionRequest', 'MessagePart'])) }) + await vi.waitFor(() => { + const names = posts.map( + ({ body }) => (body.payload as Record)?.hook_event_name + ) + expect(names).toContain('AskUserQuestion') + expect(posts).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + body: expect.objectContaining({ + payload: expect.objectContaining({ + hook_event_name: 'AskUserQuestion', + sessionID: 'ses_root' + }) + }) + }) + ]) + ) + }) + await vi.waitFor(() => { + const names = posts.map( + ({ body }) => (body.payload as Record)?.hook_event_name + ) + expect(names).toContain('SessionIdle') + }) await cleanup?.() }) diff --git a/src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.markup.test.tsx b/src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.markup.test.tsx index 23cd81b3206..d639ab4b8d9 100644 --- a/src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.markup.test.tsx +++ b/src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.markup.test.tsx @@ -150,7 +150,7 @@ describe('client-hosted screenshot markup', () => { image: backdrop, displayCssWidth: 800, displayCssHeight: 600, - ['shapes']: [] + shapes: [] }) ) await waitFor(() => expect(overlay()).toBeNull())