Skip to content

role="separator" is not a valid list child #829

@angelikatyborska

Description

@angelikatyborska

Elements with role separator are not valid children of lists (ul, ol).

I found this issue while working on #414:

    Expected the HTML found at $('.u-list-none:nth-child(2)') to have no violations:
    <ul class="u-list-none">

    Received:
    <ul> and <ol> must only directly contain <li>, <script> or <template> elements (list)

    Fix all of the following:
      List element has direct children that are not allowed: [role=separator]

    You can find more information on this issue here:
    https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI

I saw that the documentation recommends adding <li role="separator"></li> as list children in dropdown menus. See screenshot:

Screenshot 2024-08-19 at 13-25-01 Atoms _ Dropdown _ Overview - Page ⋅ Storybook

I believe the semantically correct way of providing a visual separator between list elements would be to split content into two separate lists and style them accordingly, for example:

<div class="list-group">
  <ul>
    <li>..</li>
  </ul>
  <ul>
    <li>..</li>
  </ul>
</div>
.list-group *:is(ul, ol):not(:last-child)::after {
  // add some whitespace and a visual line
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions