Skip to content

test: Added comprehensive test coverage for Progress, NavigationMenu, Menubar (100%)

Prashanth requested to merge test/contribution5 into test_cases

Overview

This Merge Request adds comprehensive unit test coverage for three shadcn/ui components: Progress, NavigationMenu, and Menubar. The objective of this MR is to improve component reliability and prevent regressions by achieving 100% test coverage without modifying any production source files.

A total of 122 unit tests were added covering component rendering, variant behavior, accessibility attributes, HTML attribute forwarding, styling validation, user interactions, and integration scenarios.


Type of Change

  • Bug Fix
  • Feature Development
  • Documentation
  • Test Update
  • Configuration Change

Testing

  • Tested on desktop
  • Tested on mobile
  • Tested in different browsers (N/A – unit tests)

Test Results

Progress Component: ✓ 20 tests passed
✓ Statements: 100%
✓ Branches: 100%
✓ Functions: 100%
✓ Lines: 100%

NavigationMenu Component: ✓ 51 tests passed
✓ Statements: 100%
✓ Branches: 100%
✓ Functions: 100%
✓ Lines: 100%

Menubar Component: ✓ 51 tests passed
✓ Statements: 100%
✓ Branches: 100%
✓ Functions: 100%
✓ Lines: 100%

Total: ✓ 122 tests passing
✓ 100% coverage for progress.tsx, navigation-menu.tsx, and menubar.tsx


Screenshot: Screenshot_from_2026-03-28_11-56-34

Changes Made

Progress Component Tests

File: tests/src/components/ui/progress.test.tsx
Tests Added: 20
Coverage: 100%

Test coverage includes:

✓ Default progress rendering
✓ Custom className merging
✓ Ref forwarding verification
✓ HTML attribute forwarding
✓ Indicator transform behavior for values (0,25,50,75,100)
✓ Undefined/null value handling
✓ Decimal precision handling
✓ ARIA attributes validation
✓ Multiple custom classes
✓ Additional props forwarding


NavigationMenu Component Tests

File: tests/src/components/ui/navigation-menu.test.tsx
Tests Added: 51
Coverage: 100%

Test coverage includes:

✓ navigationMenuTriggerStyle validation
✓ NavigationMenu rendering
✓ NavigationMenuList structure
✓ NavigationMenuTrigger behavior
✓ NavigationMenuContent animations
✓ NavigationMenuLink attributes
✓ NavigationMenuViewport rendering
✓ NavigationMenuIndicator structure
✓ Custom className merging
✓ HTML attribute forwarding
✓ Ref forwarding verification
✓ Click interactions
✓ Disabled state validation
✓ Responsive classes validation
✓ Integration testing
✓ Accessibility testing (ARIA roles)
✓ Keyboard navigation support


Menubar Component Tests

File: tests/src/components/ui/menubar.test.tsx
Tests Added: 51
Coverage: 100%

Test coverage includes:

✓ Menubar rendering validation
✓ Menu structure testing
✓ Trigger focus behavior
✓ Content alignment testing
✓ Item styling validation
✓ Separator rendering
✓ Label inset behavior
✓ Checkbox states testing
✓ Radio group selection testing
✓ Submenu hierarchy
✓ Shortcut styling
✓ Group wrapper validation
✓ Portal rendering
✓ Custom className merging
✓ HTML attribute forwarding
✓ Ref forwarding
✓ Click interactions
✓ Disabled states
✓ Integration testing
✓ Accessibility testing
✓ Keyboard navigation validation


Technical Details

Tech Stack:

  • React 18 + TypeScript
  • Vitest
  • React Testing Library
  • user-event
  • Radix UI
  • Lucide Icons
  • Tailwind CSS
  • class-variance-authority

Testing practices used:

✓ Component rendering validation
✓ DOM assertions
✓ Accessibility testing
✓ Ref forwarding validation
✓ Class merging validation
✓ Integration testing
✓ Edge case testing
✓ User interaction simulation
✓ State validation testing


Commands Used for Verification

Run coverage:

npm run test:coverage

Run tests UI:

npm run test:ui

Run lint:

npm run lint

Run type check:

npm run type-check

Run formatting check:

npm run format:check

Full CI verification:

npm run ci-local


Files Changed

tests/src/components/ui/progress.test.tsx → Added 20 tests
tests/src/components/ui/navigation-menu.test.tsx → Added 51 tests
tests/src/components/ui/menubar.test.tsx → Added 51 tests

No files inside src/components/ui were modified.


Checklist

  • Tests pass locally
  • 100% coverage achieved
  • ESLint passes
  • TypeScript checks pass
  • Prettier formatting applied
  • Build passes successfully
  • No breaking changes introduced
  • Accessibility scenarios tested
  • No production code modified

Notes

• 122 tests added across 3 components
• 100% coverage achieved
• No source code modifications (only test files added)
• Tests follow project conventions
• Edge cases covered
• No skipped tests
• No fake assertions
• Improves maintainability
• Reduces regression risk
• Accessibility validation included
• User interaction testing implemented Closes #270 (closed)

Edited by Prashanth

Merge request reports

Loading