diff --git a/packages/expect/src/index.ts b/packages/expect/src/index.ts index 1e83f46d6d01..e3fbcc70282c 100644 --- a/packages/expect/src/index.ts +++ b/packages/expect/src/index.ts @@ -43,7 +43,6 @@ import { INTERNAL_MATCHER_FLAG, getState, setState, - clearState, getMatchers, setMatchers, } from './jestMatchersObject'; @@ -403,7 +402,6 @@ expect.assertions = assertions; expect.hasAssertions = hasAssertions; expect.getState = getState; expect.setState = setState; -expect.clearState = clearState; expect.extractExpectedAssertionsErrors = extractExpectedAssertionsErrors; const expectExport = expect as Expect; diff --git a/packages/expect/src/jestMatchersObject.ts b/packages/expect/src/jestMatchersObject.ts index cbedc9340cd1..7a35146558e3 100644 --- a/packages/expect/src/jestMatchersObject.ts +++ b/packages/expect/src/jestMatchersObject.ts @@ -37,10 +37,6 @@ export const setState = (state: object) => { Object.assign((global as any)[JEST_MATCHERS_OBJECT].state, state); }; -export const clearState = () => { - getState().snapshotState.clear(); -}; - export const getMatchers = () => (global as any)[JEST_MATCHERS_OBJECT].matchers; export const setMatchers = ( diff --git a/packages/expect/src/types.ts b/packages/expect/src/types.ts index e688f52e46b8..04f3950cbbf9 100644 --- a/packages/expect/src/types.ts +++ b/packages/expect/src/types.ts @@ -6,7 +6,6 @@ * */ import {Config} from '@jest/types'; -import {SnapshotStateType} from 'jest-snapshot'; import * as jestMatcherUtils from 'jest-matcher-utils'; import {INTERNAL_MATCHER_FLAG} from './jestMatchersObject'; @@ -45,7 +44,6 @@ export type MatcherState = { isExpectingAssertions?: boolean; isNot: boolean; promise: string; - snapshotState: SnapshotStateType; suppressedErrors: Array; testPath?: Config.Path; utils: typeof jestMatcherUtils & { diff --git a/packages/jest-circus/src/eventHandler.ts b/packages/jest-circus/src/eventHandler.ts index 4bcfec91dbdf..1accee9c36a0 100644 --- a/packages/jest-circus/src/eventHandler.ts +++ b/packages/jest-circus/src/eventHandler.ts @@ -148,11 +148,7 @@ const eventHandler: Circus.EventHandler = (event, state): void => { break; } case 'test_retry': { - // Clear errors so tests can be retried (and not immediately fail) event.test.errors = []; - // Clear any snapshot data that occurred in previous test run - global.expect.clearState(); - break; } case 'run_start': { diff --git a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts index 9804125de04e..bf08eb4494a1 100644 --- a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts +++ b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts @@ -131,6 +131,8 @@ export const initialize = ({ }); setState({snapshotState, testPath}); + addEventHandler(handleSnapshotStateAfterRetry(snapshotState)); + // Return it back to the outer scope (test runner outside the VM). return {globals, snapshotState}; }; @@ -243,6 +245,17 @@ export const runAndTransformResultsToJestFormat = async ({ }; }; +const handleSnapshotStateAfterRetry = (snapshotState: SnapshotState) => ( + event: Circus.Event, +) => { + switch (event.name) { + case 'test_retry': { + // Clear any snapshot data that occurred in previous test run + snapshotState.clear(); + } + } +}; + const eventHandler = (event: Circus.Event) => { switch (event.name) { case 'test_start': { diff --git a/packages/jest-snapshot/src/State.ts b/packages/jest-snapshot/src/State.ts index f3d4dec0fa02..8c01e9f3c94c 100644 --- a/packages/jest-snapshot/src/State.ts +++ b/packages/jest-snapshot/src/State.ts @@ -42,12 +42,12 @@ export default class SnapshotState { private _index: number; private _updateSnapshot: Config.SnapshotUpdateState; private _snapshotData: SnapshotData; + private _initialData: SnapshotData; private _snapshotPath: Config.Path; private _inlineSnapshots: Array; private _uncheckedKeys: Set; private _getBabelTraverse: () => Function; private _getPrettier: () => null | any; - private _reinitializeData: () => void; added: number; expand: boolean; @@ -61,7 +61,7 @@ export default class SnapshotState { this._snapshotPath, options.updateSnapshot, ); - + this._initialData = data; this._snapshotData = data; this._dirty = dirty; this._getBabelTraverse = options.getBabelTraverse; @@ -76,17 +76,6 @@ export default class SnapshotState { this.unmatched = 0; this._updateSnapshot = options.updateSnapshot; this.updated = 0; - - this._reinitializeData = () => { - this._snapshotData = data; - this._inlineSnapshots = []; - this._counters = new Map(); - this._index = 0; - this.added = 0; - this.matched = 0; - this.unmatched = 0; - this.updated = 0; - }; } markSnapshotsAsCheckedForTest(testName: string) { @@ -122,7 +111,14 @@ export default class SnapshotState { } clear() { - this._reinitializeData(); + this._snapshotData = this._initialData; + this._inlineSnapshots = []; + this._counters = new Map(); + this._index = 0; + this.added = 0; + this.matched = 0; + this.unmatched = 0; + this.updated = 0; } save() {