Performance: Testing server components
Testing server components impacts development speed and reliability but can indirectly affect page load speed by ensuring server-rendered content is correct and efficient.
import { render } from '@testing-library/react/server'; // Using React Testing Library's server render helper const { getByText } = await render(<MyServerComponent />); expect(getByText('expected text')).toBeDefined();
import { renderToString } from 'react-dom/server'; // Manually rendering server component to string in tests const html = renderToString(<MyServerComponent />); expect(html).toContain('expected text');
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual server render with react-dom/server | N/A (no real DOM) | N/A | N/A | [X] Bad |
| Using @testing-library/react/server render helper | N/A (no real DOM) | N/A | N/A | [OK] Good |
import { render } from '@testing-library/react';
import Greeting from './Greeting';
test('renders greeting message', () => {
const { getByText } = render();
getByText('Hello, Alice!');
});Greeting renders Hello, {name}! correctly.import { render } from '@testing-library/react';
import UserProfile from './UserProfile';
test('renders user name', () => {
const { getByText } = render(UserProfile({ name: 'Bob' }));
getByText('User: Bob');
});async function fetchUser() { return { name: 'Eve' }; }
function User() {
const user = fetchUser();
return <div>User: {user.name}</div>;
}Pass the test and this pattern moves unknown