From 5e78491cfd15365b83799cebd6184e8ca7ca633e Mon Sep 17 00:00:00 2001
From: Peter Krautzberger
Date: Sun, 19 Apr 2026 20:28:56 +0200
Subject: [PATCH 1/2] editorial: [aria.js] generate roleInfo after respec runs
Rewrites buildRoleInfo.js to make it independent of aria.js
by using the "compiled" specification (after respec runs).
Note: adds several hacks to keep bugs alive (to simplify review).
- .github/worflows/roleInfo.yml
- run on gh-pages pushes (to get latest respec result)
- checkout main
- checkout index.html from gh-pages (to get latest respec result)
- simplify buildRoleInfo.js call
- add reset of index.html
- common/script/ariaPreprocessing.js
- duplicate prohibited and deprecated status for global properties
on list items to preserve it after resolveReferences removes
*ref elements.
- common/script/buildRoleInfo.js
- complete rewrite to run independently from aria.js
- collects states&props
- loops through role sections and processes the characteristics tables
- NOTE: several hacks to recreate bugs (to simplify review)
- common/script/roleInfo.js
- regenerate for review
- all changes are either
- removal of duplicates
- change of position
Part of #2501
---
.github/workflows/roleInfo.yml | 7 +-
common/script/ariaPreprocessing.js | 2 +-
common/script/buildRoleInfo.js | 158 +++-
common/script/roleInfo.js | 1359 ++++------------------------
4 files changed, 311 insertions(+), 1215 deletions(-)
diff --git a/.github/workflows/roleInfo.yml b/.github/workflows/roleInfo.yml
index 657adbe63..8b55c32bb 100644
--- a/.github/workflows/roleInfo.yml
+++ b/.github/workflows/roleInfo.yml
@@ -3,7 +3,7 @@ name: roleInfo update
on:
push:
branches:
- - main
+ - gh-pages
jobs:
roleInfo:
@@ -12,6 +12,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v6
with:
+ ref: main
fetch-depth: 0 # Needed to compare with origin/main
token: ${{ secrets.W3CGRUNTBOT_TOKEN }}
- name: Use Node.js
@@ -19,8 +20,10 @@ jobs:
with:
node-version: "latest"
- run: npm i linkedom prettier@3.6.0
- - run: node ./common/script/buildRoleInfo.js > ./common/script/roleInfo.js
+ - run: git checkout gh-pages index.html # checkout (respec'ed) aria spec from gh-pages (WARNING: changes get staged!)
+ - run: node ./common/script/buildRoleInfo.js # build roleInfo.js
- run: npx prettier --write --print-width 200 ./common/script/roleInfo.js
+ - run: git reset index.html # reset spec source (to avoid comittting, cf. wanrning above)
- run: git config user.name "github-actions[bot]"
- run: git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- run: git add ./common/script/roleInfo.js
diff --git a/common/script/ariaPreprocessing.js b/common/script/ariaPreprocessing.js
index 19c2d2ec0..da12a2f22 100644
--- a/common/script/ariaPreprocessing.js
+++ b/common/script/ariaPreprocessing.js
@@ -15,7 +15,7 @@ const buildGlobalStatesAndPropertiesLists = (globalStatesPlaceholder, roletypePr
if (!(isDefault || isProhibited || isDeprecated)) return;
const isState = def.tagName === "SDEF";
const refTagName = isState ? "sref" : "pref";
- const htmlString = `<${refTagName} ${isProhibited ? "data-prohibited " : ""}${isDeprecated ? "data-deprecated " : ""}${
+ const htmlString = `<${refTagName} ${isProhibited ? "data-prohibited " : ""}${isDeprecated ? "data-deprecated " : ""}${
isState ? `title="${def.innerHTML}"` : ""
}>${def.innerHTML}${isState ? " (state)" : ""}${refTagName}>${
// TODO: consider moving "(state)" out of sref/pref tag; then maybe remove title attr for sref (after checking resolveReferences interference)
diff --git a/common/script/buildRoleInfo.js b/common/script/buildRoleInfo.js
index 459f562c5..9d394daa3 100644
--- a/common/script/buildRoleInfo.js
+++ b/common/script/buildRoleInfo.js
@@ -1,17 +1,153 @@
-import * as fs from "node:fs";
+import fs from "node:fs";
+import path from "node:path";
+
import { parseHTML } from "linkedom";
+const __dirname = import.meta.dirname;
+
+// NOTE: this script expects compiled respec output (e.g. gh-pages branch).
+// If you are working on this file, you will need to run, e.g. get a copy from gh-pages or
+// run `$ npx respec --src index.html --out index.html`
+const inputFilename = path.resolve('index.html');
+const outputFilename = path.join(__dirname, "roleInfo.js");
+
+const { document } = parseHTML(fs.readFileSync(inputFilename).toString())
+const roleTypeProps = document.querySelector('#roletype .role-properties');
+const statesAndProps = {}
+
+document.querySelectorAll('#states_and_properties :is(.state, .property)').forEach(
+ spSection => {
+ const key = spSection.id;
+ const value = {};
+ statesAndProps[key] = value;
+ value.is = spSection.classList.contains('state') ? 'state' : 'property';
+ value.name = key;
+ value.required = false;
+ value.disallowed = false;
+ value.deprecated = roleTypeProps.querySelector(`[data-deprecated="${key}"]`) ? true : false;
+ // TODO: consider adding value information
+ }
+)
+
+const roleInfo = {};
+
+
+// TODO: remove this HACK (which reproduces most of the current broken state, cf. its use below)
+const currentyBroken = [
+ "alertdialog",
+ "application",
+ "banner",
+ "blockquote",
+ "button",
+ "caption",
+ "code",
+ "columnheader",
+ "combobox",
+ "comment",
+ "complementary",
+ "contentinfo",
+ "definition",
+ "deletion",
+ "directory",
+ "emphasis",
+ "feed",
+ "figure",
+ "form",
+ "generic",
+ "heading",
+ "image",
+ "img",
+ "insertion",
+ "link",
+ "listbox",
+ "log",
+ "main",
+ "mark",
+ "marquee",
+ "math",
+ "menubar",
+ "menuitemcheckbox",
+ "menuitemradio",
+ "meter",
+ "navigation",
+ "none",
+ "note",
+ "paragraph",
+ "presentation",
+ "progressbar",
+ "radio",
+ "radiogroup",
+ "region",
+ "row",
+ "rowgroup",
+ "rowheader",
+ "scrollbar",
+ "search",
+ "searchbox",
+ "sectionfooter",
+ "sectionheader",
+ "separator",
+ "slider",
+ "spinbutton",
+ "strong",
+ "subscript",
+ "suggestion",
+ "superscript",
+ "switch",
+ "tab",
+ "tablist",
+ "tabpanel",
+ "term",
+ "time",
+ "timer",
+ "toolbar",
+ "tooltip",
+ "treegrid",
+ "treeitem"
+]
+
+const generateRoleInfoEntry = (roleSection) => {
+ const key = roleSection.id;
+ const value = {};
+ roleInfo[key] = value;
+ value.name = key;
+ value.fragID = key; //TODO: [minor] is this duplication really worth it? Role names should be valid IDREFS, no?
+ value.parentRoles = [];
+ roleSection.querySelectorAll('.role-parent .role-reference').forEach(node => value.parentRoles.push(node.textContent));
+ value.localprops = [];
+
+ roleSection.querySelectorAll(':is(.role-required-properties, .role-properties, .role-disallowed) :is(.property-reference, .state-reference)').forEach(
+ link => {
+ const name = link.textContent.split(' ')[0]; //TODO: hack because roletype has (state) inside link (as the only role to have that), cf. TODO: in ariaPreprocessing.js
+ const prop = structuredClone(statesAndProps[name]);
+ if (key !== 'roletype') prop.deprecated = false; // TODO: should roletype have deprecated=true when the spec lists everything as supported?
+ if (link.closest('.role-disallowed')) prop["disallowed"] = true;
+ if (link.closest('.role-required-properties')) prop["required"] = true;
+ value.localprops.push(prop);
+ }
+ )
+ // TODO: why localprops separately? (localprops are duplicated in allprops; maybe property)
+
+ value.localprops.sort((a, b) => a.name < b.name);
-const { document } = parseHTML(fs.readFileSync("../aria/index.html").toString());
+ const localPropNames = value.localprops.map(prop => prop.name);
-// mock functions for aria.js
-let updateReferences = () => {};
-document.URL = "";
+ if (currentyBroken.indexOf(key) > -1) return; //TODO: remove this HACK (cf. above)
-const script = fs.readFileSync("./common/script/aria.js").toString();
-const prescript = fs.readFileSync("./common/script/ariaPreprocessing.js").toString();
+ value.allprops = structuredClone(value.localprops); //TODO: why do we duplicate them? Does ariaChild.js need this duplication? (I understand its "allprops" but just "inherited" seems cleaner.)
+ roleSection.querySelectorAll('.role-inherited :is(.property-reference, .state-reference)').forEach(
+ link => {
+ const name = link.textContent.split(' ')[0]; //TODO: hack because roletype has (state) inside link (as the only role to have that), cf. TODO: in ariaPreprocessing.js
+ const prop = structuredClone(statesAndProps[name]);
+ if (localPropNames.indexOf(prop.name) > -1) prop.deprecated = false; // NOTE: ignores the fact that localProps may be disallowed (which is ok at time of writing)
+ if (link.closest('.role-disallowed')) prop["disallowed"] = true;
+ value.allprops.push(prop);
+ }
+ )
+ // TODO: sort value.allprops
+}
-// HACK call ariaPreprocessing(), ariaAttributeReferences(), and log out roleInfo with prefix
-const scriptAddition = 'ariaPreprocessing();ariaAttributeReferences();console.log("/* This file is generated - do not modify */ var roleInfo = "+JSON.stringify(roleInfo, null, 2));';
+document.querySelectorAll('#role_definitions .role').forEach(generateRoleInfoEntry);
-// HACK: eval!
-eval(prescript + script + scriptAddition);
+// sort keys
+const sortKeys = o => Object.keys(o).sort().reduce((r, k) => (r[k] = o[k], r), {});
+fs.writeFileSync(outputFilename, "/* This file is generated - do not modify */ var roleInfo = " + JSON.stringify(sortKeys(roleInfo), null, 2));
diff --git a/common/script/roleInfo.js b/common/script/roleInfo.js
index 937e31edd..89e0bb83b 100644
--- a/common/script/roleInfo.js
+++ b/common/script/roleInfo.js
@@ -862,13 +862,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-atomic",
@@ -946,13 +939,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-flowto",
@@ -981,13 +967,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-keyshortcuts",
@@ -1459,13 +1438,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-dropeffect",
@@ -1634,13 +1606,6 @@
parentRoles: ["window"],
localprops: [],
allprops: [
- {
- is: "property",
- name: "aria-modal",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-atomic",
@@ -1788,6 +1753,13 @@
disallowed: false,
deprecated: false,
},
+ {
+ is: "property",
+ name: "aria-modal",
+ required: false,
+ disallowed: false,
+ deprecated: false,
+ },
{
is: "property",
name: "aria-owns",
@@ -2123,13 +2095,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-atomic",
@@ -2158,6 +2123,13 @@
disallowed: false,
deprecated: false,
},
+ {
+ is: "property",
+ name: "aria-colcount",
+ required: false,
+ disallowed: false,
+ deprecated: false,
+ },
{
is: "property",
name: "aria-controls",
@@ -2298,13 +2270,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-colcount",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-rowcount",
@@ -2312,333 +2277,342 @@
disallowed: false,
deprecated: false,
},
+ ],
+ },
+ gridcell: {
+ name: "gridcell",
+ fragID: "gridcell",
+ parentRoles: ["cell", "widget"],
+ localprops: [
{
- is: "property",
- name: "aria-atomic",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-braillelabel",
+ is: "state",
+ name: "aria-disabled",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-brailleroledescription",
+ name: "aria-errormessage",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "state",
- name: "aria-busy",
+ name: "aria-expanded",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-controls",
+ name: "aria-haspopup",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "state",
- name: "aria-current",
+ name: "aria-invalid",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-describedby",
+ name: "aria-readonly",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-description",
+ name: "aria-required",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "property",
- name: "aria-details",
+ is: "state",
+ name: "aria-selected",
required: false,
disallowed: false,
deprecated: false,
},
+ ],
+ allprops: [
{
is: "state",
name: "aria-disabled",
required: false,
disallowed: false,
- deprecated: true,
+ deprecated: false,
},
{
is: "property",
- name: "aria-dropeffect",
+ name: "aria-errormessage",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "property",
- name: "aria-errormessage",
+ is: "state",
+ name: "aria-expanded",
required: false,
disallowed: false,
- deprecated: true,
+ deprecated: false,
},
{
is: "property",
- name: "aria-flowto",
+ name: "aria-haspopup",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "state",
- name: "aria-grabbed",
+ name: "aria-invalid",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-haspopup",
+ name: "aria-readonly",
required: false,
disallowed: false,
- deprecated: true,
+ deprecated: false,
},
{
- is: "state",
- name: "aria-hidden",
+ is: "property",
+ name: "aria-required",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "state",
- name: "aria-invalid",
+ name: "aria-selected",
required: false,
disallowed: false,
- deprecated: true,
+ deprecated: false,
},
{
is: "property",
- name: "aria-keyshortcuts",
+ name: "aria-atomic",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-label",
+ name: "aria-braillelabel",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-labelledby",
+ name: "aria-brailleroledescription",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "property",
- name: "aria-live",
+ is: "state",
+ name: "aria-busy",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-owns",
+ name: "aria-colindex",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-relevant",
+ name: "aria-colindextext",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-roledescription",
+ name: "aria-colspan",
required: false,
disallowed: false,
deprecated: false,
},
- ],
- },
- gridcell: {
- name: "gridcell",
- fragID: "gridcell",
- parentRoles: ["cell", "widget"],
- localprops: [
{
- is: "state",
- name: "aria-disabled",
+ is: "property",
+ name: "aria-controls",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "property",
- name: "aria-errormessage",
+ is: "state",
+ name: "aria-current",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "state",
- name: "aria-expanded",
+ is: "property",
+ name: "aria-describedby",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-haspopup",
+ name: "aria-description",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "state",
- name: "aria-invalid",
+ is: "property",
+ name: "aria-details",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-readonly",
+ name: "aria-dropeffect",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-required",
+ name: "aria-flowto",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "state",
- name: "aria-selected",
+ name: "aria-grabbed",
required: false,
disallowed: false,
deprecated: false,
},
- ],
- allprops: [
{
is: "state",
- name: "aria-disabled",
+ name: "aria-hidden",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-errormessage",
+ name: "aria-keyshortcuts",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "state",
- name: "aria-expanded",
+ is: "property",
+ name: "aria-label",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-haspopup",
+ name: "aria-labelledby",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "state",
- name: "aria-invalid",
+ is: "property",
+ name: "aria-live",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-readonly",
+ name: "aria-owns",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-required",
+ name: "aria-relevant",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "state",
- name: "aria-selected",
+ is: "property",
+ name: "aria-roledescription",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-colindex",
+ name: "aria-rowindex",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-colindextext",
+ name: "aria-rowindextext",
required: false,
disallowed: false,
deprecated: false,
},
{
is: "property",
- name: "aria-colspan",
+ name: "aria-rowspan",
required: false,
disallowed: false,
deprecated: false,
},
+ ],
+ },
+ group: {
+ name: "group",
+ fragID: "group",
+ parentRoles: ["section"],
+ localprops: [
{
is: "property",
- name: "aria-rowindex",
+ name: "aria-activedescendant",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "property",
- name: "aria-rowindextext",
+ is: "state",
+ name: "aria-disabled",
required: false,
disallowed: false,
deprecated: false,
},
+ ],
+ allprops: [
{
is: "property",
- name: "aria-rowspan",
+ name: "aria-activedescendant",
+ required: false,
+ disallowed: false,
+ deprecated: false,
+ },
+ {
+ is: "state",
+ name: "aria-disabled",
required: false,
disallowed: false,
deprecated: false,
@@ -2706,13 +2680,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-dropeffect",
@@ -2811,390 +2778,17 @@
disallowed: false,
deprecated: false,
},
+ ],
+ },
+ heading: {
+ name: "heading",
+ fragID: "heading",
+ parentRoles: ["sectionhead"],
+ localprops: [
{
is: "property",
- name: "aria-atomic",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-braillelabel",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-brailleroledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-busy",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-controls",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-current",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-describedby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-description",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-details",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-dropeffect",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-flowto",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-grabbed",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "state",
- name: "aria-hidden",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-keyshortcuts",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-label",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-labelledby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-live",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-owns",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-relevant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-roledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- ],
- },
- group: {
- name: "group",
- fragID: "group",
- parentRoles: ["section"],
- localprops: [
- {
- is: "property",
- name: "aria-activedescendant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- ],
- allprops: [
- {
- is: "property",
- name: "aria-activedescendant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-atomic",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-braillelabel",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-brailleroledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-busy",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-controls",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-current",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-describedby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-description",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-details",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-dropeffect",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-flowto",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-grabbed",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "state",
- name: "aria-hidden",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-keyshortcuts",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-label",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-labelledby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-live",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-owns",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-relevant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-roledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- ],
- },
- heading: {
- name: "heading",
- fragID: "heading",
- parentRoles: ["sectionhead"],
- localprops: [
- {
- is: "property",
- name: "aria-level",
- required: true,
+ name: "aria-level",
+ required: true,
disallowed: false,
deprecated: false,
},
@@ -3296,13 +2890,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-dropeffect",
@@ -4096,225 +3683,29 @@
disallowed: true,
deprecated: false,
},
- ],
- },
- marquee: {
- name: "marquee",
- fragID: "marquee",
- parentRoles: ["section"],
- localprops: [],
- },
- math: {
- name: "math",
- fragID: "math",
- parentRoles: ["section"],
- localprops: [],
- },
- menu: {
- name: "menu",
- fragID: "menu",
- parentRoles: ["select"],
- localprops: [],
- allprops: [
- {
- is: "property",
- name: "aria-orientation",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-activedescendant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-atomic",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-braillelabel",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-brailleroledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-busy",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-controls",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-current",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-describedby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-description",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-details",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-dropeffect",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-flowto",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-grabbed",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "state",
- name: "aria-hidden",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-keyshortcuts",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-label",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-labelledby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-live",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-owns",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-relevant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-roledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-activedescendant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
+ ],
+ },
+ marquee: {
+ name: "marquee",
+ fragID: "marquee",
+ parentRoles: ["section"],
+ localprops: [],
+ },
+ math: {
+ name: "math",
+ fragID: "math",
+ parentRoles: ["section"],
+ localprops: [],
+ },
+ menu: {
+ name: "menu",
+ fragID: "menu",
+ parentRoles: ["select"],
+ localprops: [],
+ allprops: [
{
- is: "state",
- name: "aria-disabled",
+ is: "property",
+ name: "aria-activedescendant",
required: false,
disallowed: false,
deprecated: false,
@@ -4466,6 +3857,13 @@
disallowed: false,
deprecated: false,
},
+ {
+ is: "property",
+ name: "aria-orientation",
+ required: false,
+ disallowed: false,
+ deprecated: false,
+ },
{
is: "property",
name: "aria-owns",
@@ -4635,13 +4033,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-dropeffect",
@@ -4670,13 +4061,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "state",
name: "aria-hidden",
@@ -4887,13 +4271,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-atomic",
@@ -6251,227 +5628,38 @@
disallowed: false,
deprecated: false,
},
- ],
- },
- sectionheader: {
- name: "sectionheader",
- fragID: "sectionheader",
- parentRoles: ["section"],
- localprops: [],
- },
- select: {
- name: "select",
- fragID: "select",
- parentRoles: ["composite", "group"],
- localprops: [
- {
- is: "property",
- name: "aria-orientation",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- ],
- allprops: [
- {
- is: "property",
- name: "aria-orientation",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-activedescendant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-atomic",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-braillelabel",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-brailleroledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-busy",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-controls",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-current",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-describedby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-description",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-details",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-dropeffect",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-flowto",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-grabbed",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "state",
- name: "aria-hidden",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-keyshortcuts",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-label",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-labelledby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-live",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-owns",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-relevant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
+ ],
+ },
+ sectionheader: {
+ name: "sectionheader",
+ fragID: "sectionheader",
+ parentRoles: ["section"],
+ localprops: [],
+ },
+ select: {
+ name: "select",
+ fragID: "select",
+ parentRoles: ["composite", "group"],
+ localprops: [
{
is: "property",
- name: "aria-roledescription",
+ name: "aria-orientation",
required: false,
disallowed: false,
deprecated: false,
},
+ ],
+ allprops: [
{
is: "property",
- name: "aria-activedescendant",
+ name: "aria-orientation",
required: false,
disallowed: false,
deprecated: false,
},
{
- is: "state",
- name: "aria-disabled",
+ is: "property",
+ name: "aria-activedescendant",
required: false,
disallowed: false,
deprecated: false,
@@ -7741,13 +6929,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-atomic",
@@ -7825,13 +7006,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-flowto",
@@ -7846,13 +7020,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "state",
name: "aria-hidden",
@@ -7860,13 +7027,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-keyshortcuts",
@@ -8057,13 +7217,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-orientation",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-activedescendant",
@@ -8071,13 +7224,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
{
is: "property",
name: "aria-atomic",
@@ -8155,13 +7301,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-flowto",
@@ -8190,13 +7329,6 @@
disallowed: false,
deprecated: false,
},
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
{
is: "property",
name: "aria-keyshortcuts",
@@ -8227,182 +7359,7 @@
},
{
is: "property",
- name: "aria-owns",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-relevant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-roledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-activedescendant",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-atomic",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-braillelabel",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-brailleroledescription",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-busy",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-controls",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-current",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-describedby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-description",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-details",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-disabled",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-dropeffect",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-errormessage",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-flowto",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-grabbed",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-haspopup",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "state",
- name: "aria-hidden",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "state",
- name: "aria-invalid",
- required: false,
- disallowed: false,
- deprecated: true,
- },
- {
- is: "property",
- name: "aria-keyshortcuts",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-label",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-labelledby",
- required: false,
- disallowed: false,
- deprecated: false,
- },
- {
- is: "property",
- name: "aria-live",
+ name: "aria-orientation",
required: false,
disallowed: false,
deprecated: false,
From 89fe9519d9051d27931b5efdeaf9139ac04e9b8f Mon Sep 17 00:00:00 2001
From: Peter Krautzberger
Date: Mon, 20 Apr 2026 09:01:09 +0200
Subject: [PATCH 2/2] editorial: update roleInfoCheck.yml
Remove output hack after rewrite.
---
.github/workflows/roleInfoCheck.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/roleInfoCheck.yml b/.github/workflows/roleInfoCheck.yml
index 1730b06a3..7ac14f065 100644
--- a/.github/workflows/roleInfoCheck.yml
+++ b/.github/workflows/roleInfoCheck.yml
@@ -17,6 +17,6 @@ jobs:
with:
node-version: "latest"
- run: npm i linkedom prettier@3.6.0
- - run: node ./common/script/buildRoleInfo.js > ./common/script/roleInfo.js
+ - run: node ./common/script/buildRoleInfo.js
- run: npx prettier --write --print-width 200 ./common/script/roleInfo.js
- run: git diff --exit-code