diff --git a/CHANGELOG.md b/CHANGELOG.md index 55e39de6c6ea..112c60a1c332 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - `[jest-cli, jest-core]` Add `--ignoreProjects` CLI argument to ignore test suites by project name ([#12620](https://github.com/facebook/jest/pull/12620)) - `[jest-core]` Pass project config to `globalSetup`/`globalTeardown` function as second argument ([#12440](https://github.com/facebook/jest/pull/12440)) - `[jest-core]` Stabilize test runners with event emitters ([#12641](https://github.com/facebook/jest/pull/12641)) +- `[jest-core, jest-watcher]` [**BREAKING**] Move `TestWatcher` class to `jest-watcher` package ([#12652](https://github.com/facebook/jest/pull/12652)) - `[jest-environment-jsdom]` [**BREAKING**] Upgrade jsdom to 19.0.0 ([#12290](https://github.com/facebook/jest/pull/12290)) - `[jest-environment-jsdom]` [**BREAKING**] Add default `browser` condition to `exportConditions` for `jsdom` environment ([#11924](https://github.com/facebook/jest/pull/11924)) - `[jest-environment-jsdom]` [**BREAKING**] Pass global config to Jest environment constructor for `jsdom` environment ([#12461](https://github.com/facebook/jest/pull/12461)) diff --git a/e2e/transform/transform-runner/runner.ts b/e2e/transform/transform-runner/runner.ts index fb45dbf4be69..325956eae108 100644 --- a/e2e/transform/transform-runner/runner.ts +++ b/e2e/transform/transform-runner/runner.ts @@ -13,8 +13,8 @@ import type { OnTestStart, OnTestSuccess, TestRunnerContext, - TestWatcher, } from 'jest-runner'; +import type {TestWatcher} from 'jest-watcher'; export default class BaseTestRunner { private _globalConfig: Config.GlobalConfig; diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 37a50b158f73..ccf923767447 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -20,7 +20,6 @@ "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.10.2", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^28.0.0-alpha.3", diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index 2a8872edd507..9cceb5fb1bdd 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -36,8 +36,8 @@ import { cleanup as cleanupSnapshots, } from 'jest-snapshot'; import {requireOrImportModule} from 'jest-util'; +import type {TestWatcher} from 'jest-watcher'; import ReporterDispatcher from './ReporterDispatcher'; -import type TestWatcher from './TestWatcher'; import {shouldRunInBand} from './testSchedulerHelper'; type TestRunnerConstructor = new ( diff --git a/packages/jest-core/src/__tests__/watch.test.js b/packages/jest-core/src/__tests__/watch.test.js index d38508a2a64b..0ef865a7e74a 100644 --- a/packages/jest-core/src/__tests__/watch.test.js +++ b/packages/jest-core/src/__tests__/watch.test.js @@ -7,9 +7,8 @@ */ import chalk from 'chalk'; -import {JestHook, KEYS} from 'jest-watcher'; // eslint-disable-next-line import/order -import TestWatcher from '../TestWatcher'; +import {JestHook, KEYS, TestWatcher} from 'jest-watcher'; const runJestMock = jest.fn(); const watchPluginPath = `${__dirname}/__fixtures__/watchPlugin`; diff --git a/packages/jest-core/src/cli/index.ts b/packages/jest-core/src/cli/index.ts index b7727a263b93..c80f06b0040c 100644 --- a/packages/jest-core/src/cli/index.ts +++ b/packages/jest-core/src/cli/index.ts @@ -16,7 +16,7 @@ import {readConfigs} from 'jest-config'; import type HasteMap from 'jest-haste-map'; import Runtime, {Context} from 'jest-runtime'; import {createDirectory, preRunMessage} from 'jest-util'; -import TestWatcher from '../TestWatcher'; +import {TestWatcher} from 'jest-watcher'; import {formatHandleErrors} from '../collectHandles'; import getChangedFilesPromise from '../getChangedFilesPromise'; import getConfigsOfProjectsToRun from '../getConfigsOfProjectsToRun'; diff --git a/packages/jest-core/src/index.ts b/packages/jest-core/src/index.ts index 6912817f6bfa..17a839d33cd7 100644 --- a/packages/jest-core/src/index.ts +++ b/packages/jest-core/src/index.ts @@ -7,6 +7,5 @@ export {default as SearchSource} from './SearchSource'; export {createTestScheduler} from './TestScheduler'; -export {default as TestWatcher} from './TestWatcher'; export {runCLI} from './cli'; export {default as getVersion} from './version'; diff --git a/packages/jest-core/src/runJest.ts b/packages/jest-core/src/runJest.ts index 7e7bf5b86501..977cd07addfa 100644 --- a/packages/jest-core/src/runJest.ts +++ b/packages/jest-core/src/runJest.ts @@ -24,10 +24,10 @@ import Resolver from 'jest-resolve'; import type {Context} from 'jest-runtime'; import {requireOrImportModule, tryRealpath} from 'jest-util'; import {JestHook, JestHookEmitter} from 'jest-watcher'; +import type {TestWatcher} from 'jest-watcher'; import type FailedTestsCache from './FailedTestsCache'; import SearchSource from './SearchSource'; import {TestSchedulerContext, createTestScheduler} from './TestScheduler'; -import type TestWatcher from './TestWatcher'; import collectNodeHandles, {HandleCollectionResult} from './collectHandles'; import getNoTestsFoundMessage from './getNoTestsFoundMessage'; import runGlobalHook from './runGlobalHook'; diff --git a/packages/jest-core/src/watch.ts b/packages/jest-core/src/watch.ts index 357113ef8c9c..17eb04f1ad87 100644 --- a/packages/jest-core/src/watch.ts +++ b/packages/jest-core/src/watch.ts @@ -28,12 +28,12 @@ import { AllowedConfigOptions, JestHook, KEYS, + TestWatcher, WatchPlugin, WatchPluginClass, } from 'jest-watcher'; import FailedTestsCache from './FailedTestsCache'; import SearchSource from './SearchSource'; -import TestWatcher from './TestWatcher'; import getChangedFilesPromise from './getChangedFilesPromise'; import activeFilters from './lib/activeFiltersMessage'; import createContext from './lib/createContext'; diff --git a/packages/jest-runner/__typetests__/jest-runner.test.ts b/packages/jest-runner/__typetests__/jest-runner.test.ts index 95ec032693b5..04c00ab32d06 100644 --- a/packages/jest-runner/__typetests__/jest-runner.test.ts +++ b/packages/jest-runner/__typetests__/jest-runner.test.ts @@ -15,9 +15,9 @@ import type { OnTestSuccess, TestRunnerContext, TestRunnerOptions, - TestWatcher, UnsubscribeFn, } from 'jest-runner'; +import type {TestWatcher} from 'jest-watcher'; const globalConfig = {} as Config.GlobalConfig; const runnerContext = {} as TestRunnerContext; diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 7103c9861d3c..441e7bd4c428 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -34,6 +34,7 @@ "jest-resolve": "^28.0.0-alpha.8", "jest-runtime": "^28.0.0-alpha.8", "jest-util": "^28.0.0-alpha.8", + "jest-watcher": "^28.0.0-alpha.8", "jest-worker": "^28.0.0-alpha.8", "source-map-support": "^0.5.6", "throat": "^6.0.1" diff --git a/packages/jest-runner/src/__tests__/testRunner.test.ts b/packages/jest-runner/src/__tests__/testRunner.test.ts index b71f179afa3d..85ee76e0f5d3 100644 --- a/packages/jest-runner/src/__tests__/testRunner.test.ts +++ b/packages/jest-runner/src/__tests__/testRunner.test.ts @@ -6,9 +6,9 @@ * */ -import {TestWatcher} from '@jest/core'; import type {TestContext} from '@jest/test-result'; import {makeGlobalConfig, makeProjectConfig} from '@jest/test-utils'; +import {TestWatcher} from 'jest-watcher'; import TestRunner from '../index'; let mockWorkerFarm; diff --git a/packages/jest-runner/src/index.ts b/packages/jest-runner/src/index.ts index c5b7dcfc0584..85f41b28c50d 100644 --- a/packages/jest-runner/src/index.ts +++ b/packages/jest-runner/src/index.ts @@ -15,15 +15,11 @@ import type { TestResult, } from '@jest/test-result'; import {deepCyclicCopy} from 'jest-util'; +import type {TestWatcher} from 'jest-watcher'; import {PromiseWithCustomMessage, Worker} from 'jest-worker'; import runTest from './runTest'; import type {SerializableResolver, worker} from './testWorker'; -import { - EmittingTestRunner, - TestRunnerOptions, - TestWatcher, - UnsubscribeFn, -} from './types'; +import {EmittingTestRunner, TestRunnerOptions, UnsubscribeFn} from './types'; const TEST_WORKER_PATH = require.resolve('./testWorker'); @@ -36,7 +32,6 @@ export type { OnTestFailure, OnTestStart, OnTestSuccess, - TestWatcher, TestRunnerContext, TestRunnerOptions, JestTestRunner, diff --git a/packages/jest-runner/src/types.ts b/packages/jest-runner/src/types.ts index 71da90742fab..ddc901f6c378 100644 --- a/packages/jest-runner/src/types.ts +++ b/packages/jest-runner/src/types.ts @@ -5,7 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -import type Emittery = require('emittery'); import type {JestEnvironment} from '@jest/environment'; import type { SerializableError, @@ -16,6 +15,7 @@ import type { } from '@jest/test-result'; import type {Config} from '@jest/types'; import type RuntimeType from 'jest-runtime'; +import type {TestWatcher} from 'jest-watcher'; export type ErrorWithCode = Error & {code?: string}; @@ -96,12 +96,3 @@ export abstract class EmittingTestRunner extends BaseTestRunner { } export type JestTestRunner = CallbackTestRunner | EmittingTestRunner; - -// TODO: Should live in `@jest/core` or `jest-watcher` -type WatcherState = {interrupted: boolean}; -export interface TestWatcher extends Emittery<{change: WatcherState}> { - state: WatcherState; - setState(state: WatcherState): void; - isInterrupted(): boolean; - isWatchMode(): boolean; -} diff --git a/packages/jest-runner/tsconfig.json b/packages/jest-runner/tsconfig.json index 7ce0efdb2782..36b3ff8099d2 100644 --- a/packages/jest-runner/tsconfig.json +++ b/packages/jest-runner/tsconfig.json @@ -20,6 +20,7 @@ {"path": "../jest-transform"}, {"path": "../jest-types"}, {"path": "../jest-util"}, + {"path": "../jest-watcher"}, {"path": "../jest-worker"} ] } diff --git a/packages/jest-watcher/package.json b/packages/jest-watcher/package.json index b44d8a1bb73a..027af5857016 100644 --- a/packages/jest-watcher/package.json +++ b/packages/jest-watcher/package.json @@ -17,6 +17,7 @@ "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "emittery": "^0.10.2", "jest-util": "^28.0.0-alpha.8", "string-length": "^4.0.1" }, diff --git a/packages/jest-core/src/TestWatcher.ts b/packages/jest-watcher/src/TestWatcher.ts similarity index 100% rename from packages/jest-core/src/TestWatcher.ts rename to packages/jest-watcher/src/TestWatcher.ts diff --git a/packages/jest-watcher/src/index.ts b/packages/jest-watcher/src/index.ts index 05ecbadbe682..0940eb17c89b 100644 --- a/packages/jest-watcher/src/index.ts +++ b/packages/jest-watcher/src/index.ts @@ -8,6 +8,7 @@ export {default as BaseWatchPlugin} from './BaseWatchPlugin'; export {default as JestHook} from './JestHooks'; export {default as PatternPrompt} from './PatternPrompt'; +export {default as TestWatcher} from './TestWatcher'; export * from './constants'; export type { AllowedConfigOptions, diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index 9c4f958cb98d..d101fd921a01 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -7,7 +7,6 @@ export { SearchSource, - TestWatcher, createTestScheduler, getVersion, runCLI, diff --git a/yarn.lock b/yarn.lock index 674344c1f98d..a9276f7a5f4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2557,7 +2557,6 @@ __metadata: "@types/rimraf": ^3.0.0 ansi-escapes: ^4.2.1 chalk: ^4.0.0 - emittery: ^0.10.2 exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^28.0.0-alpha.3 @@ -13514,6 +13513,7 @@ __metadata: jest-resolve: ^28.0.0-alpha.8 jest-runtime: ^28.0.0-alpha.8 jest-util: ^28.0.0-alpha.8 + jest-watcher: ^28.0.0-alpha.8 jest-worker: ^28.0.0-alpha.8 source-map-support: ^0.5.6 throat: ^6.0.1 @@ -13721,6 +13721,7 @@ __metadata: "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 + emittery: ^0.10.2 jest-util: ^28.0.0-alpha.8 string-length: ^4.0.1 languageName: unknown