One <div> with role="separator". It has no tab stop, no state and no keyboard behavior, so the work is deciding what that one element says, and to whom.
- The role cannot be changed. A role you pass is overwritten without a warning. If you need different semantics, use a different element.
- Other attributes reach the element: id, aria-hidden, aria-label and data-*.
- With a title, the text sits inside the separator, in reading order, between the two things it divides.
- Screen readers differ in how much of a separator they announce, and some skip it. Never rely on it to tell the reader something.