diff --git a/pkg/fish-spec/basic_formatter.fish b/pkg/fish-spec/basic_formatter.fish
index 0a47e9bd2f5c89e4631f9797d9823ef662fc6f66..0632d1ee6848aa7d5e0044bd8caa1054af7cd9b3 100644
--- a/pkg/fish-spec/basic_formatter.fish
+++ b/pkg/fish-spec/basic_formatter.fish
@@ -1,4 +1,6 @@
 function __fish-spec.spec_init -e spec_init -a spec
+  set -g __current_spec_name (echo $spec | sed 's/^[0-9]*_//;s/_/ /g;s/^it/It/')
+  set -e __current_spec_output
   set -e __current_spec_status
 end
 
@@ -20,7 +22,12 @@ function __fish-spec.spec_success -e spec_success
 end
 
 function __fish-spec.spec_error -e spec_error
-  echo -n 'F'
+  echo -e "\n\nFailure: $__current_spec_name"
+
+  if not set -q __current_spec_quiet
+    echo (omf::em)  $__current_spec_output(omf::off)
+  end
+
   set -g __any_spec_failed true
 end
 
@@ -34,11 +41,6 @@ end
 
 function __fish-spec_assertion_error -e assertion_error -a error_message
   # Mimics output redirect inside an event handler
-  if set -q __fish_spec_output
-    set __fish_spec_output $error_message
-  else
-    echo $error_message
-  end
-
+  set -g __current_spec_output $error_message
   set -g __current_spec_status error
 end
diff --git a/pkg/fish-spec/spec/assert_error_message_spec.fish b/pkg/fish-spec/spec/assert_error_message_spec.fish
index 03660da8b97a73a53ecfd1d3c412eb9f62e49188..99147520068be7ae513f15b21e59190962e71cf7 100644
--- a/pkg/fish-spec/spec/assert_error_message_spec.fish
+++ b/pkg/fish-spec/spec/assert_error_message_spec.fish
@@ -1,10 +1,10 @@
 function describe_assert_error_message
   function before_each
-    set -g __fish_spec_output "initial test value"
+    set -g __current_spec_quiet
   end
 
   function after_each
-    set -e __fish_spec_output
+    set -e __current_spec_quiet
   end
 
   function it_has_no_output_when_the_test_succeeds
@@ -13,7 +13,7 @@ function describe_assert_error_message
     # Reset test status
     set -e __current_spec_status
 
-    assert 'initial test value' = "$__fish_spec_output"; or echo $__fish_spec_output
+    assert -z "$__current_spec_output"
   end
 
   function it_supports_unary_operators
@@ -22,7 +22,7 @@ function describe_assert_error_message
     # Reset test status
     set -e __current_spec_status
 
-    assert 'Expected string to be empty' = "$__fish_spec_output"; or echo $__fish_spec_output
+    assert 'Expected string to be empty' = "$__current_spec_output"
   end
 
   function it_supports_binary_operators
@@ -31,7 +31,7 @@ function describe_assert_error_message
     # Reset test status
     set -e __current_spec_status
 
-    assert 'Expected 1 to equals 2' = "$__fish_spec_output"; or echo $__fish_spec_output
+    assert 'Expected 1 to equals 2' = "$__current_spec_output"
   end
 
   function it_supports_inversion_on_unary_operators
@@ -40,7 +40,7 @@ function describe_assert_error_message
     # Reset test status
     set -e __current_spec_status
 
-    assert 'Expected  to not be empty' = "$__fish_spec_output"; or echo $__fish_spec_output
+    assert 'Expected  to not be empty' = "$__current_spec_output"
   end
 
   function it_supports_inversion_on_binary_operators
@@ -49,6 +49,6 @@ function describe_assert_error_message
     # Reset test status
     set -e __current_spec_status
 
-    assert 'Expected 1 to not equals 1' = "$__fish_spec_output"; or echo $__fish_spec_output
+    assert 'Expected 1 to not equals 1' = "$__current_spec_output"
   end
 end
diff --git a/pkg/fish-spec/spec/results_spec.fish b/pkg/fish-spec/spec/results_spec.fish
index 9cae8821a196238c60ecb0747273d12871aff65a..eaa47cdd00840aa3301485341419dc056e5765e1 100644
--- a/pkg/fish-spec/spec/results_spec.fish
+++ b/pkg/fish-spec/spec/results_spec.fish
@@ -1,8 +1,4 @@
 function describe_results
-  function after_each
-    set -e __fish_spec_quiet
-  end
-
   function it_succeeds_when_single_assertion_succeeds
     assert 1 = 1