In Safari, if you have the default tab stop settings (ie, you have not checked "Press tab to highlight each item on a webpage", you will not get a tab stop on an <a> tag that has a role="button". However, Voiceover correctly announces this as a button element. If you have a div with a role="button" you do get a tab stop, so it seems that whatever heuristic is being used preferences the tag over the role, even though the role override is what's used in the accessibility tree. I made a small codepen to demonstrate and test this behavior: https://codepen.io/kaylee42/pen/ZEJyQpq
<rdar://problem/84717210>