diff --git a/server/pifr_server.environment.inc b/server/pifr_server.environment.inc
index 4f371f4..b43f745 100644
--- a/server/pifr_server.environment.inc
+++ b/server/pifr_server.environment.inc
@@ -593,3 +593,22 @@ function pifr_server_environment_save(array $environment) {
   }
   return $environment;
 }
+
+/**
+ * Determine whether environment tests should be considered 'advisory'.
+ *
+ * Advisory tests are tests which may fail and return their results, but which
+ * should not cause the overall branch/patch test to be considered a failure.
+ * Environments are considered 'advisory' if the environment plugin_arguments
+ * array contains an 'advisory' key with non-empty value.
+ *
+ * @param $environment_id Environment Id.
+ * @return boolean TRUE if considered 'advisory', otherwise FALSE
+ */
+function pifr_server_environment_is_advisory($environment_id) {
+  $environment = pifr_server_environment_get($environment_id);
+  if (!empty($environment['plugin_argument']['advisory'])) {
+    return TRUE;
+  }
+  return FALSE;
+}
diff --git a/server/pifr_server.test.inc b/server/pifr_server.test.inc
index 454fefe..7392360 100644
--- a/server/pifr_server.test.inc
+++ b/server/pifr_server.test.inc
@@ -905,16 +905,32 @@ abstract class PIFRTest {
 
     // Insert a row and status for each relevant environment.
     $environments = pifr_server_environment_test_get_all($this->test['test_id']);
+    // Set flag for 'Overall Test Status'
+    $overallpass = TRUE;
     foreach ($environments as $environment) {
       $status = pifr_server_environment_status_get($environment['environment_id'], $this->test['test_id']);
       $message = t($status['status']);
       if ($status['status'] == 'result') {
         $message = pifr_server_review_check_code($environment, $status['code']) ? 'pass' : 'fail';
+        if ($message == 'fail') {
+          // Check if this is an advisory test
+          if (!pifr_server_environment_is_advisory($environment['environment_id'])) {
+            $overallpass = FALSE;
+          }
+        }
       }
-
       $rows[] = array($environment['title'], $message);
     }
 
+    // If multiple environments tested, provide an 'overall' result (taking
+    // advisory environments into account)
+    if (count($rows) > 1) {
+      // Add blank line between environment results and 'overall' result
+      $rows[] = array(" ", " ");
+      // Add 'overall' result
+      $rows[] = array(t("Overall Result"), ($overallpass ? 'pass' : 'fail'));
+    }
+
     $rows = $this->formatTable($rows);
 
     // Color environment rows based on result status, if present.
