diff --git a/CHANGELOG.md b/CHANGELOG.md index ca6c0a550e34..fbba7206284a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Fixes - `[@jest/test-sequencer]` Make sure sharding does not produce empty groups ([#13476](https://github.com/facebook/jest/pull/13476)) +- `[jest-circus]` Test marked as `todo` are shown as todo when inside a focussed describe ([#13504](https://github.com/facebook/jest/pull/13504)) - `[jest-mock]` Ensure mock resolved and rejected values are promises from correct realm ([#13503](https://github.com/facebook/jest/pull/13503)) ### Chore & Maintenance diff --git a/e2e/__tests__/__snapshots__/testTodo.test.ts.snap b/e2e/__tests__/__snapshots__/testTodo.test.ts.snap index 223f73fe35e8..a9e1ff123e2b 100644 --- a/e2e/__tests__/__snapshots__/testTodo.test.ts.snap +++ b/e2e/__tests__/__snapshots__/testTodo.test.ts.snap @@ -1,5 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`counts todo tests when inside of a \`describe.only\` 1`] = ` +"PASS __tests__/only-todo.test.js + with .only, should show 'passed', 'todo', 'todo' + ✓ passing test + ✎ todo todo test 1 + ✎ todo todo test 2 + +Test Suites: 1 passed, 1 total +Tests: 2 todo, 1 passed, 3 total +Snapshots: 0 total +Time: <<REPLACED>> +Ran all test suites matching /only-todo.test.js/i." +`; + exports[`shows error messages when called with invalid argument 1`] = ` "FAIL __tests__/todoNonString.test.js ● Test suite failed to run diff --git a/e2e/__tests__/testTodo.test.ts b/e2e/__tests__/testTodo.test.ts index d1b608227088..bf60beb7c3ff 100644 --- a/e2e/__tests__/testTodo.test.ts +++ b/e2e/__tests__/testTodo.test.ts @@ -44,3 +44,10 @@ test('shows todo messages when in verbose mode', () => { const {rest} = extractSummary(result.stderr); expect(rest).toMatchSnapshot(); }); + +test('counts todo tests when inside of a `describe.only`', () => { + const result = runJest(dir, ['only-todo.test.js']); + expect(result.exitCode).toBe(0); + const {rest, summary} = extractSummary(result.stderr); + expect(`${rest}\n\n${summary}`).toMatchSnapshot(); +}); diff --git a/e2e/test-todo/__tests__/only-todo.test.js b/e2e/test-todo/__tests__/only-todo.test.js new file mode 100644 index 000000000000..6bc35448d084 --- /dev/null +++ b/e2e/test-todo/__tests__/only-todo.test.js @@ -0,0 +1,16 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. 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. + */ + +/* eslint-disable jest/no-focused-tests */ + +'use strict'; + +describe.only("with .only, should show 'passed', 'todo', 'todo'", () => { + test('passing test', () => {}); + test.todo('todo test 1'); + test.todo('todo test 2'); +}); diff --git a/packages/jest-circus/src/run.ts b/packages/jest-circus/src/run.ts index 562a49aa38e3..4d1f69a4e609 100644 --- a/packages/jest-circus/src/run.ts +++ b/packages/jest-circus/src/run.ts @@ -147,7 +147,7 @@ const _runTest = async ( const isSkipped = parentSkipped || test.mode === 'skip' || - (hasFocusedTests && test.mode !== 'only') || + (hasFocusedTests && test.mode === undefined) || (testNamePattern && !testNamePattern.test(getTestID(test))); if (isSkipped) {