diff --git a/packages/react-scripts/scripts/test.js b/packages/react-scripts/scripts/test.js
index 9de5181d7396f6b5a81ce61bf2f286e8fcafe06c..13857917e6ab6f870380e4bb066a82e9f041b2ff 100644
--- a/packages/react-scripts/scripts/test.js
+++ b/packages/react-scripts/scripts/test.js
@@ -26,6 +26,18 @@ if (!process.env.CI && argv.indexOf('--coverage') < 0) {
   argv.push('--watch');
 }
 
+// A temporary hack to clear terminal correctly.
+// You can remove this after updating to Jest 18 when it's out.
+// https://github.com/facebook/jest/pull/2230
+var realWrite = process.stdout.write;
+var CLEAR = process.platform === 'win32' ? '\x1Bc' : '\x1B[2J\x1B[3J\x1B[H';
+process.stdout.write = function(chunk, encoding, callback) {
+  if (chunk === '\x1B[2J\x1B[H') {
+    chunk = CLEAR;
+  }
+  return realWrite.call(this, chunk, encoding, callback);
+};
+
 // @remove-on-eject-begin
 // This is not necessary after eject because we embed config into package.json.
 const createJestConfig = require('../utils/createJestConfig');