Parcourir la source

Displaying error message in queue if fails

Gaël Métais il y a 10 ans
Parent
commit
be2911707c

+ 5 - 1
front/src/css/queue.css

@@ -1,7 +1,11 @@
 .status {
-  margin: 2em;
+  margin-top: 2em;
   font-size: 2.5em;
 }
+.statusSubMessage {
+  font-size: 0.8em;
+  margin-bottom: 6em;
+}
 .queueLink {
   color: #FFF;
 }

+ 2 - 0
front/src/js/controllers/dashboardCtrl.js

@@ -12,6 +12,8 @@ dashboardCtrl.controller('DashboardCtrl', ['$scope', '$rootScope', '$routeParams
                 $rootScope.loadedResult = result;
                 $scope.result = result;
                 init();
+            }, function(err) {
+                alert('aie');
             });
         } else {
             $scope.result = $rootScope.loadedResult;

+ 6 - 1
front/src/less/queue.less

@@ -1,8 +1,13 @@
 .status {
-    margin: 2em;
+    margin-top: 2em;
     font-size: 2.5em;
 }
 
+.statusSubMessage {
+    font-size: 0.8em;
+    margin-bottom: 6em;
+}
+
 .queueLink {
     color: #FFF;
 }

+ 19 - 8
front/src/views/queue.html

@@ -1,14 +1,25 @@
 <p>Tested url: &nbsp; <a href="{{url}}" target="_blank" class="testedUrl">{{url}}</a></p>
 
 <div ng-if="status.statusCode == 'failed'">
-    <div class="status">Test failed :(</div>
+    <div class="status">Test failed</div>
+    <p class="statusSubMessage">{{status.error}}</p>
     <p><a class="queueLink" href="https://github.com/gmetais/YellowLabTools/issues" target="_blank">Report a bug on GitHub</a></p>
     <p><a class="queueLink" href="/">Back to index</a></p>
 </div>
-<div class="status" ng-if="status.statusCode == 'awaiting'">
-    <ng-pluralize count="status.position" when="{
-                     'one': 'Waiting behind 1 other test',
-                     'other': 'Waiting behind {} other tests'}">
-    </ng-pluralize></div>
-<div class="status" ng-if="status.statusCode == 'running'">Test is running...</div>
-<div class="status" ng-if="status.statusCode == 'complete'">Test complete</div>
+<div ng-if="status.statusCode == 'awaiting'">
+    <div class="status">
+        <ng-pluralize count="status.position" when="{
+                         'one': 'Waiting behind 1 other test',
+                         'other': 'Waiting behind {} other tests'}">
+        </ng-pluralize>
+    </div>
+    <p class="statusSubMessage">(auto-refresh activated)</p>
+</div>
+<div ng-if="status.statusCode == 'running'">
+    <div class="status">Test is running...</div>
+    <p class="statusSubMessage">(auto-refresh activated)</p>
+</div>
+<div ng-if="status.statusCode == 'complete'">
+    <div class="status">Test complete</div>
+    <p class="statusSubMessage">Opening results...</p>
+</div>

+ 2 - 3
lib/server/controllers/apiController.js

@@ -75,10 +75,9 @@ var ApiController = function(app) {
                 }).fail(function(err) {
                     
                     console.error('Test failed for %s', run.params.url);
-                    console.error(err);
-                    console.error(err.stack);
+                    console.error(err.toString());
 
-                    runsDatastore.markAsFailed(run.runId);
+                    runsDatastore.markAsFailed(run.runId, err.toString());
                     
                 }).finally(function() {
                     queue.remove(run.runId);

+ 27 - 2
lib/server/datastores/runsDatastore.js

@@ -53,11 +53,36 @@ function RunsDatastore() {
     };
 
 
-    this.markAsFailed = function(runId) {
+    this.markAsFailed = function(runId, err) {
         var run = runs[runId];
 
+        var errorMessage;
+        switch(err) {
+            case '252':
+                errorMessage = "Error 252: page timeout in Phantomas";
+                break;
+            case '253':
+                errorMessage = "Error 253: Phantomas config error";
+                break;
+            case '254':
+                errorMessage = "Error 254: page loading failed in Phantomas";
+                break;
+            case '255':
+                errorMessage = "Error 255: Phantomas error";
+                break;
+            case '1001':
+                errorMessage = "Error 1001: JavaScript profiling failed";
+                break;
+            case '1002':
+                errorMessage = "Error 1002: missing Phantomas metrics";
+                break;
+            default:
+                errorMessage = err;
+        }
+
         run.status = {
-            statusCode: STATUS_FAILED
+            statusCode: STATUS_FAILED,
+            error: errorMessage
         };
 
         runs[runId] = run;