diff --git a/config/jest/environment.js b/config/jest/environment.js
new file mode 100644
index 0000000000000000000000000000000000000000..e7c1df906c697e9cc395ec123fdc1ba80d0acd1e
--- /dev/null
+++ b/config/jest/environment.js
@@ -0,0 +1,7 @@
+// Currently, Jest mocks setTimeout() and similar functions by default:
+// https://facebook.github.io/jest/docs/timer-mocks.html
+// We think this is confusing, so we disable this feature.
+// If you see value in it, run `jest.useFakeTimers()` in individual tests.
+beforeEach(() => {
+  jest.useRealTimers();
+});
diff --git a/scripts/eject.js b/scripts/eject.js
index 82202d6eed9e4c0cc213c61ff552a87ae264eb1b..55661d1928570ff9eb4223db0548237ec8eae350 100644
--- a/scripts/eject.js
+++ b/scripts/eject.js
@@ -41,6 +41,7 @@ prompt(
     path.join('config', 'webpack.config.prod.js'),
     path.join('config', 'jest', 'CSSStub.js'),
     path.join('config', 'jest', 'FileStub.js'),
+    path.join('config', 'jest', 'environment.js'),
     path.join('config', 'jest', 'transform.js'),
     path.join('scripts', 'build.js'),
     path.join('scripts', 'start.js'),
diff --git a/scripts/utils/createJestConfig.js b/scripts/utils/createJestConfig.js
index 282705f0dd3703dea91ca436690584628ad7a931..d4ee867f47305be4c1f245d97b63ee4ce05bac5e 100644
--- a/scripts/utils/createJestConfig.js
+++ b/scripts/utils/createJestConfig.js
@@ -19,7 +19,9 @@ module.exports = (resolve, rootDir) => {
     setupFiles: [
       resolve('config/polyfills.js')
     ],
-    testEnvironment: 'node'
+    setupTestFrameworkScriptFile: resolve('config/jest/environment.js'),
+    testEnvironment: 'node',
+    verbose: true
   };
   if (rootDir) {
     config.rootDir = rootDir;