feat(e2e): generate comprehensive E2E tests and fix TypeScript compilation errors

- Add 23 E2E test spec files covering 94 API endpoints across business domains
- Fix TypeScript compilation errors (file casing, duplicate export, implicit any)
- Update Playwright deprecated API calls (getByPlaceholderText -> getByPlaceholder)
- Tests cover: dashboard, sessions, tasks, workspace, loops, issues-queue, discovery,
  skills, commands, memory, project-overview, session-detail, cli-history,
  cli-config, cli-installations, lite-tasks, review, mcp, hooks, rules,
  index-management, prompt-memory, file-explorer

Test coverage: 100% domain coverage (23/23 domains)
API coverage: 94 endpoints across 23 business domains
Quality gates: 0 CRITICAL issues, all anti-patterns passed

Note: 700+ timeout tests require backend server (port 3456) to pass
This commit is contained in:
catlog22
2026-02-01 11:15:11 +08:00
parent cf401d00e1
commit fc1471396c
29 changed files with 9258 additions and 11 deletions

View File

@@ -12,13 +12,13 @@ import {
DialogFooter,
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog';
} from '@/components/ui/Dialog';
import { Button } from '@/components/ui/Button';
import { Input } from '@/components/ui/Input';
import { Textarea } from '@/components/ui/Textarea';
import { Checkbox } from '@/components/ui/checkbox';
import { Checkbox } from '@/components/ui/Checkbox';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Label } from '@/components/ui/label';
import { Label } from '@/components/ui/Label';
import { AlertCircle } from 'lucide-react';
import { cn } from '@/lib/utils';
import { useNotificationStore } from '@/stores';

View File

@@ -4,4 +4,3 @@
// Export all A2UI-related components
export { AskQuestionDialog } from './AskQuestionDialog';
export { default as AskQuestionDialog } from './AskQuestionDialog';

View File

@@ -29,7 +29,7 @@ export function LogBlockList({ executionId, className }: LogBlockListProps) {
// This avoids duplicate logic and leverages store-side caching
const blocks = useCliStreamStore(
(state) => executionId ? state.getBlocks(executionId) : [],
(a, b) => a === b // Shallow comparison - arrays are cached in store
(a: LogBlockData[], b: LogBlockData[]) => a === b // Shallow comparison - arrays are cached in store
);
// Get execution status for empty state display