diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed454b4f67d7..abc5632a67d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,7 +12,8 @@
 * `[expect]` Support class instances in `.toHaveProperty()` matcher.
   ([#5367](https://github.com/facebook/jest/pull/5367))
 * `[jest-cli]` Fix npm update command for snapshot summary.
-  ([#5376](https://github.com/facebook/jest/pull/5376))
+  ([#5376](https://github.com/facebook/jest/pull/5376),
+  [5389](https://github.com/facebook/jest/pull/5389/))
 * `[expect]` Make `rejects` and `resolves` synchronously validate its argument.
   ([#5364](https://github.com/facebook/jest/pull/5364))
 * `[docs]` Add tutorial page for ES6 class mocks.
diff --git a/packages/jest-cli/src/reporters/__tests__/__snapshots__/summary_reporter.test.js.snap b/packages/jest-cli/src/reporters/__tests__/__snapshots__/summary_reporter.test.js.snap
new file mode 100644
index 000000000000..55fb2f7428f7
--- /dev/null
+++ b/packages/jest-cli/src/reporters/__tests__/__snapshots__/summary_reporter.test.js.snap
@@ -0,0 +1,25 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`snapshots needs update with npm test 1`] = `
+"<bold>Snapshot Summary</>
+<bold><red> › 2 snapshot tests</></> failed in 1 test suite. <dim>Inspect your code changes or run \`npm test -- -u\` to update them.</>
+
+<bold>Test Suites: </><bold><red>1 failed</></>, 1 total
+<bold>Tests:       </><bold><red>1 failed</></>, 1 total
+<bold>Snapshots:   </><bold><red>2 failed</></>, 2 total
+<bold>Time:</>        0.01s
+<dim>Ran all test suites</><dim>.</>
+"
+`;
+
+exports[`snapshots needs update with yarn test 1`] = `
+"<bold>Snapshot Summary</>
+<bold><red> › 2 snapshot tests</></> failed in 1 test suite. <dim>Inspect your code changes or run \`yarn test -u\` to update them.</>
+
+<bold>Test Suites: </><bold><red>1 failed</></>, 1 total
+<bold>Tests:       </><bold><red>1 failed</></>, 1 total
+<bold>Snapshots:   </><bold><red>2 failed</></>, 2 total
+<bold>Time:</>        0.01s
+<dim>Ran all test suites</><dim>.</>
+"
+`;
diff --git a/packages/jest-cli/src/reporters/__tests__/summary_reporter.test.js b/packages/jest-cli/src/reporters/__tests__/summary_reporter.test.js
new file mode 100644
index 000000000000..445815207efd
--- /dev/null
+++ b/packages/jest-cli/src/reporters/__tests__/summary_reporter.test.js
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+'use strict';
+
+import SummaryReporter from '../summary_reporter';
+
+const env = Object.assign({}, process.env);
+const now = Date.now;
+const write = process.stderr.write;
+const globalConfig = {
+  watch: false,
+};
+const aggregatedResults = {
+  numFailedTestSuites: 1,
+  numFailedTests: 1,
+  numPassedTestSuites: 0,
+  numTotalTestSuites: 1,
+  numTotalTests: 1,
+  snapshot: {
+    filesUnmatched: 1,
+    total: 2,
+    unmatched: 2,
+  },
+  startTime: 0,
+  testResults: {},
+};
+
+let results = [];
+
+beforeEach(() => {
+  process.env.npm_lifecycle_event = 'test';
+  process.env.npm_lifecycle_script = 'jest';
+  process.stderr.write = result => results.push(result);
+  Date.now = () => 10;
+});
+
+afterEach(() => {
+  results = [];
+  process.env = env;
+  process.stderr.write = write;
+  Date.now = now;
+});
+
+test('snapshots needs update with npm test', () => {
+  process.env.npm_config_user_agent = 'npm';
+  const testReporter = new SummaryReporter(globalConfig);
+  testReporter.onRunComplete(new Set(), aggregatedResults);
+  expect(results.join('')).toMatchSnapshot();
+});
+
+test('snapshots needs update with yarn test', () => {
+  process.env.npm_config_user_agent = 'yarn';
+  const testReporter = new SummaryReporter(globalConfig);
+  testReporter.onRunComplete(new Set(), aggregatedResults);
+  expect(results.join('')).toMatchSnapshot();
+});