Bug 1423103 - improved failure messages for invalid capability configurations draft
authormAgr <mohit2agrawal@gmail.com>
Mon, 05 Feb 2018 17:27:18 +0530
changeset 752460 e11912bbca2dc21d105b43270236e9a8f0014a30
parent 751044 ef1fefe4c6d1f95e2bdf872094e02e85c962aa86
child 752461 80c30a1afd046daa734b87060b9841eca05dc734
push id98278
push userbmo:mohit2agrawal@gmail.com
push dateThu, 08 Feb 2018 09:59:09 +0000
bugs1423103
milestone60.0a1
Bug 1423103 - improved failure messages for invalid capability configurations MozReview-Commit-ID: 2SZdZEGaZkN
testing/marionette/session.js
--- a/testing/marionette/session.js
+++ b/testing/marionette/session.js
@@ -52,31 +52,34 @@ session.Timeouts = class {
     return {
       implicit: this.implicit,
       pageLoad: this.pageLoad,
       script: this.script,
     };
   }
 
   static fromJSON(json) {
-    assert.object(json);
+    assert.object(json, pprint `Expected a session.Timeouts object, got ${json}`);
     let t = new session.Timeouts();
 
     for (let [typ, ms] of Object.entries(json)) {
       switch (typ) {
         case "implicit":
-          t.implicit = assert.positiveInteger(ms);
+          t.implicit = assert.positiveInteger(ms,
+              pprint `Expected entry for "implicit" to be a positive integer, got ${ms}`);
           break;
 
         case "script":
-          t.script = assert.positiveInteger(ms);
+          t.script = assert.positiveInteger(ms,
+              pprint `Expected entry for "script" to be a positive integer, got ${ms}`);
           break;
 
         case "pageLoad":
-          t.pageLoad = assert.positiveInteger(ms);
+          t.pageLoad = assert.positiveInteger(ms,
+              pprint `Expected entry for "pageLoad" to be a positive integer, got ${ms}`);
           break;
 
         default:
           throw new InvalidArgumentError("Unrecognised timeout: " + typ);
       }
     }
 
     return t;
@@ -285,17 +288,18 @@ session.Proxy = class {
         if (typeof json.httpProxy != "undefined") {
           [p.httpProxy, p.httpProxyPort] = fromHost("http", json.httpProxy);
         }
         if (typeof json.sslProxy != "undefined") {
           [p.sslProxy, p.sslProxyPort] = fromHost("https", json.sslProxy);
         }
         if (typeof json.socksProxy != "undefined") {
           [p.socksProxy, p.socksProxyPort] = fromHost("socks", json.socksProxy);
-          p.socksVersion = assert.positiveInteger(json.socksVersion);
+          p.socksVersion = assert.positiveInteger(json.socksVersion,
+              pprint `Expected "socksVersion" to be a positive integer, got ${json.socksVersion}`);
         }
         if (typeof json.noProxy != "undefined") {
           let entries = assert.array(json.noProxy,
               pprint`Expected "noProxy" to be an array, got ${json.noProxy}`);
           p.noProxy = entries.map(entry => {
             assert.string(entry,
                 pprint`Expected "noProxy" entry to be a string, got ${entry}`);
             return stripBracketsFromIpv6Hostname(entry);
@@ -418,37 +422,39 @@ session.Capabilities = class extends Map
    *
    * @return {session.Capabilities}
    *     Internal representation of WebDriver capabilities.
    */
   static fromJSON(json) {
     if (typeof json == "undefined" || json === null) {
       json = {};
     }
-    assert.object(json);
+    assert.object(json, pprint `Expected a session.Capabilities object, got ${json}`);
 
     return session.Capabilities.match_(json);
   }
 
   // Matches capabilities as described by WebDriver.
   static match_(json = {}) {
     let matched = new session.Capabilities();
 
     for (let [k, v] of Object.entries(json)) {
       switch (k) {
         case "acceptInsecureCerts":
-          assert.boolean(v);
+          assert.boolean(v,
+              pprint `Expected "${k}" to be boolean, got ${v}`);
           matched.set("acceptInsecureCerts", v);
           break;
 
         case "pageLoadStrategy":
           if (v === null) {
             matched.set("pageLoadStrategy", session.PageLoadStrategy.Normal);
           } else {
-            assert.string(v);
+            assert.string(v,
+                pprint `Expected "${k}" to be a string, got ${v}`);
 
             if (Object.values(session.PageLoadStrategy).includes(v)) {
               matched.set("pageLoadStrategy", v);
             } else {
               throw new InvalidArgumentError(
                   "Unknown page load strategy: " + v);
             }
           }
@@ -461,22 +467,24 @@ session.Capabilities = class extends Map
           break;
 
         case "timeouts":
           let timeouts = session.Timeouts.fromJSON(v);
           matched.set("timeouts", timeouts);
           break;
 
         case "moz:webdriverClick":
-          assert.boolean(v);
+          assert.boolean(v,
+              pprint `Expected "${k}" to be boolean, got ${v}`);
           matched.set("moz:webdriverClick", v);
           break;
 
         case "moz:accessibilityChecks":
-          assert.boolean(v);
+          assert.boolean(v,
+              pprint `Expected "${k}" to be boolean, got ${v}`);
           matched.set("moz:accessibilityChecks", v);
           break;
       }
     }
 
     return matched;
   }
 };