( cb: () => *, recursivelyFlush: boolean = true, )
| 92 | } |
| 93 | |
| 94 | export async function actAsync( |
| 95 | cb: () => *, |
| 96 | recursivelyFlush: boolean = true, |
| 97 | ): Promise<void> { |
| 98 | // act from react-test-renderer has some side effects on React DevTools |
| 99 | // it injects the renderer for DevTools, see ReactTestRenderer.js |
| 100 | const actTestRenderer = getActTestRendererImplementation(); |
| 101 | const actDOM = getActDOMImplementation(); |
| 102 | |
| 103 | await actDOM(async () => { |
| 104 | await actTestRenderer(async () => { |
| 105 | await cb(); |
| 106 | }); |
| 107 | }); |
| 108 | |
| 109 | if (recursivelyFlush) { |
| 110 | while (jest.getTimerCount() > 0) { |
| 111 | await actDOM(async () => { |
| 112 | await actTestRenderer(async () => { |
| 113 | jest.runAllTimers(); |
| 114 | }); |
| 115 | }); |
| 116 | } |
| 117 | } else { |
| 118 | await actDOM(async () => { |
| 119 | await actTestRenderer(async () => { |
| 120 | jest.runOnlyPendingTimers(); |
| 121 | }); |
| 122 | }); |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | type RenderImplementation = { |
| 127 | render: (elements: ?ReactNode) => () => void, |
no test coverage detected