From 1b87ca46d942aafe240fdee74d07ad1916b68b31 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Thu, 21 Oct 2021 19:30:36 -0400 Subject: [PATCH] Replace enzyme with React testing library in trace-tab --- .../test/TestGenerator.spec.tsx | 2 +- .../package.json | 6 +- .../containers/StackTrace.tsx | 6 +- .../test/StackTraceTab.spec.tsx | 64 +-- .../__snapshots__/StackTraceTab.spec.tsx.snap | 413 +++--------------- yarn.lock | 6 +- 6 files changed, 94 insertions(+), 403 deletions(-) diff --git a/packages/redux-devtools-inspector-monitor-test-tab/test/TestGenerator.spec.tsx b/packages/redux-devtools-inspector-monitor-test-tab/test/TestGenerator.spec.tsx index 51a15ae8..7bad8807 100644 --- a/packages/redux-devtools-inspector-monitor-test-tab/test/TestGenerator.spec.tsx +++ b/packages/redux-devtools-inspector-monitor-test-tab/test/TestGenerator.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render } from '@testing-library/react'; import { PerformAction } from '@redux-devtools/core'; import { Action } from 'redux'; import TestGenerator from '../src/TestGenerator'; diff --git a/packages/redux-devtools-inspector-monitor-trace-tab/package.json b/packages/redux-devtools-inspector-monitor-trace-tab/package.json index 5359e1cb..60a3bb93 100644 --- a/packages/redux-devtools-inspector-monitor-trace-tab/package.json +++ b/packages/redux-devtools-inspector-monitor-trace-tab/package.json @@ -43,9 +43,8 @@ "@babel/preset-typescript": "^7.15.0", "@redux-devtools/core": "^3.9.0", "@redux-devtools/inspector-monitor": "^1.0.0", + "@testing-library/react": "^12.1.2", "@types/babel__code-frame": "^7.0.3", - "@types/enzyme": "^3.10.10", - "@types/enzyme-adapter-react-16": "^1.0.6", "@types/html-entities": "^1.3.4", "@types/jest": "^27.0.2", "@types/react": "^16.14.18", @@ -53,9 +52,6 @@ "@types/source-map": "0.5.2", "@typescript-eslint/eslint-plugin": "^5.1.0", "@typescript-eslint/parser": "^5.1.0", - "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", - "enzyme-to-json": "^3.6.2", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-jest": "^25.2.2", diff --git a/packages/redux-devtools-inspector-monitor-trace-tab/src/react-error-overlay/containers/StackTrace.tsx b/packages/redux-devtools-inspector-monitor-trace-tab/src/react-error-overlay/containers/StackTrace.tsx index 6369fe96..f285330e 100644 --- a/packages/redux-devtools-inspector-monitor-trace-tab/src/react-error-overlay/containers/StackTrace.tsx +++ b/packages/redux-devtools-inspector-monitor-trace-tab/src/react-error-overlay/containers/StackTrace.tsx @@ -94,7 +94,11 @@ class StackTrace extends Component { } render() { - return
{this.renderFrames()}
; + return ( +
+ {this.renderFrames()} +
+ ); } } diff --git a/packages/redux-devtools-inspector-monitor-trace-tab/test/StackTraceTab.spec.tsx b/packages/redux-devtools-inspector-monitor-trace-tab/test/StackTraceTab.spec.tsx index 8e3a5c1d..9cf32961 100644 --- a/packages/redux-devtools-inspector-monitor-trace-tab/test/StackTraceTab.spec.tsx +++ b/packages/redux-devtools-inspector-monitor-trace-tab/test/StackTraceTab.spec.tsx @@ -1,22 +1,7 @@ -import React, { ReactComponentElement } from 'react'; -import { configure, mount, ReactWrapper } from 'enzyme'; -import toJson from 'enzyme-to-json'; +import React from 'react'; +import { render, screen } from '@testing-library/react'; import StackTraceTab from '../src/StackTraceTab'; -import Adapter from 'enzyme-adapter-react-16'; -configure({ adapter: new Adapter() }); - -function genAsyncSnapshot( - component: ReactWrapper, - done: () => void -) { - setTimeout(() => { - component.update(); - expect(toJson(component)).toMatchSnapshot(); - done(); - }); -} - const actions = { 0: { type: 'PERFORM_ACTION', action: { type: '@@INIT' } }, 1: { type: 'PERFORM_ACTION', action: { type: 'INCREMENT_COUNTER' } }, @@ -32,37 +17,32 @@ const actions = { const StackTraceTabAsAny = StackTraceTab as any; describe('StackTraceTab component', () => { - it('should render with no props', () => { - return new Promise((done) => { - const component = mount(); - genAsyncSnapshot(component, done); - }); + it('should render with no props', async () => { + const { container } = render(); + await screen.findByTestId('stack-trace'); + expect(container.firstChild).toMatchSnapshot(); }); - it('should render with props, but without stack', () => { - return new Promise((done) => { - const component = mount( - - ); - genAsyncSnapshot(component, done); - }); + it('should render with props, but without stack', async () => { + const { container } = render( + + ); + await screen.findByTestId('stack-trace'); + expect(container.firstChild).toMatchSnapshot(); }); it('should render the link to docs', () => { - return new Promise((done) => { - const component = mount( - - ); - genAsyncSnapshot(component, done); - }); + const { container } = render( + + ); + expect(container.firstChild).toMatchSnapshot(); }); - it('should render with trace stack', () => { - return new Promise((done) => { - const component = mount( - - ); - genAsyncSnapshot(component, done); - }); + it('should render with trace stack', async () => { + const { container } = render( + + ); + await screen.findByTestId('stack-trace'); + expect(container.firstChild).toMatchSnapshot(); }); }); diff --git a/packages/redux-devtools-inspector-monitor-trace-tab/test/__snapshots__/StackTraceTab.spec.tsx.snap b/packages/redux-devtools-inspector-monitor-trace-tab/test/__snapshots__/StackTraceTab.spec.tsx.snap index ce4cb318..1d844da9 100644 --- a/packages/redux-devtools-inspector-monitor-trace-tab/test/__snapshots__/StackTraceTab.spec.tsx.snap +++ b/packages/redux-devtools-inspector-monitor-trace-tab/test/__snapshots__/StackTraceTab.spec.tsx.snap @@ -1,376 +1,91 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`StackTraceTab component should render the link to docs 1`] = ` - -
- To enable tracing action calls, you should set \`trace\` option to \`true\` for Redux DevTools enhancer. Refer to - - - this page - - - for more details. -
-
+ this page + + + for more details. + `; exports[`StackTraceTab component should render with no props 1`] = ` -
- -
- -
- + data-testid="stack-trace" + style="font-size: 1em; flex: 0 1 auto; min-height: 0px; overflow: auto;" + /> +
`; exports[`StackTraceTab component should render with props, but without stack 1`] = ` -
- -
- -
- + data-testid="stack-trace" + style="font-size: 1em; flex: 0 1 auto; min-height: 0px; overflow: auto;" + /> +
`; exports[`StackTraceTab component should render with trace stack 1`] = ` -
- -
+ +
+
- -
- -
-
- fn1 -
-
- - app.js:72:24 - -
-
-
- -
-
- fn2 -
-
- - app.js:84:31 - -
-
-
- -
+ fn1
- +
+ + app.js:72:24 + +
+
+
+
+ fn2 +
+
+ + app.js:84:31 + +
+
+
- +
-
+ `; diff --git a/yarn.lock b/yarn.lock index 462bc562..a92f41aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4801,10 +4801,9 @@ __metadata: "@babel/runtime": ^7.15.4 "@redux-devtools/core": ^3.9.0 "@redux-devtools/inspector-monitor": ^1.0.0 + "@testing-library/react": ^12.1.2 "@types/babel__code-frame": ^7.0.3 "@types/chrome": ^0.0.159 - "@types/enzyme": ^3.10.10 - "@types/enzyme-adapter-react-16": ^1.0.6 "@types/html-entities": ^1.3.4 "@types/jest": ^27.0.2 "@types/react": ^16.14.18 @@ -4813,9 +4812,6 @@ __metadata: "@typescript-eslint/eslint-plugin": ^5.1.0 "@typescript-eslint/parser": ^5.1.0 anser: ^2.1.0 - enzyme: ^3.11.0 - enzyme-adapter-react-16: ^1.15.6 - enzyme-to-json: ^3.6.2 eslint: ^7.32.0 eslint-config-prettier: ^8.3.0 eslint-plugin-jest: ^25.2.2