Bug 1255955 -Run element enabled check before accessibility checks; r?automatedtester
MozReview-Commit-ID: 18OtOKtox3K
--- a/testing/marionette/interaction.js
+++ b/testing/marionette/interaction.js
@@ -113,35 +113,35 @@ interaction.clickElement = function*(el,
let win = getWindow(el);
let a11y = accessibility.get(strict);
let visibilityCheckEl = el;
if (el.localName == "option") {
visibilityCheckEl = interaction.getSelectForOptionElement(el);
}
- let visible = false;
+ let interactable = false;
if (specCompat) {
if (!element.isInteractable(visibilityCheckEl)) {
el.scrollIntoView(false);
}
- visible = element.isInteractable(visibilityCheckEl);
+ interactable = element.isInteractable(visibilityCheckEl);
} else {
- visible = element.isVisible(visibilityCheckEl);
+ interactable = element.isVisible(visibilityCheckEl);
+ }
+ if (!interactable) {
+ throw new ElementNotVisibleError();
}
- if (!visible) {
- throw new ElementNotVisibleError("Element not visible");
+ if (!atom.isElementEnabled(el)) {
+ throw new InvalidElementStateError("Element is not enabled");
}
yield a11y.getAccessible(el, true).then(acc => {
- a11y.assertVisible(acc, el, visible);
- if (!atom.isElementEnabled(el)) {
- throw new InvalidElementStateError("Element is not enabled");
- }
+ a11y.assertVisible(acc, el, interactable);
a11y.assertEnabled(acc, el, true);
a11y.assertActionable(acc, el);
});
// chrome elements
if (element.isXULElement(el)) {
if (el.localName == "option") {
interaction.selectOption(el);