@@ -116,4 +116,68 @@ describe('Dialog', () => {
116116 false
117117 ) ;
118118 } ) ;
119+
120+ test ( 'Should render header without heading attributes when headingLevel is undefined' , ( ) => {
121+ wrapper . setProps ( {
122+ visible : true ,
123+ header,
124+ body,
125+ // headingLevel is undefined by default
126+ } ) ;
127+
128+ // Find the header span element
129+ const headerSpan = wrapper . find ( '.header span' ) . first ( ) ;
130+
131+ // Should not have role="heading" or aria-level attributes when headingLevel is undefined
132+ expect ( headerSpan . prop ( 'role' ) ) . toBeUndefined ( ) ;
133+ expect ( headerSpan . prop ( 'aria-level' ) ) . toBeUndefined ( ) ;
134+ } ) ;
135+
136+ test ( 'Should render header with heading attributes when headingLevel is provided' , ( ) => {
137+ wrapper . setProps ( {
138+ visible : true ,
139+ header,
140+ body,
141+ headingLevel : 2 ,
142+ } ) ;
143+
144+ // Find the header span element
145+ const headerSpan = wrapper . find ( '.header span' ) . first ( ) ;
146+
147+ // Should have role="heading" and aria-level attributes when headingLevel is provided
148+ expect ( headerSpan . prop ( 'role' ) ) . toBe ( 'heading' ) ;
149+ expect ( headerSpan . prop ( 'aria-level' ) ) . toBe ( 2 ) ;
150+ } ) ;
151+
152+ test ( 'Should not apply heading attributes when header is not provided even if headingLevel is set' , ( ) => {
153+ wrapper . setProps ( {
154+ visible : true ,
155+ // No header prop
156+ body,
157+ headingLevel : 3 ,
158+ } ) ;
159+
160+ // Find the header span element
161+ const headerSpan = wrapper . find ( '.header span' ) . first ( ) ;
162+
163+ // Should not have heading attributes when header prop is not provided
164+ expect ( headerSpan . prop ( 'role' ) ) . toBeUndefined ( ) ;
165+ expect ( headerSpan . prop ( 'aria-level' ) ) . toBeUndefined ( ) ;
166+ } ) ;
167+
168+ test ( 'Should handle headingLevel of 0 correctly' , ( ) => {
169+ wrapper . setProps ( {
170+ visible : true ,
171+ header,
172+ body,
173+ headingLevel : 0 , // Edge case: headingLevel is 0 (falsy but valid)
174+ } ) ;
175+
176+ // Find the header span element
177+ const headerSpan = wrapper . find ( '.header span' ) . first ( ) ;
178+
179+ // Should still apply heading attributes when headingLevel is 0 (since !== undefined)
180+ expect ( headerSpan . prop ( 'role' ) ) . toBe ( 'heading' ) ;
181+ expect ( headerSpan . prop ( 'aria-level' ) ) . toBe ( 0 ) ;
182+ } ) ;
119183} ) ;
0 commit comments