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)" : ""}${ // 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