Decompose: Break down #22 into implementable work units #23

Closed
opened 2026-05-15 22:56:56 +00:00 by Mark · 2 comments
Owner

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

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.

## 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.
Author
Owner

Lint errors could not be fully resolved. A new lint-fix tracking issue has been opened: #25

Lint errors could not be fully resolved. A new lint-fix tracking issue has been opened: #25
Mark closed this issue 2026-05-20 19:54:33 +00:00
Author
Owner

blocked:lint-failed — pre-existing lint errors. Lint-fix issue filed: compose_dash#25.

blocked:lint-failed — pre-existing lint errors. Lint-fix issue filed: compose_dash#25.
Sign in to join this conversation.
No description provided.