dequelabs / dequelabs/axe-core

Should have better error messages when `axe.runRules` throws an error

Open
#2,895 0 comments 0 reactions 0 assignees View on GitHub
core
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.