roleInfo.jsの件
https://github.com/oxc-project/oxc/pull/14922#issuecomment-3703276838
https://github.com/w3c/aria/issues/2445
ESLintやMarkuplint、a11y visuallizer、playwright、testing-libraryなどではそれぞれ独自にroleやaria-属性の定義を持っている。これらは完全に独自に定義しているものもあれば、仕様書からクロールしてきたり、aria-queryというライブラリから情報を取得しているものもある。
しかし、これだと最新のものに追従するのが大変だったり、クロールも仕様書の構造に依存してしまっていたりして、ライブラリ間で一貫性もなくなってしまっている。
Oxcでは一度aria-queryから情報を取得しようとしていたけど、メンテナンス上の問題などから見送ることになった。
そこで、ARIA WGが既に持っているroleInfo.jsというJSファイルにあるオブジェクトを活用していきたいという話が出ている。
これはroleに対して、それが取ることのできるaria-属性や親roleなどの情報を保持しているファイルである。
https://github.com/w3c/aria/blob/0b404122916a200cb397b5fc206c97446ea7a554/common/script/roleInfo.js
しかし、メンテナンスが十分にされていなかったり、roleだけなのでHTML要素に対するroleのマッピングや、各aria-属性が取ることができる値の一覧などの情報はない。
これらはおそらく今後のARIA Editors Meetingで議論されるのだろうが、元IssueがLazybirdのメンテナーから出されたものであったように、使う側の意見が大事な部分になってくる。
なので、上で挙げたようなライブラリのメンテナーが、どのような情報がほしいかというのを要望として提示するのが好ましい。
「こういうライブラリで独自定義されてしまっている」というのをARIA WG側に送り、Oxc側には「roleInfo.jsというのがあるから使うのを検討してみるといい&足りないものはフィードバックを送るのがよさそう」というのを送っておいた。
AAMもJSON化していそう。
Experiment with JSON to generate Core-AAM mapping tables by spectranaut · Pull Request #2744 · w3c/aria
メンテの問題とは?
そもそもなんの用途で存在しているのか?
HTMLのこういうデータが実はあったりするのか
以前議論があったかどうか
core-aamがどういう流れで作ってるのか
進んでるので様子見かも
continue aria.js work · Issue #2501 · w3c/aria
Oxc適用メモ
is_abstract_role
abstractかどうかの情報がroleInfoにない
is_interactive_element
is_interactive_roleから計算するようにするので、このままでOK
is_interactive_role
INTERACTIVE_ROLESとNON_INTERACTIVE_ROLESを修正後のWIDGET_DESCENDANT_ROLESとNON_WIDGET_DESCENDANT_ROLESはroleInfoのparentRolesを遡ってwidget roleが含まれているかどうかで分かる
ELEMENT_ROLE_MAP
html-ariaの情報がないのでできない
aria-proptypes
aria-属性に対して、値がどのような形式を取るか
roleInfoにはないが、ariaの仕様書のCharacteristicsテーブルのValueの行にあるものを使える
VALID_AUTOCOMPLETE_VALUES
HTMLの仕様から取ってるかも?
role-has-required-aria-prop
roleInfoで取れる
requiredフラグがある
role-supports-aria-props
これも取れる