Skip to content

Commit ec032b0

Browse files
fix: proper act usage (#1592)
* fix: use proper act # Conflicts: # src/render-act.ts * fix: user event missing act on min press duration * chore: add button test * chore: spellcheck
1 parent f7e3b1a commit ec032b0

File tree

5 files changed

+21
-8
lines changed

5 files changed

+21
-8
lines changed

src/helpers/wrap-async.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/* istanbul ignore file */
22

3-
import { act } from 'react-test-renderer';
4-
import { getIsReactActEnvironment, setReactActEnvironment } from '../act';
3+
import act, { getIsReactActEnvironment, setReactActEnvironment } from '../act';
54
import { flushMicroTasksLegacy } from '../flush-micro-tasks';
65
import { checkReactVersionAtLeast } from '../react-versions';
76

src/render-act.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import TestRenderer from 'react-test-renderer';
22
import type { ReactTestRenderer, TestRendererOptions } from 'react-test-renderer';
3+
import act from './act';
34

45
export function renderWithAct(
56
component: React.ReactElement,
@@ -8,7 +9,7 @@ export function renderWithAct(
89
let renderer: ReactTestRenderer;
910

1011
// This will be called synchronously.
11-
void TestRenderer.act(() => {
12+
void act(() => {
1213
renderer = TestRenderer.create(component, options);
1314
});
1415

src/user-event/press/__tests__/press.real-timers.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ describe('userEvent.press with real timers', () => {
203203
expect(getEventsName(events)).toEqual(['pressIn', 'press', 'pressOut']);
204204
});
205205

206-
test('doesnt trigger on disabled Text', async () => {
206+
test('does not trigger on disabled Text', async () => {
207207
const { events, logEvent } = createEventLogger();
208208

209209
render(
@@ -222,7 +222,7 @@ describe('userEvent.press with real timers', () => {
222222
expect(events).toEqual([]);
223223
});
224224

225-
test('doesnt trigger on Text with disabled pointer events', async () => {
225+
test('does not trigger on Text with disabled pointer events', async () => {
226226
const { events, logEvent } = createEventLogger();
227227

228228
render(

src/user-event/press/__tests__/press.test.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
TouchableHighlight,
77
TouchableOpacity,
88
View,
9+
Button,
910
} from 'react-native';
1011
import { createEventLogger, getEventsName } from '../../../test-utils';
1112
import { render, screen } from '../../..';
@@ -201,6 +202,15 @@ describe('userEvent.press with fake timers', () => {
201202
expect(getEventsName(events)).toEqual(['pressIn', 'press', 'pressOut']);
202203
});
203204

205+
test('press works on Button', async () => {
206+
const { events, logEvent } = createEventLogger();
207+
208+
render(<Button title="press me" onPress={logEvent('press')} />);
209+
210+
await userEvent.press(screen.getByText('press me'));
211+
expect(getEventsName(events)).toEqual(['press']);
212+
});
213+
204214
test('longPress works Text', async () => {
205215
const { events, logEvent } = createEventLogger();
206216

@@ -219,7 +229,7 @@ describe('userEvent.press with fake timers', () => {
219229
expect(getEventsName(events)).toEqual(['pressIn', 'longPress', 'pressOut']);
220230
});
221231

222-
test('doesnt trigger on disabled Text', async () => {
232+
test('does not trigger on disabled Text', async () => {
223233
const { events, logEvent } = createEventLogger();
224234

225235
render(
@@ -238,7 +248,7 @@ describe('userEvent.press with fake timers', () => {
238248
expect(events).toEqual([]);
239249
});
240250

241-
test('doesnt trigger on Text with disabled pointer events', async () => {
251+
test('does not trigger on Text with disabled pointer events', async () => {
242252
const { events, logEvent } = createEventLogger();
243253

244254
render(

src/user-event/press/press.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ReactTestInstance } from 'react-test-renderer';
2+
import act from '../../act';
23
import { getHostParent } from '../../helpers/component-tree';
34
import { isTextInputEditable } from '../../helpers/text-input';
45
import { isPointerEventEnabled } from '../../helpers/pointer-events';
@@ -82,7 +83,9 @@ const emitPressablePressEvents = async (
8283
// before emitting the `pressOut` event. We need to wait here, so that
8384
// `press()` function does not return before that.
8485
if (DEFAULT_MIN_PRESS_DURATION - options.duration > 0) {
85-
await wait(config, DEFAULT_MIN_PRESS_DURATION - options.duration);
86+
await act(async () => {
87+
await wait(config, DEFAULT_MIN_PRESS_DURATION - options.duration);
88+
});
8689
}
8790
};
8891

0 commit comments

Comments
 (0)