Repository navigation
Refactor: Test suite hardening and introduction of React component testing #72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 3 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
022991a
test: add component harness and expand unit/e2e coverage
ddutchie f5a5431
feat(layout): dynamic UI positioning and test stability
ddutchie fdccb11
feat(ui): eliminate splash screen flash and improve bubble contrast
ddutchie acab919
refactor(ipc): improve db channel classification and add unit tests
ddutchie 68d8941
refactor(onboarding): extract completion logic and add regression tests
ddutchie 4e34905
test(onboarding): strengthen async hydration gating tests
ddutchie e8228b5
test(flow, kanban): add unit tests for drag-and-drop logic
ddutchie e8d750e
fix(notes): clickable table checkboxes + ordered-list renumbering
ddutchie fb3f0c8
fix: address code review findings across editor, kanban, search, and …
ddutchie 36b7da3
fix: improve dark accent-fg contrast and same-day due-date label
ddutchie File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| ## What's new | ||
|
|
||
| This is an internal quality release — no user-facing behavior changes. It hardens the test suite around the v2.3.2 features and adds a React component-testing harness. | ||
|
|
||
| ### Changes | ||
|
|
||
| - **Shared "What's New" gate**: Extracted the duplicated "unseen latest features" logic (previously copy-pasted in `NewFeatureModal` and the boot path in `page.tsx`) into a single pure `getUnseenLatestFeatures(registry, seenFeatures, forceOpen?)`. Both call sites now share one implementation, eliminating drift between the modal and the tour-deferral gate. No behavior change. | ||
|
|
||
| ### Tests | ||
|
|
||
| - **Component test harness**: Added a second vitest project (`component`) running **jsdom + Testing Library** alongside the existing `node` project, plus `npm run test:unit` / `npm run test:component` scripts and a jest-dom setup file. Component tests live in `*.component.test.tsx`. | ||
| - **Onboarding component tests**: `StepCreateProject` — submit gating on empty/whitespace names, icon picker selection and `aria-pressed` state, accessible labels on icon-only buttons, and all controls (back, skip, icon picker) disabled while a create is in flight. | ||
| - **What's New modal component tests**: boot gating (unseen shows, seen hidden), "Done" marks the feature seen and closes, and — via the `forceOpen` (Settings) path — pagination dots, Next navigation, and "Skip All" marking every displayed feature seen. | ||
| - **Feature-gate unit tests**: full coverage of `getUnseenLatestFeatures` (forceOpen, empty registry, latest-version-only filtering, seen filtering, order-derived latest version). | ||
| - **Store & pure-logic unit tests**: | ||
| - `createProject` — icon persistence (the v2.3.2 onboarding fix), icon omitted when absent, the 5 optimistic columns with correct types/orders, and append-not-replace semantics. | ||
| - UI slice tour/seen-feature actions — `markFeatureAsSeen` (append/idempotent), `setTutorialActive` (with its step-index reset), `setTutorialStepIndex`. | ||
| - Board slice — `moveCard` (same/cross-column reindex, index clamping, untouched columns) and `getReadyCards` (blocker resolution, done/archived handling, orphan blockers, project scoping). | ||
| - `buildFolderTree` — folder-path normalization edge cases (undefined vs empty, leading/trailing/double slashes, deep nesting, alphabetical sort). | ||
| - `searchAll` — empty-query, title/content/description matching, snippet length, archived skipping, 50-result cap. | ||
| - Date helpers — `formatRelative` thresholds and `getDueDateStatus` (timezone-robust day comparison). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.