From e2461ca4b5ab45813527f5e2478c4e8552f16c51 Mon Sep 17 00:00:00 2001 From: Joe Previte Date: Sat, 18 Jun 2022 06:14:09 -0700 Subject: [PATCH] fix(server): remove act around server renderer to fix support for older versions of react * refactor(server/pure): remove unnecessary type annotation * feat: add ssr.test.ts This adds a new test to verify that renderHook can be called in an SSR-like environment based on the changes implemented in #607. * chore: update contributors table * refactor: remove act call in render in sever/pure @mpeyper explained how this `act` call in server rendering is not really necessary so we can remove it. --- .all-contributorsrc | 3 ++- README.md | 2 +- src/__tests__/ssr.test.ts | 18 ++++++++++++++++++ src/server/pure.ts | 14 ++++++-------- 4 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 src/__tests__/ssr.test.ts diff --git a/.all-contributorsrc b/.all-contributorsrc index c9aecfcd..b8a61f52 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -145,7 +145,8 @@ "avatar_url": "https://avatars3.githubusercontent.com/u/3806031?v=4", "profile": "https://jsjoe.io", "contributions": [ - "tutorial" + "tutorial", + "test" ] }, { diff --git a/README.md b/README.md index 0cd2f5fa..c9fca586 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Vince Malone

💻
Sebastian Weber

📝
Christian Gill

📖 -
JavaScript Joe

+
JavaScript Joe

⚠️
Sarah Dayan

📦 diff --git a/src/__tests__/ssr.test.ts b/src/__tests__/ssr.test.ts new file mode 100644 index 00000000..1119d1a1 --- /dev/null +++ b/src/__tests__/ssr.test.ts @@ -0,0 +1,18 @@ +/** + * @jest-environment node + */ +import { useState } from 'react' + +// This verifies that renderHook can be called in +// a SSR-like environment. +describe('renderHook', () => { + function useLoading() { + const [loading, setLoading] = useState(false) + return { loading, setLoading } + } + runForRenderers(['server'], ({ renderHook }) => { + test('should not throw in SSR environment', () => { + expect(() => renderHook(() => useLoading())).not.toThrowError('document is not defined') + }) + }) +}) diff --git a/src/server/pure.ts b/src/server/pure.ts index 1978f2d0..aa62a283 100644 --- a/src/server/pure.ts +++ b/src/server/pure.ts @@ -13,19 +13,17 @@ function createServerRenderer( ) { let renderProps: TProps | undefined let container: HTMLDivElement | undefined - let serverOutput: string = '' + let serverOutput = '' const testHarness = createTestHarness(rendererProps, wrapper, false) return { render(props?: TProps) { renderProps = props - act(() => { - try { - serverOutput = ReactDOMServer.renderToString(testHarness(props)) - } catch (e: unknown) { - rendererProps.setError(e as Error) - } - }) + try { + serverOutput = ReactDOMServer.renderToString(testHarness(props)) + } catch (e: unknown) { + rendererProps.setError(e as Error) + } }, hydrate() { if (container) {