universal-test-renderer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Universal Test Renderer for React
2
+
3
+ ## The problem
4
+
5
+ Many React renderers require additional setup in order to work properly. For example, React Native requires a native code to run setup, and React DOM requires a DOM environment. While it's feasible to run a React DOM in simulated JS DOM environment, it is not possible for React Native.
6
+
7
+ Traditionally, in such case developers used React Test Renderer, but it has been deprecated with React 18.3.1, in it will be removed in the future.
8
+
9
+ ## The solution
10
+
11
+ This is a universal test renderer that can be used to test React components in pure JavaScript environments like Jest or Vitest. It's build on top of React Reconciler and renders React components on host component level, exposing the resulting host component tree for various types of inspection: tree structure, props checking, etc.
12
+
13
+ This renderer is created to be used as replacement for React Test Renderer.
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install -D universal-test-renderer
19
+ ```
20
+
21
+ Note: this package is now compatible with React 18.3. In the near future I will add React 19 support, as well.
22
+
23
+ ## Usage
24
+
25
+ ```tsx
26
+ import { act } from "react";
27
+ import { createRenderer } from "universal-test-renderer";
28
+
29
+ test("basic renderer usage", () => {
30
+ const renderer = createRenderer();
31
+ act(() => {
32
+ renderer.render(<div>Hello!</div>);
33
+ });
34
+
35
+ expect(renderer.root?.toJSON()).toMatchInlineSnapshot(`
36
+ <div>
37
+ Hello!
38
+ </div>
39
+ `);
40
+ });
41
+ ```
42
+
43
+ ## Differences from React Test Renderer
44
+
45
+ - This renderer operates on host components level, it does not expose composite components unlike React Test Renderer, which exposed both host components and composite components.
46
+ - This renderer offers more flexible renderer setup, allowing for passing various options to the underlying React Reconciler, like concurrent mode, specifying allowed text components, etc.
47
+ - This renderer does not re-export `act` function, you should use one provided by `react` package instead.