Detailed answer
A native button provides an interactive role and expected keyboard behavior.
Give it a meaningful accessible name and visible focus styling. A click handler alone does not make a div equivalent. Use a link when the purpose is navigation. Native controls reduce the amount of custom interaction code that needs testing.
Example
<button type="button" aria-controls="preview">Refresh preview</button>
Understanding the behavior
A native button supplies keyboard activation, focus behavior and button semantics. Recreating those with a div requires several pieces of behavior that are easy to miss. Give the control a name that explains the action and an explicit type inside forms.
Practical implementation notes
Try Tab, Enter and Space. A pointer-only click test misses keyboard failures. If a disabled state is needed, check both how it is communicated and whether the action is actually prevented.
How to check it
Use a native button and test both Enter and Space with a visible focus state.
Expected result
The control offers familiar button behavior without custom keyboard emulation.
Watch out: Adding tabindex alone does not add button activation behavior.
Read the reference ↗