Decompose: Break down #32 into implementable work units #34

Closed
opened 2026-05-16 22:46:36 +00:00 by Mark · 3 comments
Owner

Decomposition of #32: [smoke-test] Test coverage review: 62 source files, 2 test files (3.2%)

This issue decomposes the parent feature into independently implementable phases.


P1: Infrastructure: install vitest, jsdom, @testing-library/react/react-dom/jest-dom; add test config to vite.config.ts; create tests/setup.ts with jsdom config and matcher extensions

Files: app/package.json, app/vite.config.ts, app/src/tests/setup.ts

P2: Core logic tests: unit tests for cn() utility and useIsMobile hook; smoke test for App rendering and main.tsx entry point; update npm test script to run vitest

Files: app/src/lib/utils.test.ts, app/src/hooks/use-mobile.test.ts, app/src/App.test.tsx, app/src/tests/main.test.tsx, app/package.json
Depends on: P1

P3: Static/presentation components: render-and-variant tests for button, badge, card, label, separator, skeleton, progress, avatar — all share cva/cn variant patterns so tests follow a uniform shape

Files: app/src/components/ui/button.test.tsx, app/src/components/ui/badge.test.tsx, app/src/components/ui/card.test.tsx, app/src/components/ui/label.test.tsx, app/src/components/ui/separator.test.tsx
Depends on: P1

P4: Form control components: render, event, and accessibility tests for input, textarea, select, checkbox, radio-group, switch, toggle, toggle-group, slider — these wrap Radix form primitives and need event/interaction coverage

Files: app/src/components/ui/input.test.tsx, app/src/components/ui/checkbox.test.tsx, app/src/components/ui/select.test.tsx, app/src/components/ui/switch.test.tsx, app/src/components/ui/radio-group.test.tsx
Depends on: P1

P5: Dialog/overlay/menu components: render and open/close interaction tests for dialog, alert-dialog, drawer, sheet, popover, tooltip, hover-card, accordion, collapsible, tabs, dropdown-menu, context-menu — these share Radix portal+trigger patterns and test open/close state transitions

Files: app/src/components/ui/dialog.test.tsx, app/src/components/ui/drawer.test.tsx, app/src/components/ui/sheet.test.tsx, app/src/components/ui/popover.test.tsx, app/src/components/ui/tabs.test.tsx
Depends on: P1

Files: app/.forgejo/workflows/ci.yml, app/src/components/ui/command.test.tsx, app/src/components/ui/navigation-menu.test.tsx, app/src/components/ui/carousel.test.tsx, app/src/components/ui/breadcrumb.test.tsx
Depends on: P3, P4, P5


Post-completion: When each phase is complete, comment on #32 with a summary of what was implemented.

## Decomposition of #32: [smoke-test] Test coverage review: 62 source files, 2 test files (3.2%) This issue decomposes the parent feature into independently implementable phases. --- ### P1: Infrastructure: install vitest, jsdom, @testing-library/react/react-dom/jest-dom; add test config to vite.config.ts; create __tests__/setup.ts with jsdom config and matcher extensions **Files:** app/package.json, app/vite.config.ts, app/src/__tests__/setup.ts ### P2: Core logic tests: unit tests for cn() utility and useIsMobile hook; smoke test for App rendering and main.tsx entry point; update npm test script to run vitest **Files:** app/src/lib/utils.test.ts, app/src/hooks/use-mobile.test.ts, app/src/App.test.tsx, app/src/__tests__/main.test.tsx, app/package.json **Depends on:** P1 ### P3: Static/presentation components: render-and-variant tests for button, badge, card, label, separator, skeleton, progress, avatar — all share cva/cn variant patterns so tests follow a uniform shape **Files:** app/src/components/ui/button.test.tsx, app/src/components/ui/badge.test.tsx, app/src/components/ui/card.test.tsx, app/src/components/ui/label.test.tsx, app/src/components/ui/separator.test.tsx **Depends on:** P1 ### P4: Form control components: render, event, and accessibility tests for input, textarea, select, checkbox, radio-group, switch, toggle, toggle-group, slider — these wrap Radix form primitives and need event/interaction coverage **Files:** app/src/components/ui/input.test.tsx, app/src/components/ui/checkbox.test.tsx, app/src/components/ui/select.test.tsx, app/src/components/ui/switch.test.tsx, app/src/components/ui/radio-group.test.tsx **Depends on:** P1 ### P5: Dialog/overlay/menu components: render and open/close interaction tests for dialog, alert-dialog, drawer, sheet, popover, tooltip, hover-card, accordion, collapsible, tabs, dropdown-menu, context-menu — these share Radix portal+trigger patterns and test open/close state transitions **Files:** app/src/components/ui/dialog.test.tsx, app/src/components/ui/drawer.test.tsx, app/src/components/ui/sheet.test.tsx, app/src/components/ui/popover.test.tsx, app/src/components/ui/tabs.test.tsx **Depends on:** P1 ### P6: Remaining components + CI coverage gate: tests for navigation-menu, menubar, pagination, breadcrumb, command, carousel, calendar, chart, form, sidebar, resizable, scroll-area, input-otp, field, table, alert, alert-dialog, empty, item, kbd, spinner, sonner, aspect-ratio, input-group, button-group, collapsible, resizable; then add coverage reporting to CI **Files:** app/.forgejo/workflows/ci.yml, app/src/components/ui/command.test.tsx, app/src/components/ui/navigation-menu.test.tsx, app/src/components/ui/carousel.test.tsx, app/src/components/ui/breadcrumb.test.tsx **Depends on:** P3, P4, P5 --- **Post-completion:** When each phase is complete, comment on #32 with a summary of what was implemented.
Author
Owner

GSD pipeline blocked at IMPLEMENT: prerequisite gate (lint) not passed.
Lint phase did not complete successfully.

GSD pipeline blocked at IMPLEMENT: prerequisite gate (lint) not passed. Lint phase did not complete successfully.
Author
Owner

This issue has been decomposed into the following sub-issues:

# Title Phase Scope
#36 Break down #32 into implementable work units — Phase 1: Infr Files: app/package.json, app/vite.config.ts, app/src/tests/setup.ts
#37 Break down #32 into implementable work units — Phase 2: Core Files: app/src/lib/utils.test.ts, app/src/hooks/use-mobile.test.ts, app/src/
#38 Break down #32 into implementable work units — Phase 3: Stat Files: app/src/components/ui/button.test.tsx, app/src/components/ui/badge.te
#39 Break down #32 into implementable work units — Phase 4: Form Files: app/src/components/ui/input.test.tsx, app/src/components/ui/checkbox.
#40 Break down #32 into implementable work units — Phase 5: Dial Files: app/src/components/ui/dialog.test.tsx, app/src/components/ui/drawer.t
#41 Break down #32 into implementable work units — Phase 6: Rema Files: app/.forgejo/workflows/ci.yml, app/src/components/ui/command.test.tsx

Each sub-issue has been labeled with triage-approved and is ready for queue routing.

This issue has been decomposed into the following sub-issues: | # | Title | Phase Scope | |---|-------|-------------| | #36 | Break down #32 into implementable work units — Phase 1: Infr | **Files:** app/package.json, app/vite.config.ts, app/src/__tests__/setup.ts | | #37 | Break down #32 into implementable work units — Phase 2: Core | **Files:** app/src/lib/utils.test.ts, app/src/hooks/use-mobile.test.ts, app/src/ | | #38 | Break down #32 into implementable work units — Phase 3: Stat | **Files:** app/src/components/ui/button.test.tsx, app/src/components/ui/badge.te | | #39 | Break down #32 into implementable work units — Phase 4: Form | **Files:** app/src/components/ui/input.test.tsx, app/src/components/ui/checkbox. | | #40 | Break down #32 into implementable work units — Phase 5: Dial | **Files:** app/src/components/ui/dialog.test.tsx, app/src/components/ui/drawer.t | | #41 | Break down #32 into implementable work units — Phase 6: Rema | **Files:** app/.forgejo/workflows/ci.yml, app/src/components/ui/command.test.tsx | Each sub-issue has been labeled with `triage-approved` and is ready for queue routing.
Mark 2026-05-21 18:34:17 +00:00
Author
Owner

Fixed in commit. Closing.

Fixed in commit. Closing.
Sign in to join this conversation.
No description provided.