@@ -384,6 +384,65 @@ describe("Form Runtime with Date Picker", () => {
384384 } ) ;
385385 } )
386386
387+ it ( "should have only one calendar icon per datepicker component" , ( ) => {
388+ const [ datePicker7 , datePicker7FieldView ] = Object . entries ( formContainer . _fields ) [ 6 ] ;
389+
390+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . should ( "have.length" , 1 ) ;
391+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . focus ( ) . blur ( ) . focus ( ) . blur ( ) ;
392+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . should ( "have.length" , 1 ) ;
393+ } ) ;
394+
395+ it ( "should open datepicker calendar when Enter key is pressed on calendar icon" , ( ) => {
396+ const [ datePicker7 , datePicker7FieldView ] = Object . entries ( formContainer . _fields ) [ 6 ] ;
397+
398+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . focus ( ) . type ( "{enter}" ) ;
399+ cy . get ( ".datetimepicker" ) . should ( "be.visible" ) ;
400+ cy . get ( "body" ) . click ( 10 , 10 ) ;
401+ cy . get ( ".datetimepicker" ) . should ( "not.be.visible" ) ;
402+ } ) ;
403+
404+ it ( "should open datepicker calendar when Space key is pressed on calendar icon" , ( ) => {
405+ const [ datePicker7 , datePicker7FieldView ] = Object . entries ( formContainer . _fields ) [ 6 ] ;
406+
407+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . focus ( ) . type ( " " ) ;
408+ cy . get ( ".datetimepicker" ) . should ( "be.visible" ) ;
409+ cy . get ( "body" ) . type ( "{esc}" ) ;
410+ cy . get ( ".datetimepicker" ) . should ( "not.be.visible" ) ;
411+ } ) ;
412+
413+ it ( "should handle keyboard accessibility with custom display formats" , ( ) => {
414+ const [ datePicker7 , datePicker7FieldView ] = Object . entries ( formContainer . _fields ) [ 6 ] ;
415+
416+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . should ( "have.attr" , "type" , "text" ) ; // Custom format uses text input
417+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . should ( "have.attr" , "tabindex" , "0" ) ;
418+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . focus ( ) . tab ( ) ;
419+ cy . focused ( ) . should ( "have.class" , "cmp-adaptiveform-datepicker__calendar-icon" ) ;
420+ cy . focused ( ) . type ( "{enter}" ) ;
421+ cy . get ( ".datetimepicker" ) . should ( "be.visible" ) ;
422+ cy . get ( "body" ) . type ( "{esc}" ) ;
423+ cy . get ( ".datetimepicker" ) . should ( "not.be.visible" ) ;
424+ } ) ;
425+
426+ it ( "should prevent calendar icon duplication during component re-initialization" , ( ) => {
427+ const [ datePicker7 , datePicker7FieldView ] = Object . entries ( formContainer . _fields ) [ 6 ] ;
428+
429+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . should ( "have.length" , 1 ) ;
430+
431+ const testDate = "15/08/2023" ;
432+
433+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . clear ( ) . type ( testDate ) ;
434+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . focus ( ) . blur ( ) . focus ( ) . blur ( ) ;
435+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . click ( ) ;
436+ cy . get ( ".datetimepicker" ) . should ( "be.visible" ) ;
437+ cy . get ( "body" ) . click ( 10 , 10 ) ;
438+ cy . get ( ".datetimepicker" ) . should ( "not.be.visible" ) ;
439+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . clear ( ) ;
440+ cy . get ( `#${ datePicker7 } ` ) . find ( "input" ) . focus ( ) . blur ( ) ;
441+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . should ( "have.length" , 1 ) ;
442+ cy . get ( `#${ datePicker7 } ` ) . find ( ".cmp-adaptiveform-datepicker__calendar-icon" ) . focus ( ) . type ( "{enter}" ) ;
443+ cy . get ( ".datetimepicker" ) . should ( "be.visible" ) ;
444+ cy . get ( "body" ) . type ( "{esc}" ) ;
445+
387446 // Mobile Touch Functionality Tests
388447 describe ( "Mobile Touch Functionality" , ( ) => {
389448 beforeEach ( ( ) => {
0 commit comments