axe-core 4.10.2-canary.645a850 → 4.10.2-canary.64d409d

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/README.md CHANGED
@@ -14,7 +14,7 @@ Axe is an accessibility testing engine for websites and other HTML-based user in
14
14
 
15
15
  ## The Accessibility Rules
16
16
 
17
- Axe-core has different types of rules, for WCAG 2.0, 2.1, 2.2 on level A, AA and AAA as well as a number of best practices that help you identify common accessibility practices like ensuring every page has an `h1` heading, and to help you avoid "gotchas" in ARIA like where an ARIA attribute you used will get ignored. The complete list of rules, grouped WCAG level and best practice, can found in [doc/rule-descriptions.md](./doc/rule-descriptions.md).
17
+ Axe-core has different types of rules, for WCAG 2.0, 2.1, 2.2 on level A, AA and AAA as well as a number of best practices that help you identify common accessibility practices like ensuring every page has an `h1` heading, and to help you avoid "gotchas" in ARIA like where an ARIA attribute you used will get ignored. The complete list of rules, grouped WCAG level and best practice, can be found in [doc/rule-descriptions.md](./doc/rule-descriptions.md).
18
18
 
19
19
  With axe-core, you can find **on average 57% of WCAG issues automatically**. Additionally, axe-core will return elements as "incomplete" where axe-core could not be certain, and manual review is needed.
20
20
 
@@ -65,7 +65,7 @@ Axe was built to reflect how web development actually works. It works with all m
65
65
  - It's actively supported by [Deque Systems](https://www.deque.com), a major accessibility vendor.
66
66
  - It integrates with your existing functional/acceptance automated tests.
67
67
  - It automatically determines which rules to run based on the evaluation context.
68
- - Axe supports in-memory fixtures, static fixtures, integration tests and iframes of infinite depth.
68
+ - Axe supports in-memory fixtures, static fixtures, integration tests, and iframes of infinite depth.
69
69
  - Axe is highly configurable.
70
70
 
71
71
  ## Supported Browsers
package/axe.js CHANGED
@@ -1,5 +1,5 @@
1
- /*! axe v4.10.2-canary.645a850
2
- * Copyright (c) 2015 - 2024 Deque Systems, Inc.
1
+ /*! axe v4.10.2-canary.64d409d
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
5
5
  * License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -22,7 +22,7 @@
22
22
  }, _typeof(o);
23
23
  }
24
24
  var axe = axe || {};
25
- axe.version = '4.10.2-canary.645a850';
25
+ axe.version = '4.10.2-canary.64d409d';
26
26
  if (typeof define === 'function' && define.amd) {
27
27
  define('axe-core', [], function() {
28
28
  return axe;
@@ -11255,7 +11255,7 @@
11255
11255
  superclassRole: [ 'composite' ]
11256
11256
  },
11257
11257
  tabpanel: {
11258
- type: 'widget',
11258
+ type: 'structure',
11259
11259
  allowedAttrs: [ 'aria-expanded' ],
11260
11260
  superclassRole: [ 'section' ],
11261
11261
  accessibleNameRequired: false
@@ -11834,7 +11834,7 @@
11834
11834
  }, {
11835
11835
  hasAccessibleName: true
11836
11836
  } ],
11837
- allowedRoles: [ 'button', 'checkbox', 'link', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'meter', 'option', 'progressbar', 'radio', 'scrollbar', 'separator', 'slider', 'switch', 'tab', 'treeitem', 'doc-cover' ]
11837
+ allowedRoles: [ 'button', 'checkbox', 'link', 'math', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'meter', 'option', 'progressbar', 'radio', 'scrollbar', 'separator', 'slider', 'switch', 'tab', 'treeitem', 'doc-cover' ]
11838
11838
  },
11839
11839
  usemap: {
11840
11840
  matches: '[usemap]',
@@ -19507,8 +19507,14 @@
19507
19507
  }
19508
19508
  function preloadMedia(_ref74) {
19509
19509
  var _ref74$treeRoot = _ref74.treeRoot, treeRoot = _ref74$treeRoot === void 0 ? axe._tree[0] : _ref74$treeRoot;
19510
- var mediaVirtualNodes = query_selector_all_filter_default(treeRoot, 'video, audio', function(_ref75) {
19510
+ var mediaVirtualNodes = query_selector_all_filter_default(treeRoot, 'video[autoplay], audio[autoplay]', function(_ref75) {
19511
19511
  var actualNode = _ref75.actualNode;
19512
+ if (actualNode.preload === 'none' && actualNode.readyState === 0 && actualNode.networkState !== actualNode.NETWORK_LOADING) {
19513
+ return false;
19514
+ }
19515
+ if (actualNode.hasAttribute('paused') || actualNode.hasAttribute('muted')) {
19516
+ return false;
19517
+ }
19512
19518
  if (actualNode.hasAttribute('src')) {
19513
19519
  return !!actualNode.getAttribute('src');
19514
19520
  }
@@ -24876,16 +24882,20 @@
24876
24882
  }
24877
24883
  var css_orientation_lock_evaluate_default = cssOrientationLockEvaluate;
24878
24884
  function noAutoplayAudioEvaluate(node, options) {
24885
+ var hasControls = node.hasAttribute('controls');
24886
+ if (node.hasAttribute('loop')) {
24887
+ return hasControls;
24888
+ }
24879
24889
  if (!node.duration) {
24880
24890
  console.warn('axe.utils.preloadMedia did not load metadata');
24881
24891
  return void 0;
24882
24892
  }
24883
24893
  var _options$allowedDurat = options.allowedDuration, allowedDuration = _options$allowedDurat === void 0 ? 3 : _options$allowedDurat;
24884
24894
  var playableDuration = getPlayableDuration(node);
24885
- if (playableDuration <= allowedDuration && !node.hasAttribute('loop')) {
24895
+ if (playableDuration <= allowedDuration) {
24886
24896
  return true;
24887
24897
  }
24888
- if (!node.hasAttribute('controls')) {
24898
+ if (!hasControls) {
24889
24899
  return false;
24890
24900
  }
24891
24901
  return true;
@@ -26120,7 +26130,8 @@
26120
26130
  navigation: true,
26121
26131
  region: true,
26122
26132
  search: false,
26123
- status: true
26133
+ status: true,
26134
+ tabpanel: true
26124
26135
  };
26125
26136
  function validScrollableTagName(node) {
26126
26137
  var nodeName2 = node.nodeName.toUpperCase();
@@ -30278,7 +30289,7 @@
30278
30289
  impact: 'critical',
30279
30290
  messages: {
30280
30291
  pass: 'The multimedia element has a captions track',
30281
- incomplete: 'Check that captions is available for the element'
30292
+ incomplete: 'Check that captions are available for the element'
30282
30293
  }
30283
30294
  },
30284
30295
  'frame-tested': {