Skip to content

chore(dips): major deps upgrades - #70

Merged
bartstc merged 18 commits into
corefrom
chore/major-dep-upgrades
Jul 28, 2026
Merged

chore(dips): major deps upgrades#70
bartstc merged 18 commits into
corefrom
chore/major-dep-upgrades

Conversation

@bartstc

@bartstc bartstc commented Jul 27, 2026

Copy link
Copy Markdown
Owner

No description provided.

bartstc and others added 8 commits July 26, 2026 06:39
Bumps verified by typecheck alone:
- ramda 0.31.3 -> 0.32.0
- @types/ramda 0.30.2 -> 0.32.0 (realigns types with runtime)
- next-themes 0.4.4 -> 0.4.6
- @storybook/addon-mcp 0.5.0 -> 0.7.0

Gate: typecheck + lint + unit (96 passed).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bumps whose real gate is the build, not typecheck:
- @fontsource/inter 4.5.15 -> 5.3.0 (400/700/900.css paths unchanged)
- vite-plugin-checker 0.12.0 -> 0.14.5 (config shape unchanged)
- @types/node 25 -> 26.1.1 (root + server/, kept aligned)

Verified: root+server typecheck, build, lint, unit (96 passed).
Dev server boots with checker reporting 0 errors; Inter woff2 serves
over dev (200) and 42 font files emit into dist/.

Known non-fatal peer warning: vite-plugin-checker 0.14.5 wants
eslint >=9.39.4, repo is on 9.39.2. Resolves in group 11 (eslint 10).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ui 6)

- husky 8.0.3 -> 9.1.7: "prepare" is now bare `husky`; dropped the
  shebang + husky.sh sourcing lines from .husky/pre-commit per the v9
  convention. `pnpm prepare` no longer emits the deprecation warning.
- concurrently 9.2.1 -> 10.0.4
- @fastify/swagger-ui 5.2.5 -> 6.1.0 (server/)

Verified: typecheck (root+server), lint, unit 96 passed.
`pnpm dev:all` starts both processes with prefixing intact (5173 +
3001); /docs renders Swagger UI v6, /docs/json serves the OpenAPI
spec, static assets and /api/products return 200.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Status: Planning -> In progress, next up group 4
- Execution table rows 0-3 struck through with commit SHAs
- Tier A / B3 / B6 / C7 sections annotated so landed packages no
  longer read as outstanding work (B6 is partial: concurrently done,
  its three eslint plugins move to group 11c)
- Execution log records two findings that carry forward: the
  vite-plugin-checker -> eslint >=9.39.4 unmet peer (resolves in
  group 11) and the local `pnpm test` birpc teardown flake that
  leaves the storybook suite unverified for groups 1-3

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- jsdom 21.1.2 -> 29.1.1 (8 majors; zero fallout in the unit suite)
- @testing-library/jest-dom 6.9.1 -> 7.0.0; the /vitest import path in
  test-setup.ts is retained, no edit needed
- Removed @types/testing-library__jest-dom (5.14.9) — types now ship
  with the package

Dropping that stale types package exposed a latent bug: date.test.ts
and use-relative-time.test.ts used it/expect/beforeEach/afterEach
without importing them, relying on ambient Jest globals leaking in via
its transitive @types/jest. Both now import from vitest explicitly,
matching every other test file. Test bodies unchanged.

Gate: typecheck, lint, unit 96 passed, storybook 27 files / 49 tests
passed (run with --fileParallelism=false, see below).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Status -> groups 1-4 landed; next up group 5
- Table row 4 struck through with SHA; row 5 marked next
- B4/B5 sections annotated as done
- Corrected the earlier "local concurrency flake" note: the storybook
  failures are /dev/shm exhaustion (64MB Docker default) crashing the
  Chromium page. Documented the --fileParallelism=false workaround
  (27 files / 49 tests green) and the durable --shm-size fix. This
  clears the storybook status for groups 1-3 too.
- Logged the ambient-Jest-globals bug that removing
  @types/testing-library__jest-dom exposed
- Noted the pre-existing unguarded data.meta.total in ProductsPage,
  verified present on the group-3 baseline and left unfixed as
  out of scope

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Docker's 64MB /dev/shm default crashes the Chromium page when Vitest
runs Storybook story files in parallel, surfacing as "Browser
connection was closed while running tests" / "[birpc] rpc is closed"
with files reported failed or "Tests no tests". The same suite passes
serially, which is what made it look like a flake.

Adds "runArgs": ["--shm-size=1g"] (takes effect on container rebuild)
and a one-line note in .claude/rules/testing.md pointing at the
--fileParallelism=false workaround for pre-rebuild containers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- zustand 4.5.4 -> 5.0.14
- query-string 8.2.0 -> 9.4.1

zustand v5 uses useSyncExternalStore strictly, so a selector returning
a fresh object every render is now an infinite loop ("The result of
getSnapshot should be cached" -> "Maximum update depth exceeded").
Six dialog components selected multiple keys into an object literal;
each is now split into atomic single-value subscriptions, matching the
selector style already used elsewhere in the codebase. Behavior is
unchanged.

Note: the spec's B1 audit targeted useAuthStore, whose 22 call sites
were all already clean. The breakage was in the modal-store consumers,
which B1 did not cover.

query-string v9 needed no source edits: stringify output is unchanged
(verified directly, incl. arrayFormat "comma"), and the ESM-only build
resolves fine. buildUrl has no unit test of its own; it is covered
indirectly via the MSW handler, which builds its match URL with it.

Gate: typecheck, lint, unit 96 passed, storybook 27 files / 49 tests
passed. E2E not run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/27/2026 - 18:08:02
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 62.1% (1037 of 1669)
Covered lines: 1037
Uncovered lines: 632
Coverable lines: 1669
Total lines: 9297
Branch coverage: 45% (309 of 686)
Covered branches: 309
Total branches: 686
Method coverage: Feature is only available for sponsors
Tag: 417_30292286959

Coverage

Default - 62.1%
Name Line Branch
Default 62.1% 45%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 70% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 50%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 50%
src/lib/http/exceptions/internal-server-exception.ts 0%
src/lib/http/exceptions/resource-not-found-exception.ts 0% 0%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 88% 62.5%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 33.3% 0%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 75%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

0.511.0 -> 1.27.0 (v1 is the first stable release). Spec targeted
1.26.0; 1.27.0 is now latest.

Zero source changes needed. The v1 breaking changes are renamed and
removed icons plus the deprecated-alias cleanup, but all 20 icons
this repo imports across 24 files survived, including the aliases
CheckCircle and AlertCircle that looked most at risk.

Gates: typecheck clean (covers the LucideIcon/LucideProps seam in
Icon.tsx), build ok, unit 96/96, storybook 49/49, lint clean. Also
asserted all 20 named exports resolve at runtime, since typecheck
alone would not catch an export that resolved to a loose type.

Storybook needed --fileParallelism=false: this container predates
99f710d, so /dev/shm is still 64M.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/27/2026 - 18:25:04
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 63.1% (1054 of 1668)
Covered lines: 1054
Uncovered lines: 614
Coverable lines: 1668
Total lines: 9297
Branch coverage: 45.4% (312 of 686)
Covered branches: 312
Total branches: 686
Method coverage: Feature is only available for sponsors
Tag: 418_30293548835

Coverage

Default - 63.1%
Name Line Branch
Default 63.1% 45.4%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 100% 50%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 100%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 100%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 50% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 66.6%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 100%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 50%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 50%
src/lib/http/exceptions/internal-server-exception.ts 0%
src/lib/http/exceptions/resource-not-found-exception.ts 0% 0%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 88% 62.5%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 33.3% 0%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 65% 50%
src/pages/Product/loader.ts 100%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

bartstc and others added 2 commits July 27, 2026 18:27
src/lib/http/ had no tests at all, though spec 004 names an
"MSW-backed src/lib/http unit suite" as group 7's gate and safety net
for the ky 0.33 -> 2 migration. Writing it first, against ky 0.33, so
it is a real before/after net rather than a description of
already-migrated behaviour.

Covers the contracts consumers branch on but tsc cannot see:
- beforeError mapping to ResourceNotFoundException (GET 404 only),
  InternalServerException (empty body) and AjaxError otherwise
- AjaxError.body carrying the full parsed payload, which
  parse-checkout-error reads for code/items/changes
- the instanceof chain ErrorPageStrategy, ErrorBoundary and the
  Product page rely on, plus status/name/message
- beforeRequest bearer-token injection, present and absent

17 tests, green on ky 0.33.3. Mutation-checked the key one: simulating
ky 2's response-body pre-consumption fails the two body tests, which
is the silent regression this suite exists to catch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0.33.3 -> 2.0.2, spanning two majors. Five breaking changes hit us,
three of which tsc caught and two of which it could not:

- beforeRequest/beforeError hooks now take a state object rather than
  positional args, and beforeError no longer receives a response — it
  comes off error.response, and only for HTTPError. Guarded with the
  new isHTTPError type guard so network/timeout failures propagate
  untouched instead of being mislabelled InternalServerException.
- ky now pre-consumes the response body into error.data before
  beforeError runs, so the old response.clone().json() would fail.
  It sat inside a try/catch, so this would have silently emptied
  AjaxError.body and broken checkout's OutOfStock/PriceChanged/
  PromoInvalid recovery with no type or test error anywhere.
- prefixUrl was replaced by baseUrl, which resolves per URL semantics:
  without a trailing slash the last path segment is replaced, so
  .../api + products would have dropped /api from every request.
- AjaxError now extends KyError rather than HTTPError. ky 2 types
  HTTPError["name"] as the literal "HTTPError", which makes it
  unsubclassable when the subclass needs its own name; ky's own
  NetworkError/TimeoutError extend KyError for exactly this reason.
  Nothing in the app used instanceof HTTPError or error.response —
  consumers branch on AjaxError plus status/body/message/name — so
  the response/request/options fields simply move onto AjaxError.

Gates: http suite 17/17 (added in a66d6a7 against 0.33, so it is a
true before/after), unit 113/113, storybook 49/49, typecheck, lint,
build. Verified against the live API in a browser: products load from
/api/products with params intact, and an unknown id still renders the
ResourceNotFoundException page.

E2E is failing independently of this change — 10 failures on the
0.33 baseline vs 5 here. Not caused by the upgrade; needs its own
look, likely test-data state since the runs mutate server db.json.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/27/2026 - 18:41:00
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 62.5% (1046 of 1672)
Covered lines: 1046
Uncovered lines: 626
Coverable lines: 1672
Total lines: 9317
Branch coverage: 46.9% (327 of 697)
Covered branches: 327
Total branches: 697
Method coverage: Feature is only available for sponsors
Tag: 419_30294748131

Coverage

Default - 62.5%
Name Line Branch
Default 62.5% 46.9%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 70% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 50%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 100%
src/lib/http/exceptions/internal-server-exception.ts 100%
src/lib/http/exceptions/resource-not-found-exception.ts 100% 100%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 96% 92%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 33.3% 0%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 75%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

Bump the four version-locked i18n peers together:

- i18next 25.7.4 -> 26.3.6
- react-i18next 16.5.1 -> 17.0.11
- i18next-chained-backend 4.6.3 -> 5.0.5
- i18next-http-backend 3.0.2 -> 4.0.0

No source changes needed: the `satisfies InitOptions` /
ChainedBackendOptions / HttpBackendOptions blocks in i18n.ts all still
conform, and reloadResources/changeLanguage in the HMR block are
unchanged.

The unit and storybook suites init i18n with in-memory `resources` and
never install ChainedBackend/HttpBackend, so the two backend bumps were
verified against the running app instead — locale JSON served 200 and
rendered copy checked in a browser on / and /products with no raw keys
and no console errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/27/2026 - 18:55:46
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 63.6% (1064 of 1671)
Covered lines: 1064
Uncovered lines: 607
Coverable lines: 1671
Total lines: 9317
Branch coverage: 47.4% (331 of 697)
Covered branches: 331
Total branches: 697
Method coverage: Feature is only available for sponsors
Tag: 420_30295847394

Coverage

Default - 63.6%
Name Line Branch
Default 63.6% 47.4%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 100%
src/features/marketing/components/HeroSection.tsx 100%
src/features/marketing/components/PricingSection.tsx 100%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 50% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 100%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 100%
src/lib/http/exceptions/internal-server-exception.ts 100%
src/lib/http/exceptions/resource-not-found-exception.ts 100% 100%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 96% 92%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 55.5% 60%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 75%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

react-router 7.18.1 -> 8.3.0. No source changes: the app only uses
v8-stable data-router APIs (createBrowserRouter, createMemoryRouter,
RouterProvider, ScrollRestoration, useRouteError, Link, useNavigate,
Outlet) and had no `future` flags to retire.

storybook-addon-remix-react-router stays at 6.1.0. It is the latest
release and declares `react-router: ^7.0.2`, but that range is a
declaration lag rather than a real incompatibility: it imports only
createMemoryRouter, RouterProvider, UNSAFE_RouteContext, useLocation,
useParams, useSearchParams and useNavigationType, all of which still
exist in 8.3.0. The story suite passes unchanged, so the peer warning
is silenced via pnpm.peerDependencyRules instead of holding back
react-router.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/27/2026 - 19:15:02
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 62.5% (1046 of 1671)
Covered lines: 1046
Uncovered lines: 625
Coverable lines: 1671
Total lines: 9317
Branch coverage: 46.9% (327 of 697)
Covered branches: 327
Total branches: 697
Method coverage: Feature is only available for sponsors
Tag: 421_30297301641

Coverage

Default - 62.5%
Name Line Branch
Default 62.5% 46.9%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 70% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 50%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 100%
src/lib/http/exceptions/internal-server-exception.ts 100%
src/lib/http/exceptions/resource-not-found-exception.ts 100% 100%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 96% 92%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 33.3% 0%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 75%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

msw-storybook-addon 2.0.7 -> 3.0.0.

v3 removes `initialize()` and inverts control of the worker: rather than
the addon creating and starting it for you, you supply a setup function
that calls setupWorker(), awaits worker.start(options) and returns it.
The CSF 3.0 entry point also moved to the `/csf3` subpath, where
`mswLoader` is now called rather than passed by reference.

This project is on CSF 3.0, so `parameters.msw` is preserved and the 13
story files using it are untouched. The custom onUnhandledRequest
callback moves into worker.start() with its behaviour intact — verified
in a browser: an unhandled /api/* request warns, a /locales/*.json
request stays silent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/27/2026 - 19:28:39
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 63.3% (1059 of 1671)
Covered lines: 1059
Uncovered lines: 612
Coverable lines: 1671
Total lines: 9317
Branch coverage: 47.3% (330 of 697)
Covered branches: 330
Total branches: 697
Method coverage: Feature is only available for sponsors
Tag: 422_30298299638

Coverage

Default - 63.3%
Name Line Branch
Default 63.3% 47.3%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 100% 25%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 100%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 100%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 100% 100%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 50%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 100%
src/lib/http/exceptions/internal-server-exception.ts 100%
src/lib/http/exceptions/resource-not-found-exception.ts 100% 100%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 96% 92%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 90%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 33.3% 0%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 75%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

bartstc and others added 3 commits July 28, 2026 20:17
Bump eslint 9.39.2 -> 10.8.0 and @eslint/js 9.39.2 -> 10.0.1. Migrate the
deprecated eslint-plugin-vitest 0.5.4 to @vitest/eslint-plugin 1.6.24 — the
plugin's API surface (rules, configs.recommended, environments.env.globals)
is unchanged, so only the import specifier moved.

eslint-plugin-react-hooks stays pinned at 5 (group 11b).

Two config consequences:

- settings.react.version moves from "detect" to a pinned "19.2". The plugin's
  version detection calls context.getFilename(), removed in ESLint 10, which
  crashed the entire run. Pinning bypasses detection.
- eslint-plugin-import and eslint-plugin-react declare eslint peer ranges
  ending at 9 with no eslint-10-aware release published. Verified their
  removed-API call sites are all guarded and silenced the warnings with
  pnpm.peerDependencyRules.

Also resolves the vite-plugin-checker@0.14.5 unmet peer (eslint >=9.39.4).

Gates: typecheck, lint, 113 unit, 27 files / 49 storybook.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bump eslint-plugin-react-hooks 5.2.0 -> 7.1.1, which ships the React
Compiler-powered rules (2 rules under v5, 17 under v7).

The preset cannot be spread directly: in 7.1.1 every exported config —
including configs.flat["recommended-latest"] — declares `plugins` as a
string array, the eslintrc shape flat config rejects. eslint.config.mjs now
builds the flat config from the plugin object plus that preset's rule list.
Re-check on the next bump.

The violation wave was far smaller than the spec budgeted: 12 errors across
5 files, all from the new react-hooks/refs rule, in two categories:

- False positives (8, MoneyInput/NumberInput). Passing react-hook-form's
  field.ref — a callback ref registrar, not a useRef object — to a ref prop
  makes the rule treat all of `field` as a ref, flagging every field.* read.
  Confirmed by bisection: removing ref={field.ref} clears all four per file.
- Intentional idiom (4, both AuthProviders + use-form). Lazy ref init, where
  reading .current during render is the point of the pattern.

Neither is a real defect, so both are suppressed at the site with AIDEV-NOTE
anchors rather than rewriting working code. --report-unused-disable-directives
is enabled, so these fail the build once upstream stops needing them.

Gates: typecheck, lint, 113 unit, 27 files / 49 storybook, E2E 10/10.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bump the three remaining B6 lint plugins: eslint-plugin-react-refresh
0.4.26 -> 0.5.3, eslint-plugin-react-you-might-not-need-an-effect
0.8.5 -> 1.0.1, eslint-plugin-boundaries 6.0.2 -> 7.1.0.

boundaries v7 renamed the `rules` option to `policies`; eslint.feature-slices.mjs
follows. The legacy string selector syntax inside typeRules is still honoured
(v7 emits an advisory, not an error), so migrating those to object selectors is
left as a separate change.

Per B6, verified the feature-slice rules still fire rather than trusting a
green lint: injected a models/ -> components/ import and confirmed
boundaries/dependencies errors with both captured feature="carts" values
resolved, proving the capture-based selectors that block cross-feature
imports survive the rename. Reverted after.

react-refresh 0.5's stricter only-export-components flags two route modules
where Component is assigned from an HOC call — the rule cannot prove a call
returns a component. pages/Products, which assigns a plain identifier, is not
flagged, which isolates the trigger. Suppressed at both sites.

ymnnae 1.0 no longer reports no-pass-data-to-parent in conditional-rendering.ts,
so its now-unused eslint-disable is removed (it failed
--report-unused-disable-directives).

Gates: typecheck, lint, 113 unit, 27 files / 49 storybook, E2E 10/10. One
storybook run failed 1 test on the documented 64 MB /dev/shm exhaustion; three
consecutive reruns were 27/27.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/28/2026 - 20:39:38
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 62.7% (1048 of 1671)
Covered lines: 1048
Uncovered lines: 623
Coverable lines: 1671
Total lines: 9340
Branch coverage: 47.6% (332 of 697)
Covered branches: 332
Total branches: 697
Method coverage: Feature is only available for sponsors
Tag: 423_30397195085

Coverage

Default - 62.7%
Name Line Branch
Default 62.7% 47.6%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 50% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 100%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 100%
src/lib/http/exceptions/internal-server-exception.ts 100%
src/lib/http/exceptions/resource-not-found-exception.ts 100% 100%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 100% 96%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 55.5% 60%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 100%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on: 07/28/2026 - 20:55:32
Parser: MultiReport (2x LCov)
Assemblies: 1
Classes: 230
Files: 230
Line coverage: 62.4% (1044 of 1671)
Covered lines: 1044
Uncovered lines: 627
Coverable lines: 1671
Total lines: 9340
Branch coverage: 46.9% (327 of 697)
Covered branches: 327
Total branches: 697
Method coverage: Feature is only available for sponsors
Tag: 424_30398341619

Coverage

Default - 62.4%
Name Line Branch
Default 62.4% 46.9%
src/app/App.tsx 0% 0%
src/app/design/ColorModeProvider.tsx 100%
src/app/design/DesignProvider.tsx 100%
src/app/Providers.tsx 0%
src/features/auth/application/auth-store.ts 71.8% 71.4%
src/features/auth/application/AuthProvider.tsx 0%
src/features/auth/application/RequireAuth.tsx 33.3% 0%
src/features/auth/application/RequirePub.tsx 33.3% 0%
src/features/auth/application/with-require-auth.tsx 50%
src/features/auth/application/with-require-pub.tsx 50%
src/features/auth/components/SignInForm.tsx 90.9%
src/features/auth/components/use-sign-in-notifications.ts 100%
src/features/auth/models/storage-keys.ts 100%
src/features/authv2/application/auth-context.tsx 0% 0%
src/features/authv2/application/auth-machine.ts 88.8% 50%
src/features/authv2/application/AuthProvider.tsx 0% 0%
src/features/authv2/application/storage-machine.ts 0% 0%
src/features/authv2/application/use-authorized-context-selector.ts 0%
src/features/authv2/models/permissions.ts 100%
src/features/authv2/models/user-roles.ts 100%
src/features/authv2/providers/get-roles.ts 0%
src/features/carts/application/use-add-to-cart-notifications.ts 85.7%
src/features/carts/application/use-add-to-cart.ts 77.2% 50%
src/features/carts/application/use-clear-cart-notifications.ts 87.5%
src/features/carts/application/use-clear-cart.ts 84.6% 50%
src/features/carts/application/use-product-added-dialog-store.ts 100%
src/features/carts/application/use-remove-cart-product-notifications.ts 100%
src/features/carts/application/use-remove-cart-product.ts 84.6% 70%
src/features/carts/components/AddToCartButton/AddToCartButton.tsx 100% 66.6%
src/features/carts/components/AddToCartButton/ProductAddedDialog.tsx 76.9% 0%
src/features/carts/components/CartItem.tsx 80%
src/features/carts/components/CartItem/ConfirmRemoveProductDialog.tsx 66.6% 42.8%
src/features/carts/components/CartItem/QuantityControls.tsx 88.2% 100%
src/features/carts/components/CartItem/use-confirm-remove-product-dialog-st
ore.ts
100%
src/features/carts/components/CartsList.tsx 90%
src/features/carts/components/ClearCartButton/ClearCartButton.tsx 100%
src/features/carts/components/ClearCartButton/ConfirmClearCartDialog.tsx 88.8% 25%
src/features/carts/components/ClearCartButton/use-confirm-clear-cart-dialog
-store.ts
100%
src/features/carts/providers/use-add-to-cart-mutation.ts 100%
src/features/carts/providers/use-cart-products-query.ts 50%
src/features/carts/providers/use-clear-cart-mutation.ts 100%
src/features/carts/providers/use-remove-all-cart-products-mutation.ts 100%
src/features/carts/providers/use-remove-cart-product-mutation.ts 81.2% 33.3%
src/features/checkout/application/checkout-actor-context.tsx 10% 0%
src/features/checkout/application/checkout-machine.ts 95.6% 53.5%
src/features/checkout/application/CheckoutActorProvider.tsx 8.3% 0%
src/features/checkout/components/CheckoutButton.tsx 20%
src/features/checkout/components/CheckoutDialog.tsx 14.2% 0%
src/features/checkout/components/CheckoutErrorNotice.tsx 33.3%
src/features/checkout/components/CheckoutFlow.tsx 10.3% 0%
src/features/checkout/components/CheckoutLineItems.tsx 33.3%
src/features/checkout/components/CheckoutTotals.tsx 40% 0%
src/features/checkout/components/ConfirmationStep.tsx 33.3%
src/features/checkout/components/EmptyCartNotice.tsx 33.3%
src/features/checkout/components/OutOfStockNotice.tsx 25%
src/features/checkout/components/PriceChangedNotice.tsx 25%
src/features/checkout/components/PromoShippingControls.tsx 12.5% 0%
src/features/checkout/components/ReviewStep.tsx 33.3%
src/features/checkout/components/SessionExpiredNotice.tsx 33.3%
src/features/checkout/components/use-checkout-dialog-store.ts 100%
src/features/checkout/providers/use-cart-invalidation.ts 25%
src/features/demo/application/use-counter.ts 100%
src/features/demo/components/Demo.tsx 83.3%
src/features/marketing/components/FeatureSection.tsx 28.5%
src/features/marketing/components/HeroSection.tsx 40%
src/features/marketing/components/PricingSection.tsx 28.5%
src/features/marketing/providers/use-marketing-product-query.ts 100%
src/features/marketing/rating/application/use-rate-product-notifications.ts 90%
src/features/marketing/rating/application/use-rate-product.ts 86.6% 50%
src/features/marketing/rating/components/ProductRating.tsx 100% 100%
src/features/marketing/rating/components/ProductRatingFallback.tsx 25%
src/features/marketing/rating/components/StarRating.tsx 94.1% 100%
src/features/marketing/rating/providers/use-rate-product-mutation.ts 70.5% 50%
src/features/marketing/reviews/application/use-current-user-review.ts 20% 0%
src/features/marketing/reviews/application/use-delete-review-notifications.
ts
12.5%
src/features/marketing/reviews/application/use-delete-review.ts 9%
src/features/marketing/reviews/application/use-review-form-notifications.ts 10%
src/features/marketing/reviews/application/use-submit-review.ts 10.5% 0%
src/features/marketing/reviews/components/ConfirmDeleteReviewDialog.tsx 8.3% 0%
src/features/marketing/reviews/components/ReviewForm.tsx 10% 0%
src/features/marketing/reviews/components/ReviewFormDialog.tsx 12.5% 0%
src/features/marketing/reviews/components/ReviewList.tsx 28.5% 0%
src/features/marketing/reviews/components/ReviewListEmpty.tsx 25%
src/features/marketing/reviews/components/ReviewListFallback.tsx 33.3%
src/features/marketing/reviews/components/ReviewListItem.tsx 7.1% 0%
src/features/marketing/reviews/components/reviews-anchor.ts 100%
src/features/marketing/reviews/components/use-confirm-delete-review-dialog-
store.ts
100%
src/features/marketing/reviews/components/use-review-form-dialog-store.ts 100%
src/features/marketing/reviews/components/WriteReviewButton.tsx 7.1% 0%
src/features/marketing/reviews/providers/use-create-review-mutation.ts 14.2%
src/features/marketing/reviews/providers/use-delete-review-mutation.ts 16.6%
src/features/marketing/reviews/providers/use-product-reviews-query.ts 50%
src/features/marketing/reviews/providers/use-update-review-mutation.ts 14.2%
src/features/products/components/ProductCard.tsx 71.4%
src/features/products/components/ProductDetails.tsx 100%
src/features/products/components/ProductNotFoundResult.tsx 80%
src/features/products/components/ProductsList.tsx 100% 100%
src/features/products/components/use-category-label.ts 100% 50%
src/features/products/providers/product-query.ts 50%
src/features/products/providers/products-query.ts 100%
src/lib/api/auth/login/login-mutation.ts 100%
src/lib/api/auth/users/{user-id}/user-query.ts 100%
src/lib/api/carts/{cart-id}/add-to-cart-mutation.ts 61.5% 37.5%
src/lib/api/carts/{cart-id}/cart-products-query.ts 50% 0%
src/lib/api/carts/{cart-id}/cart-query.ts 0%
src/lib/api/carts/{cart-id}/clear-cart-mutation.ts 60%
src/lib/api/carts/{cart-id}/remove-cart-product-mutation.ts 100% 100%
src/lib/api/carts/cart-query-keys.ts 80%
src/lib/api/checkout/apply-checkout-mutation.ts 33.3%
src/lib/api/checkout/checkout-errors.ts 100%
src/lib/api/checkout/checkout-session-dto.ts 100%
src/lib/api/checkout/confirm-checkout-mutation.ts 33.3%
src/lib/api/checkout/initiate-checkout-mutation.ts 33.3%
src/lib/api/checkout/parse-checkout-error.ts 16.6% 0%
src/lib/api/marketing/{product-id}/marketing-product-query.ts 100%
src/lib/api/marketing/{product-id}/rate-product-mutation.ts 100%
src/lib/api/marketing/{product-id}/reviews/create-review-mutation.ts 11.1% 0%
src/lib/api/marketing/{product-id}/reviews/delete-review-mutation.ts 20%
src/lib/api/marketing/{product-id}/reviews/product-reviews-query.ts 33.3%
src/lib/api/marketing/{product-id}/reviews/update-review-mutation.ts 20%
src/lib/api/marketing/marketing-query-keys.ts 75%
src/lib/api/products/{product-id}/product-dto.ts 100%
src/lib/api/products/{product-id}/product-query.ts 100%
src/lib/api/products/products-list/products-list-query.ts 100% 50%
src/lib/api/products/products-query-keys.ts 100%
src/lib/assert-value.ts 100% 100%
src/lib/build-url.ts 75% 50%
src/lib/components/ErrorBoundary/ErrorBoundary.tsx 40% 16.6%
src/lib/components/ErrorBoundary/with-error-boundary.tsx 100%
src/lib/components/Form/conditional-rendering.ts 81.2% 50%
src/lib/components/Form/configuration.ts 50% 80%
src/lib/components/Form/fields/MoneyInput.tsx 100% 88.8%
src/lib/components/Form/fields/NumberInput.tsx 100% 77.7%
src/lib/components/Form/fields/SelectInput.tsx 100% 100%
src/lib/components/Form/fields/TextareaInput.tsx 100% 100%
src/lib/components/Form/fields/TextInput.tsx 100% 100%
src/lib/components/Form/fields/use-error-message.ts 100%
src/lib/components/Form/fields/utils.ts 100% 50%
src/lib/components/Form/form-context.ts 80% 50%
src/lib/components/Form/FormProvider.tsx 100%
src/lib/components/Form/map-grid-props.ts 40% 10%
src/lib/components/Form/presentation/CurrencyInput.tsx 100% 50%
src/lib/components/Form/presentation/FormField.tsx 100% 42.8%
src/lib/components/Form/presentation/NumberInput.tsx 100%
src/lib/components/Form/presentation/SelectInput.tsx 80% 58.8%
src/lib/components/Form/use-form.ts 100%
src/lib/components/Icon/Icon.tsx 0% 0%
src/lib/components/Layout/Footer/index.tsx 100%
src/lib/components/Layout/Footer/Logo.tsx 100%
src/lib/components/Layout/Layout.tsx 0%
src/lib/components/Layout/Navbar/DesktopNav.tsx 100% 75%
src/lib/components/Layout/Navbar/index.tsx 95.8% 87.5%
src/lib/components/Layout/Navbar/LoaderBar.tsx 80% 50%
src/lib/components/Layout/Navbar/MobileNav.tsx 100% 87.5%
src/lib/components/Layout/Navbar/use-nav-items.ts 100% 100%
src/lib/components/Layout/Page.tsx 100% 100%
src/lib/components/Layout/PageHeader.tsx 100% 100%
src/lib/components/Layout/ToggleModeButton.tsx 100% 50%
src/lib/components/Modal/create-modal-store.ts 100% 100%
src/lib/components/Result/Buttons/ContactUsButton.tsx 100%
src/lib/components/Result/Buttons/ResetFiltersButton.tsx 100%
src/lib/components/Result/EmptyStateResult.tsx 100%
src/lib/components/Result/ErrorPageStrategy.tsx 0% 0%
src/lib/components/Result/Icons/ErrorIcon.tsx 100%
src/lib/components/Result/Icons/InfoIcon.tsx 0%
src/lib/components/Result/Icons/SuccessIcon.tsx 0%
src/lib/components/Result/Icons/WarningIcon.tsx 100%
src/lib/components/Result/InternalErrorResult.tsx 100%
src/lib/components/Result/InternalServerErrorResult.tsx 100%
src/lib/components/Result/NotFoundResult.tsx 100%
src/lib/components/Result/Result.tsx 100%
src/lib/components/Suspense/with-suspense.tsx 0%
src/lib/components/Toast/Toaster.tsx 100% 87.5%
src/lib/components/Toast/use-not-implemented-yet-toast.ts 80%
src/lib/components/Toast/use-toast.ts 100% 100%
src/lib/components/Tooltip/Tooltip.tsx 50% 0%
src/lib/compose.ts 0%
src/lib/date/date.ts 91.3% 85.7%
src/lib/date/use-format-date-time.ts 100% 100%
src/lib/date/use-format-date.ts 100% 100%
src/lib/date/use-relative-time.ts 100% 100%
src/lib/debounce.ts 100% 100%
src/lib/format/money.ts 88.8% 75%
src/lib/format/number.ts 87.5% 75%
src/lib/get.ts 100%
src/lib/http/ajax-error.ts 100% 100%
src/lib/http/exceptions/internal-server-exception.ts 100%
src/lib/http/exceptions/resource-not-found-exception.ts 100% 100%
src/lib/http/http-service.ts 87.5%
src/lib/http/index.ts 100%
src/lib/http/ky-client.ts 96% 92%
src/lib/i18n/i18n.ts 70% 37.5%
src/lib/i18n/use-transations.ts 100% 75%
src/lib/is-empty.ts 100%
src/lib/is-error-of.ts 100% 100%
src/lib/is-guid.ts 100% 100%
src/lib/logger/console-logger.ts 50% 20%
src/lib/logger/index.ts 66.6% 58.3%
src/lib/logger/logger-types.ts 100%
src/lib/logger/mock-logger.ts 0%
src/lib/logger/storybook-logger.ts 33.3%
src/lib/machine/replace.ts 0% 0%
src/lib/machine/union-context-selector.ts 0% 0%
src/lib/machine/use-actor-ref.ts 0% 0%
src/lib/permissions/use-has-permission.ts 0% 0%
src/lib/permissions/when-permitted-to.tsx 0% 0%
src/lib/query.ts 100%
src/lib/router/handle-lazy-import-error.ts 0% 0%
src/lib/router/index.ts 100% 50%
src/lib/router/routes.ts 100%
src/lib/router/use-route-error.ts 50%
src/lib/sleep.ts 100%
src/lib/theme/theme.ts 100%
src/lib/theme/use-brand-color.ts 100%
src/lib/theme/use-color-mode.ts 83.3% 25%
src/lib/theme/use-secondary-text-color.ts 100%
src/lib/to-kebab-case.ts 100%
src/lib/types/unauthorized-error.ts 0%
src/lib/types/unknown-error.ts 100%
src/main.tsx 0%
src/pages/Cart/index.tsx 30%
src/pages/Cart/loader.ts 100%
src/pages/Home/index.tsx 33.3% 0%
src/pages/Home/loader.ts 100%
src/pages/Product/index.tsx 15% 0%
src/pages/Product/loader.ts 75%
src/pages/Products/index.tsx 81.8% 0%
src/pages/Products/loader.ts 100%
src/pages/router.tsx 0%
src/pages/SignIn/index.tsx 100%

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@bartstc
bartstc merged commit 792e675 into core Jul 28, 2026
15 of 16 checks passed
@bartstc
bartstc deleted the chore/major-dep-upgrades branch July 28, 2026 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant