@@ -3794,6 +3794,54 @@ describe("DatePicker", () => {
37943794    } ) ; 
37953795  } ) ; 
37963796
3797+   describe ( "Calendar Header Accessibility" ,  ( )  =>  { 
3798+     it ( "renders day names with sr-only full weekday and visible short name" ,  ( )  =>  { 
3799+       const  {  container }  =  render ( < DatePicker  /> ) ; 
3800+       const  input  =  safeQuerySelector ( container ,  "input" ) ; 
3801+       fireEvent . focus ( input ) ; 
3802+ 
3803+       const  headers  =  container . querySelectorAll ( 
3804+         '.react-datepicker__day-names > [role="columnheader"]' , 
3805+       ) ; 
3806+       expect ( headers . length ) . toBe ( 7 ) ; 
3807+ 
3808+       headers . forEach ( ( header )  =>  { 
3809+         // Should have a visually hidden span with the full weekday name 
3810+         const  srOnly  =  header . querySelector ( ".sr-only" ) ; 
3811+         expect ( srOnly ) . toBeTruthy ( ) ; 
3812+         expect ( srOnly ?. textContent ?. length ) . toBeGreaterThan ( 2 ) ; 
3813+ 
3814+         // Should have a visible short name 
3815+         const  visible  =  header . querySelector ( 'span[aria-hidden="true"]' ) ; 
3816+         expect ( visible ) . toBeTruthy ( ) ; 
3817+         expect ( visible ?. textContent ?. length ) . toBeLessThanOrEqual ( 3 ) ; 
3818+       } ) ; 
3819+     } ) ; 
3820+ 
3821+     it ( "renders week number column header with sr-only label and visible #" ,  ( )  =>  { 
3822+       const  {  container }  =  render ( < DatePicker  showWeekNumbers  /> ) ; 
3823+       const  input  =  safeQuerySelector ( container ,  "input" ) ; 
3824+       fireEvent . focus ( input ) ; 
3825+ 
3826+       const  headers  =  container . querySelectorAll ( 
3827+         '.react-datepicker__day-names > [role="columnheader"]' , 
3828+       ) ; 
3829+       expect ( headers . length ) . toBe ( 8 ) ; 
3830+ 
3831+       const  weekNumberHeader  =  headers [ 0 ]  as  Element ; 
3832+       const  srOnly  =  weekNumberHeader . querySelector ( ".sr-only" ) ; 
3833+       expect ( srOnly ) . toBeTruthy ( ) ; 
3834+       expect ( srOnly ?. textContent ?. trim ( ) ?. toLowerCase ( ) ) . toEqual ( "week number" ) ; 
3835+ 
3836+       // Should have a visible short name 
3837+       const  visible  =  weekNumberHeader . querySelector ( 
3838+         'span[aria-hidden="true"]' , 
3839+       ) ; 
3840+       expect ( visible ) . toBeTruthy ( ) ; 
3841+       expect ( visible ?. textContent ?. trim ( ) ?. toLowerCase ( ) ) . toEqual ( "#" ) ; 
3842+     } ) ; 
3843+   } ) ; 
3844+ 
37973845  it ( "should show the correct start of week for GB locale" ,  ( )  =>  { 
37983846    registerLocale ( "en-GB" ,  enGB ) ; 
37993847
0 commit comments