From a686dfabc08c956dbb57c32dc23fe9934fce4504 Mon Sep 17 00:00:00 2001 From: Brandon Carroll Date: Sun, 19 May 2019 21:54:19 -0400 Subject: [PATCH 1/3] feat(cleanup): add after each cleanup helper --- cleanup-after-each.js | 1 + other/cheat-sheet.pdf | Bin 71289 -> 71305 bytes package.json | 1 + src/__tests__/act.js | 4 +++- src/__tests__/bugs.js | 4 +++- src/__tests__/debug.js | 3 ++- src/__tests__/end-to-end.js | 4 +++- src/__tests__/events.js | 4 +++- src/__tests__/fetch.js | 4 +++- src/__tests__/forms.js | 4 +++- src/__tests__/misc.js | 4 +++- src/__tests__/render.js | 4 +++- src/__tests__/rerender.js | 4 +++- src/__tests__/stopwatch.js | 4 +++- src/index.js | 19 +++++++++++++++--- src/lib/__tests__/get-by-errors.js | 4 +++- src/lib/__tests__/misc.js | 6 ++++-- src/lib/__tests__/pretty-print.js | 4 +++- src/lib/__tests__/queries.find.js | 4 +++- src/lib/__tests__/text-matchers.js | 4 +++- src/lib/__tests__/to-json.js | 4 +++- ...t-for-element-to-be-removed.fake-timers.js | 4 +++- .../wait-for-element-to-be-removed.js | 4 +++- src/lib/__tests__/wait-for-element.js | 4 +++- src/lib/__tests__/within.js | 4 +++- src/preset/configure.js | 4 ++++ typings/index.d.ts | 2 ++ 27 files changed, 87 insertions(+), 25 deletions(-) create mode 100644 cleanup-after-each.js diff --git a/cleanup-after-each.js b/cleanup-after-each.js new file mode 100644 index 0000000..8f2e439 --- /dev/null +++ b/cleanup-after-each.js @@ -0,0 +1 @@ +afterEach(require('./dist').cleanup); diff --git a/other/cheat-sheet.pdf b/other/cheat-sheet.pdf index 0210ae3364c92d31ad873173bbb93a9e9a1fbdae..0df2ce2ae3ccbf549216b5e7a53e828ce3c6c7a8 100644 GIT binary patch delta 36908 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 h>2xFlAHmEt?GMzWJ?OJ=FQ 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 delta 36848 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

aVq5K8;w(qzjV1N33_u&ic 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 { const effectCb = jest.fn(); diff --git a/src/__tests__/bugs.js b/src/__tests__/bugs.js index 30e61e1..063d862 100644 --- a/src/__tests__/bugs.js +++ b/src/__tests__/bugs.js @@ -1,7 +1,9 @@ import React from 'react'; import { Text, View } from 'react-native'; -import { render, queryAllByProp } from '../'; +import { render, queryAllByProp, cleanup } from '../'; + +afterEach(cleanup); // This is to ensure custom queries can be passed to render. In most cases, you // wouldn't/shouldn't need to do this, but we do allow it so we'll test to diff --git a/src/__tests__/debug.js b/src/__tests__/debug.js index 3220ca4..231154d 100644 --- a/src/__tests__/debug.js +++ b/src/__tests__/debug.js @@ -1,13 +1,14 @@ import React from 'react'; import { Text } from 'react-native'; -import { render } from '../'; +import { cleanup, render } from '../'; beforeEach(() => { jest.spyOn(console, 'log').mockImplementation(() => {}); }); afterEach(() => { + cleanup(); console.log.mockRestore(); }); diff --git a/src/__tests__/end-to-end.js b/src/__tests__/end-to-end.js index 455b06e..5a1b6f8 100644 --- a/src/__tests__/end-to-end.js +++ b/src/__tests__/end-to-end.js @@ -2,7 +2,9 @@ import React from 'react'; import 'jest-native/extend-expect'; import { Text } from 'react-native'; -import { render, wait } from '../'; +import { cleanup, render, wait } from '../'; + +afterEach(cleanup); const fetchAMessage = () => new Promise(resolve => { diff --git a/src/__tests__/events.js b/src/__tests__/events.js index 0f0c21c..5f03421 100644 --- a/src/__tests__/events.js +++ b/src/__tests__/events.js @@ -2,7 +2,9 @@ import React from 'react'; import 'jest-native/extend-expect'; import { Button, Image, Text, TextInput, TouchableHighlight } from 'react-native'; -import { render, fireEvent, eventMap, NativeTestEvent, getEventHandlerName, wait } from '../'; +import { render, fireEvent, eventMap, getEventHandlerName, wait, cleanup } from '../'; + +afterEach(cleanup); Object.keys(eventMap).forEach(key => { describe(`${key} events`, () => { diff --git a/src/__tests__/fetch.js b/src/__tests__/fetch.js index febc65f..c118e02 100644 --- a/src/__tests__/fetch.js +++ b/src/__tests__/fetch.js @@ -2,7 +2,9 @@ import React from 'react'; import 'jest-native/extend-expect'; import { TouchableOpacity, Text, View } from 'react-native'; -import { render, fireEvent, wait } from '../'; +import { render, fireEvent, wait, cleanup } from '../'; + +afterEach(cleanup); global.fetch = require('jest-fetch-mock'); diff --git a/src/__tests__/forms.js b/src/__tests__/forms.js index 4e5b64b..af6641c 100644 --- a/src/__tests__/forms.js +++ b/src/__tests__/forms.js @@ -1,6 +1,8 @@ import React from 'react'; import { Button, TextInput, View } from 'react-native'; -import { render, fireEvent } from '../'; +import { render, fireEvent, cleanup } from '../'; + +afterEach(cleanup); function Login({ onSubmit, user }) { return ( diff --git a/src/__tests__/misc.js b/src/__tests__/misc.js index 385caf7..cec5919 100644 --- a/src/__tests__/misc.js +++ b/src/__tests__/misc.js @@ -2,7 +2,9 @@ import React from 'react'; import { Button, Picker, Text, View } from 'react-native'; import { toMatchDiffSnapshot } from 'snapshot-diff'; -import { fireEvent, render } from '../'; +import { cleanup, fireEvent, render } from '../'; + +afterEach(cleanup); test(' works', () => { function Wrapper() { diff --git a/src/__tests__/render.js b/src/__tests__/render.js index 6e83a35..146c661 100644 --- a/src/__tests__/render.js +++ b/src/__tests__/render.js @@ -1,7 +1,9 @@ import React from 'react'; import { Text, SafeAreaView, View } from 'react-native'; -import { render, toJSON } from '../'; +import { cleanup, render } from '../'; + +afterEach(cleanup); test('renders View', () => { const { container } = render(); diff --git a/src/__tests__/rerender.js b/src/__tests__/rerender.js index 6631909..2539528 100644 --- a/src/__tests__/rerender.js +++ b/src/__tests__/rerender.js @@ -2,7 +2,9 @@ import React from 'react'; import 'jest-native/extend-expect'; import { Text } from 'react-native'; -import { render } from '../'; +import { cleanup, render } from '../'; + +afterEach(cleanup); test('rerender will re-render the element', () => { const Greeting = props => {props.message}; diff --git a/src/__tests__/stopwatch.js b/src/__tests__/stopwatch.js index 4b6bbc0..5dd86dc 100644 --- a/src/__tests__/stopwatch.js +++ b/src/__tests__/stopwatch.js @@ -1,7 +1,9 @@ import React from 'react'; import { Button, Text, View } from 'react-native'; -import { render, fireEvent, prettyPrint } from '../'; +import { render, fireEvent, prettyPrint, cleanup } from '../'; + +afterEach(cleanup); class StopWatch extends React.Component { state = { lapse: 0, running: false }; diff --git a/src/index.js b/src/index.js index 2cf70eb..7f8b4c6 100644 --- a/src/index.js +++ b/src/index.js @@ -8,10 +8,12 @@ import { getQueriesForElement, NativeTestEvent, prettyPrint, - proxyElement as proxy, + proxyElement, } from './lib'; import act from './act-compat'; +const renderers = new Set(); + function render(ui, { options = {}, wrapper: WrapperComponent, queries } = {}) { const wrapUiIfNeeded = innerElement => WrapperComponent ? ( @@ -28,7 +30,9 @@ function render(ui, { options = {}, wrapper: WrapperComponent, queries } = {}) { testRenderer = TR.create(wrapUiIfNeeded(ui), options); }); - const wrappers = proxy(testRenderer.root).findAll(n => n.getProp('pointerEvents') === 'box-none'); + renderers.add(testRenderer); + + const wrappers = proxyElement(testRenderer.root).findAll(n => n.type === 'View'); const baseElement = wrappers[0]; // Includes YellowBox and your render const container = wrappers[1]; // Includes only your render @@ -49,6 +53,15 @@ function render(ui, { options = {}, wrapper: WrapperComponent, queries } = {}) { }; } +function cleanup() { + renderers.forEach(cleanupRenderer); +} + +function cleanupRenderer(renderer) { + renderer.unmount(); + renderers.delete(renderer); +} + function fireEvent(...args) { let returnValue; act(() => { @@ -68,4 +81,4 @@ Object.keys(rntlFireEvent).forEach(typeArg => { }); export * from './lib'; -export { act, fireEvent, render, NativeTestEvent }; +export { act, cleanup, fireEvent, render, NativeTestEvent }; diff --git a/src/lib/__tests__/get-by-errors.js b/src/lib/__tests__/get-by-errors.js index 458dada..10adff0 100644 --- a/src/lib/__tests__/get-by-errors.js +++ b/src/lib/__tests__/get-by-errors.js @@ -2,7 +2,9 @@ import React from 'react'; import { Button, Text, TextInput, View } from 'react-native'; import cases from 'jest-in-case'; -import { render } from '../../'; +import { cleanup, render } from '../../'; + +afterEach(cleanup); cases( 'getBy* queries throw an error when there are multiple elements returned', diff --git a/src/lib/__tests__/misc.js b/src/lib/__tests__/misc.js index 6d12662..47a41bb 100644 --- a/src/lib/__tests__/misc.js +++ b/src/lib/__tests__/misc.js @@ -1,7 +1,9 @@ import React from 'react'; -import { Text, View } from 'react-native'; +import { View } from 'react-native'; -import { render, queryByProp, queryByTestId } from '../../'; +import { render, queryByProp, queryByTestId, cleanup } from '../../'; + +afterEach(cleanup); test('queryByProp', () => { const { container } = render( diff --git a/src/lib/__tests__/pretty-print.js b/src/lib/__tests__/pretty-print.js index 841ee94..886ca53 100644 --- a/src/lib/__tests__/pretty-print.js +++ b/src/lib/__tests__/pretty-print.js @@ -1,7 +1,9 @@ import React from 'react'; import { Text, View } from 'react-native'; -import { render, prettyPrint } from '../../'; +import { render, prettyPrint, cleanup } from '../../'; + +afterEach(cleanup); test('it prints correctly with no children', () => { const { container } = render(); diff --git a/src/lib/__tests__/queries.find.js b/src/lib/__tests__/queries.find.js index 1d31615..115d5a4 100644 --- a/src/lib/__tests__/queries.find.js +++ b/src/lib/__tests__/queries.find.js @@ -1,7 +1,9 @@ import React from 'react'; import { Button, Image, Text, TextInput, View } from 'react-native'; -import { render } from '../../'; +import { cleanup, render } from '../../'; + +afterEach(cleanup); test('find asynchronously finds elements', async () => { const { diff --git a/src/lib/__tests__/text-matchers.js b/src/lib/__tests__/text-matchers.js index fe41f0d..6413989 100644 --- a/src/lib/__tests__/text-matchers.js +++ b/src/lib/__tests__/text-matchers.js @@ -2,7 +2,9 @@ import React from 'react'; import cases from 'jest-in-case'; import { Button, Image, Text, TextInput, TouchableOpacity } from 'react-native'; -import { getDefaultNormalizer, render } from '../../'; +import { cleanup, getDefaultNormalizer, render } from '../../'; + +afterEach(cleanup); cases( 'matches find case-sensitive full strings by default', diff --git a/src/lib/__tests__/to-json.js b/src/lib/__tests__/to-json.js index ce63d09..cae532e 100644 --- a/src/lib/__tests__/to-json.js +++ b/src/lib/__tests__/to-json.js @@ -1,7 +1,9 @@ import React from 'react'; import { Text, View } from 'react-native'; -import { prettyPrint, render, toJSON } from '../../'; +import { cleanup, prettyPrint, render, toJSON } from '../../'; + +afterEach(cleanup); test('it converts to json', () => { function ParentComponent({ children }) { diff --git a/src/lib/__tests__/wait-for-element-to-be-removed.fake-timers.js b/src/lib/__tests__/wait-for-element-to-be-removed.fake-timers.js index bcc0646..0b8d688 100644 --- a/src/lib/__tests__/wait-for-element-to-be-removed.fake-timers.js +++ b/src/lib/__tests__/wait-for-element-to-be-removed.fake-timers.js @@ -1,7 +1,9 @@ import React from 'react'; import { View } from 'react-native'; -import { render, waitForElementToBeRemoved } from '../../'; +import { cleanup, render, waitForElementToBeRemoved } from '../../'; + +afterEach(cleanup); jest.useFakeTimers(); diff --git a/src/lib/__tests__/wait-for-element-to-be-removed.js b/src/lib/__tests__/wait-for-element-to-be-removed.js index 640ec9b..0536f25 100644 --- a/src/lib/__tests__/wait-for-element-to-be-removed.js +++ b/src/lib/__tests__/wait-for-element-to-be-removed.js @@ -1,7 +1,9 @@ import React from 'react'; import { View } from 'react-native'; -import { render, waitForElementToBeRemoved } from '../../'; +import { cleanup, render, waitForElementToBeRemoved } from '../../'; + +afterEach(cleanup); test('resolves only when the element is removed', async () => { class MutatedElement extends React.Component { diff --git a/src/lib/__tests__/wait-for-element.js b/src/lib/__tests__/wait-for-element.js index 91d362e..baab649 100644 --- a/src/lib/__tests__/wait-for-element.js +++ b/src/lib/__tests__/wait-for-element.js @@ -1,7 +1,9 @@ import React from 'react'; import { Text, View } from 'react-native'; -import { render, waitForElement } from '../../'; +import { cleanup, render, waitForElement } from '../../'; + +afterEach(cleanup); test('waits for element to appear', async () => { const { rerender, getByTestId } = render(); diff --git a/src/lib/__tests__/within.js b/src/lib/__tests__/within.js index adcae0f..55fc563 100644 --- a/src/lib/__tests__/within.js +++ b/src/lib/__tests__/within.js @@ -1,7 +1,9 @@ import React from 'react'; import { Button, View } from 'react-native'; -import { render, within } from '../../'; +import { cleanup, render, within } from '../../'; + +afterEach(cleanup); test('it works when scoping to a smaller set of elements', () => { const { getByTestId } = render( diff --git a/src/preset/configure.js b/src/preset/configure.js index e257c1e..385b308 100644 --- a/src/preset/configure.js +++ b/src/preset/configure.js @@ -1,6 +1,10 @@ import { asyncAct } from '../act-compat'; +import { NativeTestEvent } from '../lib/events'; import { configure as configureNTL } from '../lib'; +// Make this global for convenience, just like browser events +global.NativeTestEvent = NativeTestEvent; + configureNTL({ asyncWrapper: async cb => { let result; diff --git a/typings/index.d.ts b/typings/index.d.ts index f6cf069..a2d25ff 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -46,6 +46,8 @@ export function render( options: RenderOptions, ): RenderResult; +export const cleanup: () => void; + export const act: (callback: () => void) => void; export { queries, queryHelpers, within }; From c32338dd5e9f6ab19e75de7c932a53ad5b59a796 Mon Sep 17 00:00:00 2001 From: Brandon Carroll Date: Sun, 19 May 2019 22:38:01 -0400 Subject: [PATCH 2/3] feat(asFragment): rename asFragment to asJSON --- src/__tests__/misc.js | 6 +++--- src/__tests__/render.js | 6 +++--- src/index.js | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/__tests__/misc.js b/src/__tests__/misc.js index cec5919..51191bb 100644 --- a/src/__tests__/misc.js +++ b/src/__tests__/misc.js @@ -34,15 +34,15 @@ test('fragments can show diffs', () => { expect.extend({ toMatchDiffSnapshot }); - const { getByText, asFragment } = render(); - const firstRender = asFragment(); + const { getByText, asJSON } = render(); + const firstRender = asJSON(); fireEvent.press(getByText(/Click to increase/)); // This will snapshot only the difference between the first render, and the // state of the DOM after the click event. // See https://github.com/jest-community/snapshot-diff - expect(firstRender).toMatchDiffSnapshot(asFragment()); + expect(firstRender).toMatchDiffSnapshot(asJSON()); }); test('finds only valid children', () => { diff --git a/src/__tests__/render.js b/src/__tests__/render.js index 146c661..fab3b7c 100644 --- a/src/__tests__/render.js +++ b/src/__tests__/render.js @@ -26,10 +26,10 @@ it('supports fragments', () => { } } - const { asFragment, unmount } = render(); - expect(asFragment()).toMatchSnapshot(); + const { asJSON, unmount } = render(); + expect(asJSON()).toMatchSnapshot(); unmount(); - expect(asFragment()).toBeNull(); + expect(asJSON()).toBeNull(); }); test('renders options.wrapper around node', () => { diff --git a/src/index.js b/src/index.js index 7f8b4c6..32f1a04 100644 --- a/src/index.js +++ b/src/index.js @@ -46,7 +46,7 @@ function render(ui, { options = {}, wrapper: WrapperComponent, queries } = {}) { testRenderer.update(wrapUiIfNeeded(rerenderUi)); }); }, - asFragment: () => { + asJSON: () => { return toJSON(container); }, ...getQueriesForElement(baseElement, queries), From de14e8d8a0370d31eb6d05f4840c318eec98b2ef Mon Sep 17 00:00:00 2001 From: Brandon Carroll Date: Mon, 20 May 2019 21:58:52 -0400 Subject: [PATCH 3/3] chore: add asJSON to RenderResult typings --- typings/index.d.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/typings/index.d.ts b/typings/index.d.ts index a2d25ff..9b58eef 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1,10 +1,11 @@ import { ReactElement, ComponentType } from 'react'; import { ReactTestRenderer } from 'react-test-renderer'; -import { getQueriesForElement, BoundFunction } from './get-queries-for-element'; import * as queries from './queries'; import * as queryHelpers from './query-helpers'; import { NativeTestInstance } from './query-helpers'; +import { NativeTestInstanceJSON } from './to-json'; +import { getQueriesForElement, BoundFunction } from './get-queries-for-element'; declare const within: typeof getQueriesForElement; @@ -25,9 +26,10 @@ interface Queries { export type RenderResult = { baseElement: NativeTestInstance; container: NativeTestInstance; - debug: () => void; + debug: (element?: NativeTestInstance) => void; rerender: (ui: ReactElement) => void; unmount: () => void; + asFragment: () => NativeTestInstanceJSON; } & { [P in keyof Q]: BoundFunction }; export interface RenderOptions {