From e38cc3257e4d1e78a8fed0459685af5a4968412f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Jastrze=CC=A8bski?= Date: Thu, 8 Jan 2026 23:59:26 +0100 Subject: [PATCH] test(wait-for-element-to-be-removed): use fireEvent.press instead of rerender for more realistic user interaction --- .../wait-for-element-to-be-removed.test.tsx | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/__tests__/wait-for-element-to-be-removed.test.tsx b/src/__tests__/wait-for-element-to-be-removed.test.tsx index bfd60199..18007b07 100644 --- a/src/__tests__/wait-for-element-to-be-removed.test.tsx +++ b/src/__tests__/wait-for-element-to-be-removed.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; -import { Text, View } from 'react-native'; +import { Pressable, Text, View } from 'react-native'; -import { render, screen, waitForElementToBeRemoved } from '..'; +import { fireEvent, render, screen, waitForElementToBeRemoved } from '..'; it('throws error when element is already removed at the time of calling', async () => { await expect(waitForElementToBeRemoved(() => null)).rejects.toThrow( @@ -10,16 +10,25 @@ it('throws error when element is already removed at the time of calling', async }); it('resolves when query throws error after element is removed', async () => { - const Component = ({ showText }: { showText: boolean }) => ( - {showText && Hello} - ); + const Component = () => { + const [showText, setShowText] = React.useState(true); - const { rerender } = await render(); + return ( + + {showText && Hello} + setShowText(false)} testID="remove-button"> + Remove + + + ); + }; + + await render(); expect(screen.getByText('Hello')).toBeOnTheScreen(); - setTimeout(async () => { - await rerender(); + void setTimeout(() => { + void fireEvent.press(screen.getByTestId('remove-button')); }, 50); await waitForElementToBeRemoved(() => screen.getByText('Hello'));