Add nice little things to the in-browser test runner.
[dygraphs.git] / auto_tests / misc / local.js
index f53ce38..39a3cb5 100644 (file)
@@ -139,16 +139,56 @@ DygraphsLocalTester.prototype.createResultsDiv = function() {
 }
 
 DygraphsLocalTester.prototype.postResults = function() {
+  var table = document.createElement("table");
+  this.resultsDiv.appendChild(table);
   for (var idx = 0; idx < this.results.length; idx++) {
     var result = this.results[idx];
-    var elem = document.createElement("div");
-    elem.setAttribute("class", result.result ? 'pass' : 'fail');
-
-    elem.innerHTML = result.name + ': <span class=\'outcome\'>' +
-      (result.result ? 'pass' : 'fail') +
-      '</span>' +
-      ' (' + result.duration + ' ms)';
-    this.resultsDiv.appendChild(elem);
+    var tr = document.createElement("tr");
+    tr.setAttribute("class", result.result ? 'pass' : 'fail');
+
+    var tdResult = document.createElement("td");
+    tdResult.setAttribute("class", "outcome");
+    tdResult.innerText = result.result ? 'pass' : 'fail';
+    tr.appendChild(tdResult);
+
+    var tdName = document.createElement("td");
+    var div = document.createElement("div");
+    div.innerText = result.name;
+    div.onclick = function(name) {
+      return function() {
+        var s = name.split(".");
+        var testCase = s[0];
+        var testName = s[1];
+        url = window.location.pathname +
+            "?testCaseName=" + testCase +
+            "&test=" + testName +
+            "&command=runTest";
+        window.location.href = url;
+      };
+    }(result.name);
+    div.setAttribute("class", "anchor");
+    tdName.appendChild(div);
+    tr.appendChild(tdName);
+
+    var tdDuration = document.createElement("td");
+    tdDuration.innerText = result.duration;
+    tr.appendChild(tdDuration);
+
+    if (result.e) {
+      var tdDetails = document.createElement("td");
+      div = document.createElement("div");
+      div.innerText = "more...";
+      div.setAttribute("class", "anchor");
+      div.onclick = function(e) {
+        return function() {
+          alert(e + "\n" + e.stack);
+        };
+      }(result.e);
+      tdDetails.appendChild(div);
+      tr.appendChild(tdDetails);
+    }
+
+    table.appendChild(tr);
   }
 }
 
@@ -200,7 +240,8 @@ DygraphsLocalTester.prototype.finish_ = function(tc, name, result, e) {
   this.results.push({
     name : tc.name + "." + name,
     result : result,
-    duration : endms_ - this.startms_
+    duration : endms_ - this.startms_,
+    e : e
   });
   this.summary.passed += result ? 1 : 0;
   this.summary.failed += result ? 0 : 1;