dequelabs / dequelabs/axe-core
Should have better error messages when `axe.runRules` throws an error
- Dominant language
- JavaScript
- Stars
- 7.5k
- Forks
- 933
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 17
Description
When running axe.min and calling `axe.run` encounters an error, such as populating the tree, our error message / stack isn't very helpful and does not help to debug the problem.
For example, if a page uses a custom element that throws an error when accessing properties, the produced error stack is not enough to understand what just happened.
```html
Hello
class MyCustomComponent extends HTMLElement {
constructor() {
super();
}
get value() {
return this._props.value;
}
set value(val) {
this._props.value = val;
}
}
window.customElements.define('my-custom-component', MyCustomComponent);
```
```
TypeError: Cannot read property 'value' of undefined
at HTMLElement.get value [as value] (playground.html:16)
at i.get (axe.min.js:12)
at Ar (axe.min.js:12)
at Nr (axe.min.js:12)
at axe.min.js:12
at oo (axe.min.js:12)
at Do (axe.min.js:12)
at new Nu (axe.min.js:12)
at Object.Wu [as _runRules] (axe.min.js:12)
at Object.ec [as run] (axe.min.js:12)
```
The [axe extension](https://github.com/dequelabs/axe-core/issues/2439) and Java integration also suffers from this problem as we often get bug reports with these types of error stacks:
```
TypeError: Cannot read property 'documentElement' of null
TypeError:
at e (chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:187615)
at Object.utils.getFlattenedTree (chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:188426)
at U (chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:165293)
at G (chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:166349)
at chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:219634
at chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:219652
at l (chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:219145)
at chrome-extension://lhdoppojpmngadmnindnejefpokejbdd/vendor.bundle.js:46:219348
```
To better help us debug these problems, axe-core should add better error messaging and stack traces when we catch errors.
Contributor guide
Assessment
This issue has not been assessed yet.