Bug 1255955 -Run element enabled check before accessibility checks; r?automatedtester draft
authorAndreas Tolfsen <ato@mozilla.com>
Sat, 13 Aug 2016 20:59:14 +0200
changeset 400462 dc47fe336e6d1bbb32529768813c50a9b5dea5f1
parent 400461 e07bec92262a5a43aebfde397a3778981b3862ce
child 528205 5c0bb3a53db332ea9453508cf992ed7b1d89fe76
push id26147
push userbmo:ato@mozilla.com
push dateSat, 13 Aug 2016 19:00:38 +0000
reviewersautomatedtester
bugs1255955
milestone51.0a1
Bug 1255955 -Run element enabled check before accessibility checks; r?automatedtester MozReview-Commit-ID: 18OtOKtox3K
testing/marionette/interaction.js
--- 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);