Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

landmark-unique does not reflect latest HTML-role mappings #4460

Closed
1 task done
gabalafou opened this issue May 14, 2024 · 2 comments · Fixed by #4469 · May be fixed by Stanislav1975/sitespeed.io#11, Stanislav1975/sitespeed.io#12 or organich/lighthouse#4
Closed
1 task done
Labels
best practice rules Issue or false result from an axe-core rule standards Issues in the ARIA standards objects (lib/standards)
Milestone

Comments

@gabalafou
Copy link
Contributor

Product

axe Extension

Product Version

4.79.3

Latest Version

  • I have tested the issue with the latest version of the product

Issue Description

Note: I wrote up this issue based on the browser extension, but I also checked that this issue holds with the newer axe-core 4.9.1 using @axe-core/cli.

Expectation

The following URL should have zero landmark-unique violations:
https://pydata-sphinx-theme.readthedocs.io/en/latest/examples/kitchen-sink/generic.html

Actual

Axe finds several landmark-unique violations at the above URL.

These landmark-unique violations are for several <aside> tags on that page that are actually not represented by the latest browsers as role=complementary landmarks.

How to Reproduce

Using:

  • Chromium 124
  • axe DevTools v4.79.3 (axe-core 4.8.4)

Scan the following URL:
https://pydata-sphinx-theme.readthedocs.io/en/latest/examples/kitchen-sink/generic.html

Observe that the tool reports several instances of the landmark-unique violation.

Additional context

The latest browsers follow the HTML-role mapping specification and do not assign role=complementary to unnamed <aside> tags that are scoped to a sectioning content element (section 3.4.9).

But apparently Axe-core treats all <aside> tags in the document as landmarks, which triggers the landmark-unique violation.

For more context:

@gabalafou gabalafou added the ungroomed Ticket needs a maintainer to prioritize and label label May 14, 2024
@github-actions github-actions bot added the extension Axe Firefox or Chrome extension issues label May 14, 2024
@WilcoFiers
Copy link
Contributor

@gabalafou Thank you for reporting. I agree with your findings, and knowing this has been updated in the latest browsers now I see no reason for axe not to do the same thing. I'll add it to the 4.10 milestone. If you're interested, we'd welcome a pull request.

@WilcoFiers WilcoFiers added rules Issue or false result from an axe-core rule best practice standards Issues in the ARIA standards objects (lib/standards) and removed extension Axe Firefox or Chrome extension issues ungroomed Ticket needs a maintainer to prioritize and label labels May 15, 2024
@WilcoFiers WilcoFiers added this to the Axe-core 4.10 milestone May 15, 2024
@gabalafou
Copy link
Contributor Author

I created pull request #4469. This is my first pull request for Axe-core, so I doubt I got everything right

straker added a commit that referenced this issue Jun 4, 2024
Update the landmark-unique rule matcher for aside elements so that they
are treated as landmarks using the same criteria specified in [Sections
3.4.8 and 3.4.9 of the HTML Accessibility API Mappings
1.0](https://w3c.github.io/html-aam/#el-aside-ancestorbodymain).

Closes: #4460

---------

Co-authored-by: Steven Lambert <2433219+straker@users.noreply.github.com>
WilcoFiers added a commit that referenced this issue Jul 29, 2024
##
[4.10.0](v4.9.1...v4.10.0)
(2024-07-29)

### Features

- **new-rule:** summary elements must have an accessible name
([#4511](#4511))
([0d8a99e](0d8a99e)),
closes [#4510](#4510)

### Bug Fixes

- **all-rules:** fix flakey all-rules firefox test
([#4467](#4467))
([3f13aa1](3f13aa1))
- **aria-allowed-attr:** allow aria-multiline=false for element with
contenteditable
([#4537](#4537))
([f019068](f019068))
- **aria-allowed-attr:** allow aria-required=false when normally not
allowed ([#4532](#4532))
([2e242e1](2e242e1))
- **aria-prohibited-attr:** allow aria-label/ledby on decendants of
widget ([#4541](#4541))
([07c5d91](07c5d91))
- **aria-roledescription:** keep disabled with { runOnly: 'wcag2a' }
([#4526](#4526))
([5b4cb9d](5b4cb9d)),
closes [#4523](#4523)
- **autocomplete-valid:** incomplete for invalid but safe values
([#4500](#4500))
([e31a974](e31a974)),
closes [#4492](#4492)
- **build:** limit locales to valid files when using the --all-lang
option ([#4486](#4486))
([d3db593](d3db593)),
closes [#4485](#4485)
- colorio.js patch mocking CSS
([#4456](#4456))
([3ef9353](3ef9353)),
closes [#4400](#4400)
- correct typos in texts
([#4499](#4499))
([11fad59](11fad59))
- **landmark-unique:** follow spec, aside -> landmark
([#4469](#4469))
([e32f803](e32f803)),
closes [#4460](#4460)
- **required-attr:** allow aria-valuetext on slider instead of valuenow
([#4518](#4518))
([135898b](135898b)),
closes [#4515](#4515)

This PR was opened by a robot 🤖 🎉
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment