From 910e7133bc6a3410dedf652bae5091624b96993e Mon Sep 17 00:00:00 2001 From: Rob Hogan Date: Sun, 16 Jun 2024 16:55:21 -0700 Subject: [PATCH] Asyncify ReactNativeTestTools.expectRendersMatchingSnapshot (#44992) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/44992 To allow for async `act` in a subsequent diff, make this utility method async and awaited at all call sites. Changelog: [Internal] Reviewed By: yungsters Differential Revision: D58647828 fbshipit-source-id: 3a47c57569814638c216309eed1885dd37521dde --- .../__tests__/ActivityIndicator-test.js | 4 ++-- .../__tests__/DrawerAndroid-test.js | 4 ++-- .../Pressable/__tests__/Pressable-test.js | 20 +++++++++---------- .../__tests__/ProgressBarAndroid-test.js | 4 ++-- .../__tests__/SafeAreaView-test.js | 4 ++-- .../ScrollView/__tests__/ScrollView-test.js | 4 ++-- .../TextInput/__tests__/TextInput-test.js | 15 +++++++++++--- .../Utilities/ReactNativeTestTools.js | 2 +- 8 files changed, 33 insertions(+), 24 deletions(-) diff --git a/packages/react-native/Libraries/Components/ActivityIndicator/__tests__/ActivityIndicator-test.js b/packages/react-native/Libraries/Components/ActivityIndicator/__tests__/ActivityIndicator-test.js index e2e3657cb4a..13f1dab3be4 100644 --- a/packages/react-native/Libraries/Components/ActivityIndicator/__tests__/ActivityIndicator-test.js +++ b/packages/react-native/Libraries/Components/ActivityIndicator/__tests__/ActivityIndicator-test.js @@ -21,8 +21,8 @@ describe('', () => { expect(ActivityIndicator.displayName).toBe('ActivityIndicator'); }); - it('should render as expected', () => { - ReactNativeTestTools.expectRendersMatchingSnapshot( + it('should render as expected', async () => { + await ReactNativeTestTools.expectRendersMatchingSnapshot( 'ActivityIndicator', () => , () => { diff --git a/packages/react-native/Libraries/Components/DrawerAndroid/__tests__/DrawerAndroid-test.js b/packages/react-native/Libraries/Components/DrawerAndroid/__tests__/DrawerAndroid-test.js index adf22019ab0..a82d42cbb54 100644 --- a/packages/react-native/Libraries/Components/DrawerAndroid/__tests__/DrawerAndroid-test.js +++ b/packages/react-native/Libraries/Components/DrawerAndroid/__tests__/DrawerAndroid-test.js @@ -21,8 +21,8 @@ const DrawerLayoutAndroid = require('../DrawerLayoutAndroid.android'); const React = require('react'); describe('', () => { - it('should render as expected', () => { - ReactNativeTestTools.expectRendersMatchingSnapshot( + it('should render as expected', async () => { + await ReactNativeTestTools.expectRendersMatchingSnapshot( 'DrawerLayoutAndroid', () => ( ', () => { - it('should render as expected', () => { - expectRendersMatchingSnapshot( + it('should render as expected', async () => { + await expectRendersMatchingSnapshot( 'Pressable', () => ( @@ -31,8 +31,8 @@ describe('', () => { }); describe('', () => { - it('should be disabled when disabled is true', () => { - expectRendersMatchingSnapshot( + it('should be disabled when disabled is true', async () => { + await expectRendersMatchingSnapshot( 'Pressable', () => ( @@ -47,8 +47,8 @@ describe('', () => { }); describe('', () => { - it('should be disabled when disabled is true and accessibilityState is empty', () => { - expectRendersMatchingSnapshot( + it('should be disabled when disabled is true and accessibilityState is empty', async () => { + await expectRendersMatchingSnapshot( 'Pressable', () => ( @@ -63,8 +63,8 @@ describe('', () => { }); describe('', () => { - it('should keep accessibilityState when disabled is true', () => { - expectRendersMatchingSnapshot( + it('should keep accessibilityState when disabled is true', async () => { + await expectRendersMatchingSnapshot( 'Pressable', () => ( @@ -79,8 +79,8 @@ describe('', ( }); describe('', () => { - it('should overwrite accessibilityState with value of disabled prop', () => { - expectRendersMatchingSnapshot( + it('should overwrite accessibilityState with value of disabled prop', async () => { + await expectRendersMatchingSnapshot( 'Pressable', () => ( diff --git a/packages/react-native/Libraries/Components/ProgressBarAndroid/__tests__/ProgressBarAndroid-test.js b/packages/react-native/Libraries/Components/ProgressBarAndroid/__tests__/ProgressBarAndroid-test.js index 07cb39ff211..45f9902fefe 100644 --- a/packages/react-native/Libraries/Components/ProgressBarAndroid/__tests__/ProgressBarAndroid-test.js +++ b/packages/react-native/Libraries/Components/ProgressBarAndroid/__tests__/ProgressBarAndroid-test.js @@ -20,8 +20,8 @@ const ProgressBarAndroid = require('../ProgressBarAndroid.android'); const React = require('react'); describe('', () => { - it('should render as expected', () => { - ReactNativeTestTools.expectRendersMatchingSnapshot( + it('should render as expected', async () => { + await ReactNativeTestTools.expectRendersMatchingSnapshot( 'ProgressBarAndroid', () => , () => { diff --git a/packages/react-native/Libraries/Components/SafeAreaView/__tests__/SafeAreaView-test.js b/packages/react-native/Libraries/Components/SafeAreaView/__tests__/SafeAreaView-test.js index c3dcd55e41c..b10a96c8e30 100644 --- a/packages/react-native/Libraries/Components/SafeAreaView/__tests__/SafeAreaView-test.js +++ b/packages/react-native/Libraries/Components/SafeAreaView/__tests__/SafeAreaView-test.js @@ -19,8 +19,8 @@ const View = require('../../View/View'); const React = require('react'); describe('', () => { - it('should render as expected', () => { - ReactNativeTestTools.expectRendersMatchingSnapshot( + it('should render as expected', async () => { + await ReactNativeTestTools.expectRendersMatchingSnapshot( 'SafeAreaView', () => ( diff --git a/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js b/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js index 5534b92ea4b..6083f7c1547 100644 --- a/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js +++ b/packages/react-native/Libraries/Components/ScrollView/__tests__/ScrollView-test.js @@ -23,8 +23,8 @@ describe('ScrollView', () => { jest.resetModules(); }); - it('renders its children', () => { - ReactNativeTestTools.expectRendersMatchingSnapshot( + it('renders its children', async () => { + await ReactNativeTestTools.expectRendersMatchingSnapshot( 'ScrollView', () => ( diff --git a/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js b/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js index d0652f8e73d..af3faf5d5a4 100644 --- a/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js +++ b/packages/react-native/Libraries/Components/TextInput/__tests__/TextInput-test.js @@ -1,3 +1,12 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + const ReactNative = require('../../../ReactNative/RendererProxy'); const { enter, @@ -40,7 +49,7 @@ describe('TextInput tests', () => { input = renderTree.root.findByType(TextInput); }); it('has expected instance functions', () => { - expect(inputRef.current.isFocused).toBeInstanceOf(Function); // Would have prevented S168585 + expect(inputRef.current.isFocused).toBeInstanceOf(Function); // Would have prevented S168585 expect(inputRef.current.clear).toBeInstanceOf(Function); expect(inputRef.current.focus).toBeInstanceOf(jest.fn().constructor); expect(inputRef.current.blur).toBeInstanceOf(jest.fn().constructor); @@ -192,8 +201,8 @@ describe('TextInput tests', () => { `); }); - it('should render as expected', () => { - expectRendersMatchingSnapshot( + it('should render as expected', async () => { + await expectRendersMatchingSnapshot( 'TextInput', () => , () => { diff --git a/packages/react-native/Libraries/Utilities/ReactNativeTestTools.js b/packages/react-native/Libraries/Utilities/ReactNativeTestTools.js index 083233acadb..1b45c24a789 100644 --- a/packages/react-native/Libraries/Utilities/ReactNativeTestTools.js +++ b/packages/react-native/Libraries/Utilities/ReactNativeTestTools.js @@ -113,7 +113,7 @@ function expectNoConsoleError() { }); } -function expectRendersMatchingSnapshot( +async function expectRendersMatchingSnapshot( name: string, ComponentProvider: () => React.Element, unmockComponent: () => mixed,