mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-14 17:41:22 +08:00
feat: Implement phases 6 to 9 of the review cycle fix process, including discovery, batching, parallel planning, execution, and completion
- Added Phase 6: Fix Discovery & Batching with intelligent grouping and batching of findings. - Added Phase 7: Fix Parallel Planning to launch planning agents for concurrent analysis and aggregation of partial plans. - Added Phase 8: Fix Execution for stage-based execution of fixes with conservative test verification. - Added Phase 9: Fix Completion to aggregate results, generate summary reports, and handle session completion. - Introduced new frontend components: ResizeHandle for draggable resizing of sidebar panels and useResizablePanel hook for managing panel sizes with localStorage persistence. - Added PowerShell script for checking TypeScript errors in source code, excluding test files.
This commit is contained in:
@@ -59,7 +59,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
@@ -71,12 +71,12 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
mockApi.get.mockResolvedValue({ data: mockData });
|
||||
|
||||
const { result } = renderHook(
|
||||
() => useWorkflowStatusCounts({ projectPath: '/test/workspace' }),
|
||||
() => useWorkflowStatusCounts({ projectPath: '/test/workspace' } as any),
|
||||
{ wrapper }
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(mockApi.get).toHaveBeenCalledWith('/api/session-status-counts', {
|
||||
@@ -90,7 +90,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isError).toBe(true);
|
||||
expect((result.current as any).isError).toBe(true);
|
||||
});
|
||||
|
||||
expect(result.current.error).toBeDefined();
|
||||
@@ -102,13 +102,13 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
mockApi.get.mockResolvedValue({ data: mockData });
|
||||
|
||||
const { result: result1 } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
await waitFor(() => expect(result1.current.isSuccess).toBe(true));
|
||||
await waitFor(() => expect((result1.current as any).isSuccess).toBe(true));
|
||||
|
||||
// Second render should use cache
|
||||
const { result: result2 } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result2.current.isSuccess).toBe(true);
|
||||
expect((result2.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
// API should only be called once (cached)
|
||||
@@ -122,7 +122,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
|
||||
const { result } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => expect(result.current.isSuccess).toBe(true));
|
||||
await waitFor(() => expect((result.current as any).isSuccess).toBe(true));
|
||||
|
||||
// Refetch
|
||||
await result.current.refetch();
|
||||
@@ -143,7 +143,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result } = renderHook(() => useActivityTimeline(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
@@ -159,10 +159,10 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
end: new Date('2026-01-31'),
|
||||
};
|
||||
|
||||
const { result } = renderHook(() => useActivityTimeline(dateRange), { wrapper });
|
||||
const { result } = renderHook(() => (useActivityTimeline as any)(dateRange), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(mockApi.get).toHaveBeenCalledWith('/api/activity-timeline', {
|
||||
@@ -179,7 +179,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result } = renderHook(() => useActivityTimeline(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(result.current.data).toEqual([]);
|
||||
@@ -190,12 +190,12 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
mockApi.get.mockResolvedValue({ data: mockData });
|
||||
|
||||
const { result } = renderHook(
|
||||
() => useActivityTimeline(undefined, '/test/workspace'),
|
||||
() => (useActivityTimeline as any)(undefined, '/test/workspace'),
|
||||
{ wrapper }
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(mockApi.get).toHaveBeenCalledWith('/api/activity-timeline', {
|
||||
@@ -210,11 +210,11 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
mockApi.get.mockResolvedValueOnce({ data: mockData1 });
|
||||
|
||||
const { result, rerender } = renderHook(
|
||||
({ workspace }: { workspace?: string }) => useActivityTimeline(undefined, workspace),
|
||||
({ workspace }: { workspace?: string }) => (useActivityTimeline as any)(undefined, workspace),
|
||||
{ wrapper, initialProps: { workspace: '/workspace1' } }
|
||||
);
|
||||
|
||||
await waitFor(() => expect(result.current.isSuccess).toBe(true));
|
||||
await waitFor(() => expect((result.current as any).isSuccess).toBe(true));
|
||||
expect(result.current.data).toEqual(mockData1);
|
||||
|
||||
// Change workspace
|
||||
@@ -242,7 +242,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result } = renderHook(() => useTaskTypeCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
@@ -254,12 +254,12 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
mockApi.get.mockResolvedValue({ data: mockData });
|
||||
|
||||
const { result } = renderHook(
|
||||
() => useTaskTypeCounts({ projectPath: '/test/workspace' }),
|
||||
() => useTaskTypeCounts({ projectPath: '/test/workspace' } as any),
|
||||
{ wrapper }
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(mockApi.get).toHaveBeenCalledWith('/api/task-type-counts', {
|
||||
@@ -278,7 +278,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result } = renderHook(() => useTaskTypeCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(result.current.data).toEqual(mockData);
|
||||
@@ -294,7 +294,7 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result.current.isSuccess).toBe(true);
|
||||
expect((result.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
// Data should be fresh for 30s
|
||||
@@ -318,9 +318,9 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result: result3 } = renderHook(() => useTaskTypeCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result1.current.isSuccess).toBe(true);
|
||||
expect(result2.current.isSuccess).toBe(true);
|
||||
expect(result3.current.isSuccess).toBe(true);
|
||||
expect((result1.current as any).isSuccess).toBe(true);
|
||||
expect((result2.current as any).isSuccess).toBe(true);
|
||||
expect((result3.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
expect(mockApi.get).toHaveBeenCalledTimes(3);
|
||||
@@ -343,9 +343,9 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
const { result: result3 } = renderHook(() => useTaskTypeCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result1.current.isError).toBe(true);
|
||||
expect(result2.current.isSuccess).toBe(true);
|
||||
expect(result3.current.isSuccess).toBe(true);
|
||||
expect((result1.current as any).isError).toBe(true);
|
||||
expect((result2.current as any).isSuccess).toBe(true);
|
||||
expect((result3.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -355,13 +355,13 @@ describe('Chart Hooks Integration Tests', () => {
|
||||
|
||||
// First component
|
||||
const { result: result1 } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
await waitFor(() => expect(result1.current.isSuccess).toBe(true));
|
||||
await waitFor(() => expect((result1.current as any).isSuccess).toBe(true));
|
||||
|
||||
// Second component should use cache
|
||||
const { result: result2 } = renderHook(() => useWorkflowStatusCounts(), { wrapper });
|
||||
|
||||
await waitFor(() => {
|
||||
expect(result2.current.isSuccess).toBe(true);
|
||||
expect((result2.current as any).isSuccess).toBe(true);
|
||||
});
|
||||
|
||||
// Only one API call
|
||||
|
||||
Reference in New Issue
Block a user