From 006e0f5b59d8e7be73568aee6c823b212e78ac59 Mon Sep 17 00:00:00 2001 From: jedarden Date: Tue, 21 Apr 2026 14:14:45 -0400 Subject: [PATCH] fix(bd-j1t): update tests for uppercase state labels + canonical event types WorkerDetail now renders statuses in uppercase (ACTIVE/IDLE/ERROR) to match NeedleState labels. Store only recognizes canonical event types (bead.completed, not "Task completed") for state transitions. Co-Authored-By: Claude Opus 4.7 --- src/web/frontend/test/WorkerDetail.test.tsx | 8 ++++---- src/web/server.test.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/web/frontend/test/WorkerDetail.test.tsx b/src/web/frontend/test/WorkerDetail.test.tsx index b25ef1f..4a62025 100644 --- a/src/web/frontend/test/WorkerDetail.test.tsx +++ b/src/web/frontend/test/WorkerDetail.test.tsx @@ -75,7 +75,7 @@ describe('WorkerDetail', () => { ); - expect(screen.getByText('active')).toBeInTheDocument(); + expect(screen.getByText('ACTIVE')).toBeInTheDocument(); expect(container.querySelector('.worker-status.active')).toBeInTheDocument(); expect(container.querySelector('.worker-status-icon.active')).toBeInTheDocument(); }); @@ -87,7 +87,7 @@ describe('WorkerDetail', () => { ); - expect(screen.getByText('idle')).toBeInTheDocument(); + expect(screen.getByText('IDLE')).toBeInTheDocument(); expect(container.querySelector('.worker-status.idle')).toBeInTheDocument(); expect(container.querySelector('.worker-status-icon.idle')).toBeInTheDocument(); }); @@ -99,7 +99,7 @@ describe('WorkerDetail', () => { ); - expect(screen.getByText('error')).toBeInTheDocument(); + expect(screen.getByText('ERROR')).toBeInTheDocument(); expect(container.querySelector('.worker-status.error')).toBeInTheDocument(); expect(container.querySelector('.worker-status-icon.error')).toBeInTheDocument(); }); @@ -495,7 +495,7 @@ describe('WorkerDetail', () => { expect(screen.getByText('minimal-worker')).toBeInTheDocument(); expect(screen.getByText('0')).toBeInTheDocument(); - expect(screen.getByText('idle')).toBeInTheDocument(); + expect(screen.getByText('IDLE')).toBeInTheDocument(); }); it('should handle empty active files array with collision flag', () => { diff --git a/src/web/server.test.ts b/src/web/server.test.ts index aa42069..d68400e 100644 --- a/src/web/server.test.ts +++ b/src/web/server.test.ts @@ -106,9 +106,9 @@ describe('Web Server API Endpoints', () => { }); it('should include worker status', async () => { - store.add(createEvent({ worker: 'w-active', msg: 'Starting work' })); + store.add(createEvent({ worker: 'w-active', msg: 'bead.claimed' })); store.add(createEvent({ worker: 'w-error', level: 'error', msg: 'Something failed' })); - store.add(createEvent({ worker: 'w-idle', msg: 'Task completed' })); + store.add(createEvent({ worker: 'w-idle', msg: 'bead.completed' })); const response = await fetchApi('/api/workers'); const data = await response.json() as any; @@ -144,8 +144,8 @@ describe('Web Server API Endpoints', () => { }); it('should track completed beads', async () => { - store.add(createEvent({ worker: 'w-test', msg: 'Task completed', bead: 'bd-1' })); - store.add(createEvent({ worker: 'w-test', msg: 'Task completed', bead: 'bd-2' })); + store.add(createEvent({ worker: 'w-test', msg: 'bead.completed', bead: 'bd-1' })); + store.add(createEvent({ worker: 'w-test', msg: 'bead.completed', bead: 'bd-2' })); const response = await fetchApi('/api/workers/w-test'); const data = await response.json() as any;