Decompose: Break down #32 into implementable work units #34
Labels
No labels
blocked:gate-lint
blocked:needs-decision
blocked:needs-human
blocked:verify-failed
bug
enhancement
feature-request
in-progress
needs-decompose
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/redlens#34
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 #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.
GSD pipeline blocked at IMPLEMENT: prerequisite gate (lint) not passed.
Lint phase did not complete successfully.
This issue has been decomposed into the following sub-issues:
Each sub-issue has been labeled with
triage-approvedand is ready for queue routing.Fixed in commit. Closing.