axe-core 4.10.3-canary.a2e6d10 → 4.10.3-canary.c7e2c1c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/axe.d.ts CHANGED
@@ -408,6 +408,24 @@ declare namespace axe {
408
408
  boundingClientRect: DOMRect;
409
409
  }
410
410
 
411
+ type GridCell = VirtualNode[];
412
+
413
+ interface Grid {
414
+ container: VirtualNode | null;
415
+ cells: unknown; // opaque implementation detail
416
+ boundaries?: DOMRect;
417
+ toGridIndex(num: number): number;
418
+ getCellFromPoint(point: { x: number; y: number }): GridCell;
419
+ loopGridPosition(
420
+ gridPosition: DOMRect,
421
+ callback: (gridCell: GridCell, pos: { row: number; col: number }) => void
422
+ ): void;
423
+ getGridPositionOfRect(
424
+ rect: { top: number; right: number; bottom: number; left: number },
425
+ margin?: number
426
+ ): DOMRect;
427
+ }
428
+
411
429
  interface CustomNodeSerializer<T = SerialDqElement> {
412
430
  toSpec: (dqElm: DqElement) => T;
413
431
  mergeSpecs: (nodeSpec: T, parentFrameSpec: T) => T;
@@ -460,6 +478,7 @@ declare namespace axe {
460
478
  interface Dom {
461
479
  isFocusable: (node: Element | VirtualNode) => boolean;
462
480
  isNativelyFocusable: (node: Element | VirtualNode) => boolean;
481
+ getNodeGrid: (node: Node | VirtualNode) => Grid;
463
482
  }
464
483
 
465
484
  type AccessibleTextOptions = {
package/axe.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! axe v4.10.3-canary.a2e6d10
1
+ /*! axe v4.10.3-canary.c7e2c1c
2
2
  * Copyright (c) 2015 - 2025 Deque Systems, Inc.
3
3
  *
4
4
  * Your use of this Source Code Form is subject to the terms of the Mozilla Public
@@ -22,7 +22,7 @@
22
22
  }, _typeof(o);
23
23
  }
24
24
  var axe = axe || {};
25
- axe.version = '4.10.3-canary.a2e6d10';
25
+ axe.version = '4.10.3-canary.c7e2c1c';
26
26
  if (typeof define === 'function' && define.amd) {
27
27
  define('axe-core', [], function() {
28
28
  return axe;
@@ -8975,6 +8975,9 @@
8975
8975
  getModalDialog: function getModalDialog() {
8976
8976
  return get_modal_dialog_default;
8977
8977
  },
8978
+ getNodeGrid: function getNodeGrid() {
8979
+ return _getNodeGrid;
8980
+ },
8978
8981
  getOverflowHiddenAncestors: function getOverflowHiddenAncestors() {
8979
8982
  return get_overflow_hidden_ancestors_default;
8980
8983
  },
@@ -9956,15 +9959,19 @@
9956
9959
  callback(matrix[index], index + matrix._negativeIndex);
9957
9960
  }
9958
9961
  }
9962
+ function _getNodeGrid(node) {
9963
+ _createGrid();
9964
+ var _nodeLookup3 = _nodeLookup(node), vNode = _nodeLookup3.vNode;
9965
+ return vNode._grid;
9966
+ }
9959
9967
  function _findNearbyElms(vNode) {
9960
- var _vNode$_grid2;
9968
+ var _grid$cells;
9961
9969
  var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
9962
- _createGrid();
9963
- if (!((_vNode$_grid2 = vNode._grid) !== null && _vNode$_grid2 !== void 0 && (_vNode$_grid2 = _vNode$_grid2.cells) !== null && _vNode$_grid2 !== void 0 && _vNode$_grid2.length)) {
9970
+ var grid = _getNodeGrid(vNode);
9971
+ if (!(grid !== null && grid !== void 0 && (_grid$cells = grid.cells) !== null && _grid$cells !== void 0 && _grid$cells.length)) {
9964
9972
  return [];
9965
9973
  }
9966
9974
  var rect = vNode.boundingClientRect;
9967
- var grid = vNode._grid;
9968
9975
  var selfIsFixed = hasFixedPosition(vNode);
9969
9976
  var gridPosition = grid.getGridPositionOfRect(rect, margin);
9970
9977
  var neighbors = [];
@@ -10090,7 +10097,7 @@
10090
10097
  return allowedDisabledNodeNames.includes(nodeName2);
10091
10098
  }
10092
10099
  function focusDisabled(el) {
10093
- var _nodeLookup3 = _nodeLookup(el), vNode = _nodeLookup3.vNode;
10100
+ var _nodeLookup4 = _nodeLookup(el), vNode = _nodeLookup4.vNode;
10094
10101
  if (isDisabledAttrAllowed(vNode.props.nodeName) && vNode.hasAttr('disabled') || _isInert(vNode)) {
10095
10102
  return true;
10096
10103
  }
@@ -10288,13 +10295,12 @@
10288
10295
  return stack;
10289
10296
  }
10290
10297
  function getElementStack(node) {
10291
- _createGrid();
10292
- var vNode = get_node_from_tree_default(node);
10293
- var grid = vNode._grid;
10298
+ var grid = _getNodeGrid(node);
10294
10299
  if (!grid) {
10295
10300
  return [];
10296
10301
  }
10297
- return getRectStack(grid, vNode.boundingClientRect);
10302
+ var rect = get_node_from_tree_default(node).boundingClientRect;
10303
+ return getRectStack(grid, rect);
10298
10304
  }
10299
10305
  var get_element_stack_default = getElementStack;
10300
10306
  function getTabbableElements(virtualNode) {
@@ -10308,7 +10314,7 @@
10308
10314
  }
10309
10315
  var get_tabbable_elements_default = getTabbableElements;
10310
10316
  function isNativelyFocusable(el) {
10311
- var _nodeLookup4 = _nodeLookup(el), vNode = _nodeLookup4.vNode;
10317
+ var _nodeLookup5 = _nodeLookup(el), vNode = _nodeLookup5.vNode;
10312
10318
  if (!vNode || focus_disabled_default(vNode)) {
10313
10319
  return false;
10314
10320
  }
@@ -10336,7 +10342,7 @@
10336
10342
  }
10337
10343
  var is_natively_focusable_default = isNativelyFocusable;
10338
10344
  function _isFocusable(el) {
10339
- var _nodeLookup5 = _nodeLookup(el), vNode = _nodeLookup5.vNode;
10345
+ var _nodeLookup6 = _nodeLookup(el), vNode = _nodeLookup6.vNode;
10340
10346
  if (vNode.props.nodeType !== 1) {
10341
10347
  return false;
10342
10348
  }
@@ -10349,7 +10355,7 @@
10349
10355
  return tabindex !== null;
10350
10356
  }
10351
10357
  function _isInTabOrder(el) {
10352
- var _nodeLookup6 = _nodeLookup(el), vNode = _nodeLookup6.vNode;
10358
+ var _nodeLookup7 = _nodeLookup(el), vNode = _nodeLookup7.vNode;
10353
10359
  if (vNode.props.nodeType !== 1) {
10354
10360
  return false;
10355
10361
  }
@@ -10491,7 +10497,7 @@
10491
10497
  var accessible_text_default = accessibleText;
10492
10498
  function arialabelledbyText(element) {
10493
10499
  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10494
- var _nodeLookup7 = _nodeLookup(element), vNode = _nodeLookup7.vNode;
10500
+ var _nodeLookup8 = _nodeLookup(element), vNode = _nodeLookup8.vNode;
10495
10501
  if ((vNode === null || vNode === void 0 ? void 0 : vNode.props.nodeType) !== 1) {
10496
10502
  return '';
10497
10503
  }
@@ -10515,7 +10521,7 @@
10515
10521
  }
10516
10522
  var arialabelledby_text_default = arialabelledbyText;
10517
10523
  function _arialabelText(element) {
10518
- var _nodeLookup8 = _nodeLookup(element), vNode = _nodeLookup8.vNode;
10524
+ var _nodeLookup9 = _nodeLookup(element), vNode = _nodeLookup9.vNode;
10519
10525
  if ((vNode === null || vNode === void 0 ? void 0 : vNode.props.nodeType) !== 1) {
10520
10526
  return '';
10521
10527
  }
@@ -12538,9 +12544,9 @@
12538
12544
  }
12539
12545
  var get_cell_position_default = memoize_default(getCellPosition);
12540
12546
  function _getScope(el) {
12541
- var _nodeLookup9 = _nodeLookup(el), vNode = _nodeLookup9.vNode, cell = _nodeLookup9.domNode;
12547
+ var _nodeLookup0 = _nodeLookup(el), vNode = _nodeLookup0.vNode, cell = _nodeLookup0.domNode;
12542
12548
  var scope = vNode.attr('scope');
12543
- var role = vNode.attr('role');
12549
+ var role = get_explicit_role_default(vNode);
12544
12550
  if (![ 'td', 'th' ].includes(vNode.props.nodeName)) {
12545
12551
  throw new TypeError('Expected TD or TH element');
12546
12552
  }
@@ -12965,7 +12971,7 @@
12965
12971
  function resolveRole(node) {
12966
12972
  var _ref30 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12967
12973
  var noImplicit = _ref30.noImplicit, roleOptions = _objectWithoutProperties(_ref30, _excluded7);
12968
- var _nodeLookup0 = _nodeLookup(node), vNode = _nodeLookup0.vNode;
12974
+ var _nodeLookup1 = _nodeLookup(node), vNode = _nodeLookup1.vNode;
12969
12975
  if (vNode.props.nodeType !== 1) {
12970
12976
  return null;
12971
12977
  }
@@ -12993,7 +12999,7 @@
12993
12999
  var get_role_default = getRole;
12994
13000
  var alwaysTitleElements = [ 'iframe' ];
12995
13001
  function titleText(node) {
12996
- var _nodeLookup1 = _nodeLookup(node), vNode = _nodeLookup1.vNode;
13002
+ var _nodeLookup10 = _nodeLookup(node), vNode = _nodeLookup10.vNode;
12997
13003
  if (vNode.props.nodeType !== 1 || !node.hasAttr('title')) {
12998
13004
  return '';
12999
13005
  }
@@ -13065,7 +13071,7 @@
13065
13071
  return isVisibleToScreenReadersVirtual(vNode.parent, true);
13066
13072
  });
13067
13073
  function visibleVirtual(element, screenReader, noRecursing) {
13068
- var _nodeLookup10 = _nodeLookup(element), vNode = _nodeLookup10.vNode;
13074
+ var _nodeLookup11 = _nodeLookup(element), vNode = _nodeLookup11.vNode;
13069
13075
  var visibleMethod = screenReader ? _isVisibleToScreenReaders : _isVisibleOnScreen;
13070
13076
  var visible2 = !element.actualNode || element.actualNode && visibleMethod(element);
13071
13077
  var result = vNode.children.map(function(child) {
@@ -13144,14 +13150,14 @@
13144
13150
  return valueString;
13145
13151
  }
13146
13152
  function nativeTextboxValue(node) {
13147
- var _nodeLookup11 = _nodeLookup(node), vNode = _nodeLookup11.vNode;
13153
+ var _nodeLookup12 = _nodeLookup(node), vNode = _nodeLookup12.vNode;
13148
13154
  if (is_native_textbox_default(vNode)) {
13149
13155
  return vNode.props.value || '';
13150
13156
  }
13151
13157
  return '';
13152
13158
  }
13153
13159
  function nativeSelectValue(node) {
13154
- var _nodeLookup12 = _nodeLookup(node), vNode = _nodeLookup12.vNode;
13160
+ var _nodeLookup13 = _nodeLookup(node), vNode = _nodeLookup13.vNode;
13155
13161
  if (!is_native_select_default(vNode)) {
13156
13162
  return '';
13157
13163
  }
@@ -13167,7 +13173,7 @@
13167
13173
  }).join(' ') || '';
13168
13174
  }
13169
13175
  function ariaTextboxValue(node) {
13170
- var _nodeLookup13 = _nodeLookup(node), vNode = _nodeLookup13.vNode, domNode = _nodeLookup13.domNode;
13176
+ var _nodeLookup14 = _nodeLookup(node), vNode = _nodeLookup14.vNode, domNode = _nodeLookup14.domNode;
13171
13177
  if (!is_aria_textbox_default(vNode)) {
13172
13178
  return '';
13173
13179
  }
@@ -13178,7 +13184,7 @@
13178
13184
  }
13179
13185
  }
13180
13186
  function ariaListboxValue(node, context) {
13181
- var _nodeLookup14 = _nodeLookup(node), vNode = _nodeLookup14.vNode;
13187
+ var _nodeLookup15 = _nodeLookup(node), vNode = _nodeLookup15.vNode;
13182
13188
  if (!is_aria_listbox_default(vNode)) {
13183
13189
  return '';
13184
13190
  }
@@ -13191,7 +13197,7 @@
13191
13197
  return _accessibleTextVirtual(selected[0], context);
13192
13198
  }
13193
13199
  function ariaComboboxValue(node, context) {
13194
- var _nodeLookup15 = _nodeLookup(node), vNode = _nodeLookup15.vNode;
13200
+ var _nodeLookup16 = _nodeLookup(node), vNode = _nodeLookup16.vNode;
13195
13201
  if (!is_aria_combobox_default(vNode)) {
13196
13202
  return '';
13197
13203
  }
@@ -13201,7 +13207,7 @@
13201
13207
  return listbox ? ariaListboxValue(listbox, context) : '';
13202
13208
  }
13203
13209
  function ariaRangeValue(node) {
13204
- var _nodeLookup16 = _nodeLookup(node), vNode = _nodeLookup16.vNode;
13210
+ var _nodeLookup17 = _nodeLookup(node), vNode = _nodeLookup17.vNode;
13205
13211
  if (!is_aria_range_default(vNode) || !vNode.hasAttr('aria-valuenow')) {
13206
13212
  return '';
13207
13213
  }
@@ -13814,9 +13820,7 @@
13814
13820
  return visibleRects;
13815
13821
  }
13816
13822
  function getTextElementStack(node) {
13817
- _createGrid();
13818
- var vNode = get_node_from_tree_default(node);
13819
- var grid = vNode._grid;
13823
+ var grid = _getNodeGrid(node);
13820
13824
  if (!grid) {
13821
13825
  return [];
13822
13826
  }
@@ -13828,7 +13832,7 @@
13828
13832
  var get_text_element_stack_default = getTextElementStack;
13829
13833
  var visualRoles = [ 'checkbox', 'img', 'meter', 'progressbar', 'scrollbar', 'radio', 'slider', 'spinbutton', 'textbox' ];
13830
13834
  function isVisualContent(el) {
13831
- var _nodeLookup17 = _nodeLookup(el), vNode = _nodeLookup17.vNode;
13835
+ var _nodeLookup18 = _nodeLookup(el), vNode = _nodeLookup18.vNode;
13832
13836
  var role = axe.commons.aria.getExplicitRole(vNode);
13833
13837
  if (role) {
13834
13838
  return visualRoles.indexOf(role) !== -1;
@@ -13896,7 +13900,7 @@
13896
13900
  }
13897
13901
  var inserted_into_focus_order_default = insertedIntoFocusOrder;
13898
13902
  function isHiddenWithCSS(el, descendentVisibilityValue) {
13899
- var _nodeLookup18 = _nodeLookup(el), vNode = _nodeLookup18.vNode, domNode = _nodeLookup18.domNode;
13903
+ var _nodeLookup19 = _nodeLookup(el), vNode = _nodeLookup19.vNode, domNode = _nodeLookup19.domNode;
13900
13904
  if (!vNode) {
13901
13905
  return _isHiddenWithCSS(domNode, descendentVisibilityValue);
13902
13906
  }
@@ -20287,8 +20291,8 @@
20287
20291
  if (!cell.children.length && !cell.textContent.trim()) {
20288
20292
  return false;
20289
20293
  }
20290
- var role = cell.getAttribute('role');
20291
- if (is_valid_role_default(role)) {
20294
+ var role = get_explicit_role_default(cell);
20295
+ if (role) {
20292
20296
  return [ 'cell', 'gridcell' ].includes(role);
20293
20297
  } else {
20294
20298
  return cell.nodeName.toUpperCase() === 'TD';
@@ -20296,7 +20300,7 @@
20296
20300
  }
20297
20301
  var is_data_cell_default = isDataCell;
20298
20302
  function isDataTable(node) {
20299
- var role = (node.getAttribute('role') || '').toLowerCase();
20303
+ var role = get_explicit_role_default(node);
20300
20304
  if ((role === 'presentation' || role === 'none') && !_isFocusable(node)) {
20301
20305
  return false;
20302
20306
  }
@@ -20340,7 +20344,7 @@
20340
20344
  if (cell.getAttribute('scope') || cell.getAttribute('headers') || cell.getAttribute('abbr')) {
20341
20345
  return true;
20342
20346
  }
20343
- if ([ 'columnheader', 'rowheader' ].includes((cell.getAttribute('role') || '').toLowerCase())) {
20347
+ if ([ 'columnheader', 'rowheader' ].includes(get_explicit_role_default(cell))) {
20344
20348
  return true;
20345
20349
  }
20346
20350
  if (cell.children.length === 1 && cell.children[0].nodeName.toUpperCase() === 'ABBR') {
@@ -20470,52 +20474,6 @@
20470
20474
  }, tableGrid, callback);
20471
20475
  }
20472
20476
  var traverse_default = traverse;
20473
- function thHasDataCellsEvaluate(node) {
20474
- var cells = get_all_cells_default(node);
20475
- var checkResult = this;
20476
- var reffedHeaders = [];
20477
- cells.forEach(function(cell) {
20478
- var headers2 = cell.getAttribute('headers');
20479
- if (headers2) {
20480
- reffedHeaders = reffedHeaders.concat(headers2.split(/\s+/));
20481
- }
20482
- var ariaLabel = cell.getAttribute('aria-labelledby');
20483
- if (ariaLabel) {
20484
- reffedHeaders = reffedHeaders.concat(ariaLabel.split(/\s+/));
20485
- }
20486
- });
20487
- var headers = cells.filter(function(cell) {
20488
- if (sanitize_default(cell.textContent) === '') {
20489
- return false;
20490
- }
20491
- return cell.nodeName.toUpperCase() === 'TH' || [ 'rowheader', 'columnheader' ].indexOf(cell.getAttribute('role')) !== -1;
20492
- });
20493
- var tableGrid = to_grid_default(node);
20494
- var out = true;
20495
- headers.forEach(function(header) {
20496
- if (header.getAttribute('id') && reffedHeaders.includes(header.getAttribute('id'))) {
20497
- return;
20498
- }
20499
- var pos = get_cell_position_default(header, tableGrid);
20500
- var hasCell = false;
20501
- if (is_column_header_default(header)) {
20502
- hasCell = traverse_default('down', pos, tableGrid).find(function(cell) {
20503
- return !is_column_header_default(cell) && get_headers_default(cell, tableGrid).includes(header);
20504
- });
20505
- }
20506
- if (!hasCell && is_row_header_default(header)) {
20507
- hasCell = traverse_default('right', pos, tableGrid).find(function(cell) {
20508
- return !is_row_header_default(cell) && get_headers_default(cell, tableGrid).includes(header);
20509
- });
20510
- }
20511
- if (!hasCell) {
20512
- checkResult.relatedNodes(header);
20513
- }
20514
- out = out && hasCell;
20515
- });
20516
- return out ? true : void 0;
20517
- }
20518
- var th_has_data_cells_evaluate_default = thHasDataCellsEvaluate;
20519
20477
  var aria_exports = {};
20520
20478
  __export(aria_exports, {
20521
20479
  allowedAttr: function allowedAttr() {
@@ -20712,7 +20670,7 @@
20712
20670
  }
20713
20671
  function getElementUnallowedRoles(node) {
20714
20672
  var allowImplicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
20715
- var _nodeLookup19 = _nodeLookup(node), vNode = _nodeLookup19.vNode;
20673
+ var _nodeLookup20 = _nodeLookup(node), vNode = _nodeLookup20.vNode;
20716
20674
  if (!is_html_element_default(vNode)) {
20717
20675
  return [];
20718
20676
  }
@@ -22736,6 +22694,52 @@
22736
22694
  return !!attrDefinition;
22737
22695
  }
22738
22696
  var validate_attr_default = validateAttr;
22697
+ function thHasDataCellsEvaluate(node) {
22698
+ var cells = get_all_cells_default(node);
22699
+ var checkResult = this;
22700
+ var reffedHeaders = [];
22701
+ cells.forEach(function(cell) {
22702
+ var headers2 = cell.getAttribute('headers');
22703
+ if (headers2) {
22704
+ reffedHeaders = reffedHeaders.concat(headers2.split(/\s+/));
22705
+ }
22706
+ var ariaLabel = cell.getAttribute('aria-labelledby');
22707
+ if (ariaLabel) {
22708
+ reffedHeaders = reffedHeaders.concat(ariaLabel.split(/\s+/));
22709
+ }
22710
+ });
22711
+ var headers = cells.filter(function(cell) {
22712
+ if (sanitize_default(cell.textContent) === '') {
22713
+ return false;
22714
+ }
22715
+ return cell.nodeName.toUpperCase() === 'TH' || [ 'rowheader', 'columnheader' ].indexOf(get_explicit_role_default(cell)) !== -1;
22716
+ });
22717
+ var tableGrid = to_grid_default(node);
22718
+ var out = true;
22719
+ headers.forEach(function(header) {
22720
+ if (header.getAttribute('id') && reffedHeaders.includes(header.getAttribute('id'))) {
22721
+ return;
22722
+ }
22723
+ var pos = get_cell_position_default(header, tableGrid);
22724
+ var hasCell = false;
22725
+ if (is_column_header_default(header)) {
22726
+ hasCell = traverse_default('down', pos, tableGrid).find(function(cell) {
22727
+ return !is_column_header_default(cell) && get_headers_default(cell, tableGrid).includes(header);
22728
+ });
22729
+ }
22730
+ if (!hasCell && is_row_header_default(header)) {
22731
+ hasCell = traverse_default('right', pos, tableGrid).find(function(cell) {
22732
+ return !is_row_header_default(cell) && get_headers_default(cell, tableGrid).includes(header);
22733
+ });
22734
+ }
22735
+ if (!hasCell) {
22736
+ checkResult.relatedNodes(header);
22737
+ }
22738
+ out = out && hasCell;
22739
+ });
22740
+ return out ? true : void 0;
22741
+ }
22742
+ var th_has_data_cells_evaluate_default = thHasDataCellsEvaluate;
22739
22743
  var messageKeys = [ 'cell-header-not-in-table', 'cell-header-not-th', 'header-refs-self', 'empty-hdrs' ];
22740
22744
  var notInTable = messageKeys[0], notTh = messageKeys[1], selfRef = messageKeys[2], emptyHdrs = messageKeys[3];
22741
22745
  function tdHeadersAttrEvaluate(node) {
@@ -25502,7 +25506,7 @@
25502
25506
  role: nodeRole
25503
25507
  });
25504
25508
  while (parent) {
25505
- var role = parent.getAttribute('role');
25509
+ var role = get_explicit_role_default(parent);
25506
25510
  if (!role && parent.nodeName.toUpperCase() !== 'FORM') {
25507
25511
  role = implicit_role_default(parent);
25508
25512
  }
@@ -26199,8 +26203,8 @@
26199
26203
  return false;
26200
26204
  }
26201
26205
  var invalidrole_evaluate_default = invalidroleEvaluate;
26202
- function hasWidgetRoleEvaluate(node) {
26203
- var role = node.getAttribute('role');
26206
+ function hasWidgetRoleEvaluate(node, options, virtualNode) {
26207
+ var role = get_explicit_role_default(virtualNode);
26204
26208
  if (role === null) {
26205
26209
  return false;
26206
26210
  }
@@ -26727,7 +26731,7 @@
26727
26731
  });
26728
26732
  return false;
26729
26733
  }
26730
- return idref.getAttribute('role') === 'alert' || idref.getAttribute('aria-live') === 'assertive' || idref.getAttribute('aria-live') === 'polite' || token_list_default(virtualNode.attr('aria-describedby')).indexOf(attr) > -1;
26734
+ return get_explicit_role_default(idref) === 'alert' || idref.getAttribute('aria-live') === 'assertive' || idref.getAttribute('aria-live') === 'polite' || token_list_default(virtualNode.attr('aria-describedby')).indexOf(attr) > -1;
26731
26735
  }
26732
26736
  return;
26733
26737
  }
@@ -27081,7 +27085,7 @@
27081
27085
  var nested_interactive_matches_default = nestedInteractiveMatches;
27082
27086
  function linkInTextBlockMatches(node) {
27083
27087
  var text = sanitize_default(node.innerText);
27084
- var role = node.getAttribute('role');
27088
+ var role = get_explicit_role_default(node);
27085
27089
  if (role && role !== 'link') {
27086
27090
  return false;
27087
27091
  }
@@ -27365,9 +27369,9 @@
27365
27369
  if (virtualNode.hasAttr('disabled') || ariaDisabled.toLowerCase() === 'true') {
27366
27370
  return false;
27367
27371
  }
27368
- var role = virtualNode.attr('role');
27372
+ var role = get_explicit_role_default(virtualNode);
27369
27373
  var tabIndex = parse_tabindex_default(virtualNode.attr('tabindex'));
27370
- if (tabIndex < 0 && role) {
27374
+ if (tabIndex < 0 && virtualNode.hasAttr('role')) {
27371
27375
  var roleDef = standards_default.ariaRoles[role];
27372
27376
  if (roleDef === void 0 || roleDef.type !== 'widget') {
27373
27377
  return false;
@@ -29593,7 +29597,7 @@
29593
29597
  },
29594
29598
  'role-img-alt': {
29595
29599
  description: 'Ensure [role="img"] elements have alternative text',
29596
- help: '[role="img"] elements must have an alternative text'
29600
+ help: '[role="img"] elements must have alternative text'
29597
29601
  },
29598
29602
  'scope-attr-valid': {
29599
29603
  description: 'Ensure the scope attribute is used correctly on tables',
@@ -29620,8 +29624,8 @@
29620
29624
  help: 'Summary elements must have discernible text'
29621
29625
  },
29622
29626
  'svg-img-alt': {
29623
- description: 'Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text',
29624
- help: '<svg> elements with an img role must have an alternative text'
29627
+ description: 'Ensure <svg> elements with an img, graphics-document or graphics-symbol role have accessible text',
29628
+ help: '<svg> elements with an img role must have alternative text'
29625
29629
  },
29626
29630
  tabindex: {
29627
29631
  description: 'Ensure tabindex attribute values are not greater than 0',