Skip to content

Commit c9d9e7d

Browse files
authored
Do not add random prefix to ids during tests in React 18 (#4869)
1 parent 6d32773 commit c9d9e7d

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

packages/@react-aria/ssr/package.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,16 @@
2929
},
3030
"publishConfig": {
3131
"access": "public"
32+
},
33+
"engines": {
34+
"node": ">= 12"
35+
},
36+
"targets": {
37+
"main": {
38+
"context": "node"
39+
},
40+
"module": {
41+
"context": "node"
42+
}
3243
}
3344
}

packages/@react-aria/ssr/src/SSRProvider.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,14 +152,15 @@ function useLegacySSRSafeId(defaultId?: string): string {
152152
}
153153

154154
let counter = useCounter(!!defaultId);
155-
return defaultId || `react-aria${ctx.prefix}-${counter}`;
155+
let prefix = ctx === defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;
156+
return defaultId || `${prefix}-${counter}`;
156157
}
157158

158159
function useModernSSRSafeId(defaultId?: string): string {
159160
// @ts-ignore
160161
let id = React.useId();
161162
let [didSSR] = useState(useIsSSR());
162-
let prefix = didSSR ? 'react-aria' : `react-aria${defaultContext.prefix}`;
163+
let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${defaultContext.prefix}`;
163164
return defaultId || `${prefix}-${id}`;
164165
}
165166

packages/@react-aria/ssr/test/SSRProvider.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,18 @@ describe('SSRProvider', function () {
118118
});
119119

120120
it('should generate a random prefix when not server rendered', function () {
121+
let env = process.env.NODE_ENV;
122+
process.env.NODE_ENV = 'production';
121123
let tree = render(<Test />);
122124
expect(/^react-aria\d+-/.test(tree.getByTestId('test').id)).toBe(true);
125+
process.env.NODE_ENV = env;
126+
});
127+
128+
it('should not generate a random prefix in tests', function () {
129+
let env = process.env.NODE_ENV;
130+
process.env.NODE_ENV = 'test';
131+
let tree = render(<Test />);
132+
expect(/^react-aria-/.test(tree.getByTestId('test').id)).toBe(true);
133+
process.env.NODE_ENV = env;
123134
});
124135
});

0 commit comments

Comments
 (0)