Ideally, a text element should not be coded as both a
<label> and a heading, since the content introduced by the
<label> is inherently programmatically related. However, if you do have a form field
<label> coded as a heading, it is not a WCAG failure as long as the heading role is still properly communicated to the accessibility tree.
If there is no
<label> element for a particular form field, but a heading element functions as the visible label, then you should use the
aria-labelledby attribute to ensure the heading is programmatically related to the field it describes.
For a more in-depth look at building accessible forms, explore the "Forms: Labels, Cues, and Errors" course from Accessible Web Academy.