Decompose: Break down #22 into implementable work units #23
Labels
No labels
blocked:lint-failed
blocked:needs-decision
blocked:no-changes
blocked:verify-failed
bug
feature-request
needs-triage
ops-task
quickfix
security/high
test-coverage
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/compose_dash#23
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decomposition of #22: [smoke-test] Test coverage review: 81 source files, 6 test files (7.4%)
This issue decomposes the parent feature into independently implementable phases.
P1: Test infrastructure and coverage tooling - add @vitest/coverage, set threshold in vitest.config.ts, enhance test/setup.ts with shared mocks (matchMedia, docker CLI mocking), add coverage CI step, create test patterns doc
Files: vitest.config.ts, src/test/setup.ts, .github/workflows/ci.yml, src/test/mocks.ts
P2: Backend API tests - full coverage of server/index.js Express endpoints (containers, compose files, snapshots, hosts, cloud), response validation, error handling, mock docker/podman CLI calls
Files: server/index.js, server/tests/api.test.js
Depends on: P1
P3: Core frontend libs and hooks - unit tests for utils.ts (cn(), validation fns), wsUrl.ts, use-mobile.ts, ErrorBoundary render/fallback, App.tsx routing shell
Files: src/lib/utils.ts, src/lib/wsUrl.ts, src/hooks/use-mobile.ts, src/components/ErrorBoundary.tsx, src/App.tsx
Depends on: P1
P4: Custom component tests - SSHKeyManager (add/list/delete keys, SSH validation), Terminal (WebSocket input/output rendering), Sidebar (nav links, active state), main.tsx bootstrap
Files: src/components/SSHKeyManager.tsx, src/components/Terminal.tsx, src/components/Sidebar.tsx, src/main.tsx
Depends on: P1
P5: Core page-section tests - Dashboard (stats cards, container list), ComposeManager (file CRUD, deploy flow), ServiceManager (start/stop/restart), ImageManager (pull/list/prune)
Files: src/sections/Dashboard.tsx, src/sections/ComposeManager.tsx, src/sections/ServiceManager.tsx, src/sections/ImageManager.tsx
Depends on: P1
P6: Remaining sections + shadcn/ui components batch - HostManager, SnapshotManager, CloudDeploy, Settings tests + bulk snapshot tests for the ~40 UI primitives (button, dialog, form, table, etc.) using shared render patterns
Files: src/sections/HostManager.tsx, src/sections/SnapshotManager.tsx, src/sections/CloudDeploy.tsx, src/sections/Settings.tsx, src/components/ui/
Depends on: P1
Post-completion: When each phase is complete, comment on #22 with a summary of what was implemented.
Lint errors could not be fully resolved. A new lint-fix tracking issue has been opened: #25
blocked:lint-failed — pre-existing lint errors. Lint-fix issue filed: compose_dash#25.