Skip to content

Commit 3597b0c

Browse files
committed
Fix third example
1 parent fa7d190 commit 3597b0c

File tree

1 file changed

+42
-43
lines changed

1 file changed

+42
-43
lines changed

versioned_docs/version-7.x/testing.md

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -475,8 +475,18 @@ const SettingsNavigator = createStackNavigator({
475475

476476
export const TabNavigator = createBottomTabNavigator({
477477
screens: {
478-
Home: HomeScreen,
479-
SettingsStack: SettingsNavigator,
478+
Home: {
479+
screen: HomeScreen,
480+
options: {
481+
tabBarButtonTestID: 'homeTabBarButton',
482+
},
483+
},
484+
SettingsStack: {
485+
screen: SettingsNavigator,
486+
options: {
487+
tabBarButtonTestID: 'settingsTabBarButton',
488+
},
489+
},
480490
},
481491
screenOptions: {
482492
headerShown: false,
@@ -544,8 +554,16 @@ const Tab = createBottomTabNavigator();
544554
export function TabNavigator() {
545555
return (
546556
<Tab.Navigator screenOptions={{ headerShown: false }}>
547-
<Tab.Screen name="Home" component={HomeScreen} />
548-
<Tab.Screen name="SettingsStack" component={SettingsStackScreen} />
557+
<Tab.Screen
558+
name="Home"
559+
component={HomeScreen}
560+
options={{ tabBarButtonTestID: 'homeTabBarButton' }}
561+
/>
562+
<Tab.Screen
563+
name="SettingsStack"
564+
component={SettingsStackScreen}
565+
options={{ tabBarButtonTestID: 'settingsTabBarButton' }}
566+
/>
549567
</Tab.Navigator>
550568
);
551569
}
@@ -558,96 +576,77 @@ export function TabNavigator() {
558576
<TabItem value="static" label="Static" default>
559577

560578
```js
561-
import { expect, jest, test } from '@jest/globals';
579+
import { expect, test } from '@jest/globals';
562580
import { createStaticNavigation } from '@react-navigation/native';
563-
import { act, fireEvent, render, screen } from '@testing-library/react-native';
581+
import { fireEvent, render, screen } from '@testing-library/react-native';
564582

565583
import { TabNavigator } from './TabNavigator';
566584

567585
test('always displays settings screen after settings tab bar button press', () => {
568-
jest.useFakeTimers();
569-
570586
const TabNavigation = createStaticNavigation(TabNavigator);
571587
render(<TabNavigation />);
572588

573-
const homeTabButton = screen.getByRole('button', {
574-
name: 'Home, tab, 1 of 2',
575-
});
589+
const homeTabButton = screen.getByTestId('homeTabBarButton');
576590

577-
const settingsTabButton = screen.getByRole('button', {
578-
name: 'SettingsStack, tab, 2 of 2',
579-
});
591+
const settingsTabButton = screen.getByTestId('settingsTabBarButton');
580592

581593
const event = {};
582594

583595
fireEvent.press(settingsTabButton, event);
584-
act(() => jest.runAllTimers());
585-
expect(screen.queryByText('Settings screen')).toBeOnTheScreen();
596+
expect(screen.getByText('Settings screen')).toBeOnTheScreen();
586597

587-
fireEvent.press(screen.queryByText('Go to Details'), event);
588-
act(() => jest.runAllTimers());
589-
expect(screen.queryByText('Details screen')).toBeOnTheScreen();
598+
fireEvent.press(screen.getByText('Go to Details'), event);
599+
expect(screen.getByText('Details screen')).toBeOnTheScreen();
590600

591601
fireEvent.press(homeTabButton, event);
592-
act(() => jest.runAllTimers());
593-
expect(screen.queryByText('Home screen')).toBeOnTheScreen();
602+
expect(screen.getByText('Home screen')).toBeOnTheScreen();
594603

595604
fireEvent.press(settingsTabButton, event);
596-
act(() => jest.runAllTimers());
597-
expect(screen.queryByText('Settings screen')).toBeOnTheScreen();
605+
expect(screen.getByText('Settings screen')).toBeOnTheScreen();
598606
});
599607
```
600608

601609
</TabItem>
602610
<TabItem value="dynamic" label="Dynamic">
603611

604612
```js
605-
import { expect, jest, test } from '@jest/globals';
613+
import { expect, test } from '@jest/globals';
606614
import { NavigationContainer } from '@react-navigation/native';
607-
import { act, fireEvent, render, screen } from '@testing-library/react-native';
615+
import { fireEvent, render, screen } from '@testing-library/react-native';
608616

609617
import { TabNavigator } from './TabNavigator';
610618

611619
test('always displays settings screen after settings tab bar button press', () => {
612-
jest.useFakeTimers();
613-
614620
render(
615621
<NavigationContainer>
616622
<TabNavigator />
617623
</NavigationContainer>
618624
);
619625

620-
const homeTabButton = screen.getByRole('button', {
621-
name: 'Home, tab, 1 of 2',
622-
});
623-
const settingsTabButton = screen.getByRole('button', {
624-
name: 'SettingsStack, tab, 2 of 2',
625-
});
626+
const homeTabButton = screen.getByTestId('homeTabBarButton');
627+
628+
const settingsTabButton = screen.getByTestId('settingsTabBarButton');
626629

627630
const event = {};
628631

629632
fireEvent.press(settingsTabButton, event);
630-
act(() => jest.runAllTimers());
631-
expect(screen.queryByText('Settings screen')).toBeOnTheScreen();
633+
expect(screen.getByText('Settings screen')).toBeOnTheScreen();
632634

633-
fireEvent.press(screen.queryByText('Go to Details'), event);
634-
act(() => jest.runAllTimers());
635-
expect(screen.queryByText('Details screen')).toBeOnTheScreen();
635+
fireEvent.press(screen.getByText('Go to Details'), event);
636+
expect(screen.getByText('Details screen')).toBeOnTheScreen();
636637

637638
fireEvent.press(homeTabButton, event);
638-
act(() => jest.runAllTimers());
639-
expect(screen.queryByText('Home screen')).toBeOnTheScreen();
639+
expect(screen.getByText('Home screen')).toBeOnTheScreen();
640640

641641
fireEvent.press(settingsTabButton, event);
642-
act(() => jest.runAllTimers());
643-
expect(screen.queryByText('Settings screen')).toBeOnTheScreen();
642+
expect(screen.getByText('Settings screen')).toBeOnTheScreen();
644643
});
645644
```
646645

647646
</TabItem>
648647
</Tabs>
649648

650-
We query tab bar buttons, press buttons and check if rendered screens are correct.
649+
We get tab bar buttons, press buttons and check if rendered screens are correct.
651650

652651
### Example 4
653652

0 commit comments

Comments
 (0)