diff --git a/Library/Homebrew/cask/cmd/brew-cask-tests.rb b/Library/Homebrew/cask/cmd/brew-cask-tests.rb
index 019c3ca249d3e471dad7c23df8010aaf9166cbcc..2523061a2e66b6e958928411bdbb21a2d6f083bc 100755
--- a/Library/Homebrew/cask/cmd/brew-cask-tests.rb
+++ b/Library/Homebrew/cask/cmd/brew-cask-tests.rb
@@ -1,7 +1,10 @@
 require "English"
 
 def run_tests(executable, files, args = [])
-  system "bundle", "exec", executable, "--", *args, "--", *files
+  opts = []
+  opts << "--serialize-stdout" if ENV["CI"]
+
+  system "bundle", "exec", executable, *opts, "--", *args, "--", *files
 end
 
 repo_root = Pathname(__FILE__).realpath.parent.parent
diff --git a/Library/Homebrew/dev-cmd/tests.rb b/Library/Homebrew/dev-cmd/tests.rb
index aba2fa3b644013687716318a9ca4ee6ae8cfab67..9b15f9f3ef80e021217c13de3ff599c8b00eef1a 100644
--- a/Library/Homebrew/dev-cmd/tests.rb
+++ b/Library/Homebrew/dev-cmd/tests.rb
@@ -41,16 +41,24 @@ module Homebrew
 
       files = Dir["test/test_*.rb"]
       files -= Dir["test/test_os_mac_*.rb"] unless OS.mac?
+
+      opts = []
+      opts << "--serialize-stdout" if ENV["CI"]
+
       args = []
       args << "--trace" if ARGV.include? "--trace"
+
       if ARGV.value("only")
         ENV["HOMEBREW_TESTS_ONLY"] = "1"
         test_name, test_method = ARGV.value("only").split("/", 2)
         files = ["test/test_#{test_name}.rb"]
         args << "--name=test_#{test_method}" if test_method
       end
+
       args += ARGV.named.select { |v| v[/^TEST(OPTS)?=/] }
-      system "bundle", "exec", "parallel_test", "--", *args, "--", *files
+
+      system "bundle", "exec", "parallel_test", *opts,
+        "--", *args, "--", *files
 
       Homebrew.failed = !$?.success?