Skip to content

Commit dc0206a

Browse files
committed
tweaks.
1 parent 618041b commit dc0206a

5 files changed

Lines changed: 18 additions & 56 deletions

File tree

README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ For most use cases, the migration is straightforward:
152152
import TestRenderer from "react-test-renderer";
153153
const tree = TestRenderer.create(<MyComponent />);
154154

155-
// After (test-renderer)
155+
// After (Test Renderer)
156156
import { createRoot } from "test-renderer";
157157
const root = createRoot();
158158
await act(async () => {
@@ -163,12 +163,10 @@ const tree = root.container;
163163

164164
## Performance Metrics
165165

166-
The library includes optional performance instrumentation using the standard Performance API. All marks and measures are prefixed with `test-renderer/` for easy filtering.
166+
The library includes optional performance instrumentation using the [Performance API](https://developer.mozilla.org/en-US/docs/Web/API/Performance). All marks and measures are prefixed with `test-renderer/` for easy filtering.
167167

168168
```tsx
169-
import { setPerformanceMetricsEnabled } from "test-renderer";
170-
171-
setPerformanceMetricsEnabled(true);
169+
globalThis.TEST_RENDERER_ENABLE_PROFILING = true;
172170

173171
// Run your tests, then query metrics:
174172
const marks = performance

src/__tests__/performance.test.tsx

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import { afterEach, beforeEach, describe, expect, test } from "@jest/globals";
22
import * as React from "react";
33

4-
import { createRoot, setPerformanceMetricsEnabled } from "..";
4+
import { createRoot } from "..";
55
import { act, formatPerfEntries, renderWithAct, unmountWithAct } from "../test-utils/render";
66

77
beforeEach(() => {
8-
global.IS_REACT_ACT_ENVIRONMENT = true;
9-
performance.clearMarks();
10-
performance.clearMeasures();
11-
setPerformanceMetricsEnabled(false);
8+
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
129
});
1310

1411
afterEach(() => {
15-
setPerformanceMetricsEnabled(false);
12+
globalThis.TEST_RENDERER_ENABLE_PROFILING = false;
13+
performance.clearMarks();
14+
performance.clearMeasures();
1615
});
1716

1817
function getPerfMarks(): PerformanceMark[] {
@@ -31,7 +30,8 @@ describe("performance metrics", () => {
3130
});
3231

3332
test("logs marks and measures for render", async () => {
34-
setPerformanceMetricsEnabled(true);
33+
globalThis.TEST_RENDERER_ENABLE_PROFILING = true;
34+
3535
const root = createRoot();
3636
await renderWithAct(root, <div>Hello!</div>);
3737

@@ -80,7 +80,7 @@ describe("performance metrics", () => {
8080
const root = createRoot();
8181
await renderWithAct(root, <TestComponent />);
8282

83-
setPerformanceMetricsEnabled(true);
83+
globalThis.TEST_RENDERER_ENABLE_PROFILING = true;
8484

8585
await act(() => {
8686
const child = root.container.children[0];
@@ -103,45 +103,15 @@ describe("performance metrics", () => {
103103
const root = createRoot();
104104
await renderWithAct(root, <div />);
105105

106-
setPerformanceMetricsEnabled(true);
107-
performance.clearMarks();
108-
performance.clearMeasures();
106+
globalThis.TEST_RENDERER_ENABLE_PROFILING = true;
107+
109108
await unmountWithAct(root);
110109

111110
const marks = getPerfMarks();
112111
expect(marks.some((m) => m.name === "test-renderer/unmount:start")).toBe(true);
113112
expect(marks.some((m) => m.name === "test-renderer/unmount:end")).toBe(true);
114113
expect(marks.some((m) => m.name === "test-renderer/react/commit:start")).toBe(true);
115114
expect(marks.some((m) => m.name === "test-renderer/react/commit:end")).toBe(true);
116-
expect(formatPerfEntries(marks)).toMatchInlineSnapshot(`
117-
"0.00ms: ACT:start
118-
0.01ms: ACT:sync start
119-
0.06ms: test-renderer/unmount:start
120-
0.08ms: test-renderer/reconciler/resolveUpdatePriority (priority=32)
121-
0.11ms: test-renderer/reconciler/scheduleMicrotask (id=12)
122-
0.12ms: test-renderer/unmount:end
123-
0.15ms: test-renderer/reconciler/scheduled microtask:start (id=12)
124-
0.16ms: test-renderer/reconciler/scheduled microtask:end (id=12)
125-
0.17ms: ACT:sync end
126-
0.19ms: test-renderer/reconciler/getRootHostContext
127-
0.24ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
128-
0.29ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
129-
0.30ms: test-renderer/reconciler/prepareForCommit
130-
0.30ms: test-renderer/react/commit:start
131-
0.51ms: test-renderer/reconciler/removeChildFromContainer (childType="div")
132-
0.54ms: test-renderer/react/commit:end
133-
0.56ms: test-renderer/reconciler/resetAfterCommit
134-
0.56ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
135-
0.57ms: test-renderer/reconciler/scheduleMicrotask (id=13)
136-
0.58ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
137-
0.60ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=32)
138-
0.76ms: test-renderer/reconciler/detachDeletedInstance
139-
0.88ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
140-
0.91ms: test-renderer/reconciler/scheduled microtask:start (id=13)
141-
0.91ms: test-renderer/reconciler/scheduled microtask:end (id=13)
142-
0.95ms: ACT:async end
143-
"
144-
`);
145115

146116
const measures = getPerfMeasures();
147117
expect(measures.some((m) => m.name === "test-renderer/unmount")).toBe(true);

src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export { createRoot } from "./renderer";
2-
export { setPerformanceMetricsEnabled } from "./performance";
32

43
export type { Root, RootOptions } from "./renderer";
54
export type { HostElement, HostElementProps, HostNode } from "./host-element";

src/performance.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@ declare global {
22
var TEST_RENDERER_ENABLE_PROFILING: boolean | undefined;
33
}
44

5-
globalThis.TEST_RENDERER_ENABLE_PROFILING ??= false;
6-
7-
export function setPerformanceMetricsEnabled(enabled: boolean): void {
8-
globalThis.TEST_RENDERER_ENABLE_PROFILING = enabled;
9-
}
10-
115
export function mark(name: string, details?: Record<string, unknown>): void {
126
if (!globalThis.TEST_RENDERER_ENABLE_PROFILING) {
137
return;

src/test-utils/render.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@ import type { ReactElement } from "react";
22
import { act as reactAct } from "react";
33

44
import type { HostElement } from "../host-element";
5+
import { mark } from "../performance";
56
import type { Root } from "../renderer";
67

78
/** @internal */
89
export async function act<T>(callback: () => T | Promise<T>): Promise<T> {
9-
performance.mark("ACT:start");
10+
mark("act:start");
1011
const result = await reactAct(async () => {
11-
performance.mark("ACT:sync start");
12+
mark("act callback:start");
1213
const result = await callback();
13-
performance.mark("ACT:sync end");
14+
mark("act callback:end");
1415
return result;
1516
});
16-
performance.mark("ACT:async end");
17+
mark("act:end");
1718
return result;
1819
}
1920

0 commit comments

Comments
 (0)