diff --git a/e2e/__tests__/toMatchInlineSnapshotWithJSX.test.ts b/e2e/__tests__/toMatchInlineSnapshotWithJSX.test.ts
index e8c82821b63b..adf288f69706 100644
--- a/e2e/__tests__/toMatchInlineSnapshotWithJSX.test.ts
+++ b/e2e/__tests__/toMatchInlineSnapshotWithJSX.test.ts
@@ -33,15 +33,15 @@ it('successfully runs the tests inside `to-match-inline-snapshot-with-jsx/`', ()
expect(updateSnapshotRun.json.testResults[0].message).toMatchInlineSnapshot(`
" ● Test suite failed to run
- SyntaxError: /home/eps1lon/Development/forks/jest/e2e/to-match-inline-snapshot-with-jsx/__tests__/MismatchingSnapshot.test.js: Support for the experimental syntax 'jsx' isn't currently enabled (5:26):
+ SyntaxError: /home/eps1lon/Development/forks/jest/e2e/to-match-inline-snapshot-with-jsx/__tests__/MismatchingSnapshot.test.js: Support for the experimental syntax 'jsx' isn't currently enabled (12:26):
- 3 |
- 4 | test('
x
', () => {
- > 5 | expect(renderer.create(x
).toJSON()).toMatchInlineSnapshot(\`
- | ^
- 6 |
- 7 | y
- 8 |
+ 10 |
+ 11 | test('x
', () => {
+ > 12 | expect(renderer.create(x
).toJSON()).toMatchInlineSnapshot(\`
+ | ^
+ 13 |
+ 14 | y
+ 15 |
Add @babel/preset-react (https://git.io/JfeDR) to the 'presets' section of your Babel config to enable transformation.
If you want to leave it as-is, add @babel/plugin-syntax-jsx (https://git.io/vb4yA) to the 'plugins' section to enable parsing.
@@ -66,15 +66,15 @@ it('successfully runs the tests inside `to-match-inline-snapshot-with-jsx/`', ()
+ x
- 3 |
- 4 | test('x
', () => {
- > 5 | expect(renderer.create(x
).toJSON()).toMatchInlineSnapshot(\`
- | ^
- 6 |
- 7 | y
- 8 |
+ 10 |
+ 11 | test('x
', () => {
+ > 12 | expect(renderer.create(x
).toJSON()).toMatchInlineSnapshot(\`
+ | ^
+ 13 |
+ 14 | y
+ 15 |
- at Object.toMatchInlineSnapshot (__tests__/MismatchingSnapshot.test.js:5:50)
+ at Object.toMatchInlineSnapshot (__tests__/MismatchingSnapshot.test.js:12:50)
"
`);
});
diff --git a/e2e/to-match-inline-snapshot-with-jsx/MismatchingSnapshot.original.js b/e2e/to-match-inline-snapshot-with-jsx/MismatchingSnapshot.original.js
index 24b44b9139fa..09fdddae3d69 100644
--- a/e2e/to-match-inline-snapshot-with-jsx/MismatchingSnapshot.original.js
+++ b/e2e/to-match-inline-snapshot-with-jsx/MismatchingSnapshot.original.js
@@ -1,3 +1,10 @@
+/**
+ * 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.
+ */
+
import React from 'react';
import renderer from 'react-test-renderer';
diff --git a/e2e/to-match-inline-snapshot-with-jsx/__tests__/MismatchingSnapshot.test.js b/e2e/to-match-inline-snapshot-with-jsx/__tests__/MismatchingSnapshot.test.js
index 24b44b9139fa..09fdddae3d69 100644
--- a/e2e/to-match-inline-snapshot-with-jsx/__tests__/MismatchingSnapshot.test.js
+++ b/e2e/to-match-inline-snapshot-with-jsx/__tests__/MismatchingSnapshot.test.js
@@ -1,3 +1,10 @@
+/**
+ * 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.
+ */
+
import React from 'react';
import renderer from 'react-test-renderer';
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 6e00f54eed5f..f348e9006932 100644
--- a/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts
+++ b/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts
@@ -114,6 +114,7 @@ export const initialize = async ({
const snapshotState = new SnapshotState(snapshotPath, {
expand: globalConfig.expand,
prettierPath: config.prettierPath,
+ rootDir: config.rootDir,
snapshotFormat: config.snapshotFormat,
updateSnapshot: globalConfig.updateSnapshot,
});
diff --git a/packages/jest-jasmine2/src/setup_jest_globals.ts b/packages/jest-jasmine2/src/setup_jest_globals.ts
index 1a8cec06c940..add4a72f4c7a 100644
--- a/packages/jest-jasmine2/src/setup_jest_globals.ts
+++ b/packages/jest-jasmine2/src/setup_jest_globals.ts
@@ -104,12 +104,13 @@ export default async function setupJestGlobals({
patchJasmine();
const {expand, updateSnapshot} = globalConfig;
- const {prettierPath, snapshotFormat} = config;
+ const {prettierPath, rootDir, snapshotFormat} = config;
const snapshotResolver = await buildSnapshotResolver(config, localRequire);
const snapshotPath = snapshotResolver.resolveSnapshotPath(testPath);
const snapshotState = new SnapshotState(snapshotPath, {
expand,
prettierPath,
+ rootDir,
snapshotFormat,
updateSnapshot,
});
diff --git a/packages/jest-snapshot/src/InlineSnapshots.ts b/packages/jest-snapshot/src/InlineSnapshots.ts
index 4f1310528f47..1bc45aeac5dd 100644
--- a/packages/jest-snapshot/src/InlineSnapshots.ts
+++ b/packages/jest-snapshot/src/InlineSnapshots.ts
@@ -46,6 +46,7 @@ export type InlineSnapshot = {
export function saveInlineSnapshots(
snapshots: Array,
+ rootDir: string,
prettierPath: string,
): void {
let prettier: Prettier | null = null;
@@ -64,6 +65,7 @@ export function saveInlineSnapshots(
saveSnapshotsForFile(
snapshotsByFile[sourceFilePath],
sourceFilePath,
+ rootDir,
prettier && semver.gte(prettier.version, '1.5.0') ? prettier : undefined,
);
}
@@ -72,6 +74,7 @@ export function saveInlineSnapshots(
const saveSnapshotsForFile = (
snapshots: Array,
sourceFilePath: string,
+ rootDir: string,
prettier?: Prettier,
) => {
const sourceFile = fs.readFileSync(sourceFilePath, 'utf8');
@@ -96,7 +99,7 @@ const saveSnapshotsForFile = (
filename: sourceFilePath,
plugins,
presets,
- root: path.dirname(sourceFilePath),
+ root: rootDir,
});
if (!ast) {
throw new Error(`jest-snapshot: Failed to parse ${sourceFilePath}`);
diff --git a/packages/jest-snapshot/src/State.ts b/packages/jest-snapshot/src/State.ts
index fc96a3b47add..ef424b8bfe48 100644
--- a/packages/jest-snapshot/src/State.ts
+++ b/packages/jest-snapshot/src/State.ts
@@ -27,6 +27,7 @@ export type SnapshotStateOptions = {
prettierPath: string;
expand?: boolean;
snapshotFormat: PrettyFormatOptions;
+ rootDir: string;
};
export type SnapshotMatchOptions = {
@@ -64,6 +65,7 @@ export default class SnapshotState {
private _uncheckedKeys: Set;
private _prettierPath: string;
private _snapshotFormat: PrettyFormatOptions;
+ private _rootDir: string;
added: number;
expand: boolean;
@@ -92,6 +94,7 @@ export default class SnapshotState {
this._updateSnapshot = options.updateSnapshot;
this.updated = 0;
this._snapshotFormat = options.snapshotFormat;
+ this._rootDir = options.rootDir;
}
markSnapshotsAsCheckedForTest(testName: string): void {
@@ -154,7 +157,11 @@ export default class SnapshotState {
saveSnapshotFile(this._snapshotData, this._snapshotPath);
}
if (hasInlineSnapshots) {
- saveInlineSnapshots(this._inlineSnapshots, this._prettierPath);
+ saveInlineSnapshots(
+ this._inlineSnapshots,
+ this._rootDir,
+ this._prettierPath,
+ );
}
status.saved = true;
} else if (!hasExternalSnapshots && fs.existsSync(this._snapshotPath)) {