role attributes completely override native element semantics.
role
<h1 role="button" tabindex="0">Test 1</h1>
<h1><span role="button" tabindex="0">Test 2</span></h1>
<h1><button>Test 3</button></h1>