Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

React 19 - Objects are not valid as a React child #1415

Open
@emgdevteam

Description

  • @testing-library/react version: 16.3.0
  • Testing Framework and version: vitest 3.2.4
  • DOM Environment: jsdom 26.1.0

Relevant code or config:

//package.json
{
 "name": "@emg-hub/ui",
 "version": "0.0.0",
 "private": true,
 "exports": {
 "./*": "./src/*.tsx"
 },
 "scripts": {
 "lint": "eslint . --max-warnings 0",
 "generate:component": "turbo gen react-component",
 "test": "vitest"
 },
 "devDependencies": {
 "@emg-hub/eslint-config": "*",
 "@emg-hub/typescript-config": "*",
 "@testing-library/dom": "^10.4.1",
 "@testing-library/jest-dom": "^6.8.0",
 "@testing-library/react": "^16.3.0",
 "@testing-library/user-event": "^14.6.1",
 "@types/node": "^24.3.0",
 "@types/react": "19.1.12",
 "@types/react-dom": "19.1.9",
 "@vitejs/plugin-react": "^5.0.2",
 "@vitest/coverage-v8": "^3.2.4",
 "@vitest/ui": "^3.2.4",
 "eslint": "^9.34.0",
 "jsdom": "^26.1.0",
 "typescript": "5.9.2",
 "vite-tsconfig-paths": "^5.1.4",
 "vitest": "^3.2.4"
 },
 "dependencies": {
 "react": "^19.1.1",
 "react-dom": "^19.1.1"
 }
}
//vitest.config.mjs
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { configDefaults } from 'vitest/config'
export default defineConfig({
 plugins: [react()],
 test: {
 globals: true,
 environment: 'jsdom',
 exclude: [...configDefaults.exclude, 'e2e/*'], // optional
 coverage: {
 provider: 'v8', // or 'c8'
 reporter: ['text', 'json', 'html'],
 exclude: ['vite.config.*', 'src/main.*', '**/*.d.ts', '**/__tests__/**'],
 },
 },
})
//button.tsx
import { ReactNode } from "react";
interface ButtonProps {
 children: ReactNode;
 className?: string;
 appName: string;
}
export const Button = ({ children, className, appName }: ButtonProps) => {
 return (
 <button
 className={className}
 onClick={() => alert(`Hello from your ${appName} app!`)}
 >
 {children}
 </button>
 );
};
//button.test.tsx
import { render, screen, fireEvent } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, it, expect, beforeEach, vi } from 'vitest';
import { Button } from './button';
describe('Button', () => {
 beforeEach(() => {
 vi.clearAllMocks();
 });
 describe('rendering', () => {
 it('renders simple div', () => {
 render(<div>Click me</div>);
 expect(screen.getByText('Click me')).toBeInTheDocument();
 });
 it('renders with children text', () => {
 render(<Button appName="test">Click me</Button>);
 expect(screen.getByRole('button', { name: 'Click me' })).toBeInTheDocument();
 });
 });
});

What you did:

Tried running simple test using npm run test

What happened:

I got the error "Objects are not valid as a React child (found: object with keys {$$typeof, type, key, props, _owner, _store}). If you meant to render a collection of children, use an array instead." even on the simple test 'renders simple div'

Problem description:

I can't seem to run any test on this React component, with React 19. I also tried using Jest but same issues. I followed a guide to setup my test config. It's a simple internal package in a turborepo arch. The issue is always on the render method of the @testing-library/react

Suggested solution

I don't have any. I saw a similar issue #1387 but it was for a NextJs project and the solution offered isn't possible for me.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /