Package detail

@react-three/test-renderer

pmndrs81.4kMIT9.1.0

Test Renderer for react-three-fiber

readme

React Three Test Renderer ⚛️🔼🧪

Version Downloads Twitter Twitter Discord

@react-three/test-renderer is a React testing renderer for threejs in node.

yarn add @react-three/fiber three
yarn add -D @react-three/test-renderer

The problem

You've written a complex and amazing webgl experience using @react-three/fiber and you want to test it to make sure it works even after you add even more features.

You go to use react-dom but hang on, THREE elements aren't in the DOM! You decide to use @react-three/test-renderer you can see the container & the canvas but you can't see the tree for the scene!? That's because @react-three/fiber renders to a different react root with it's own reconciler.

The solution

You use @react-three/test-renderer ⚛️-🔼-🧪, an experimental React renderer using @react-three/fiber under the hood to expose the scene graph wrapped in a test instance providing helpful utilities to test with.

Essentially, this package makes it easy to grab a snapshot of the Scene Graph rendered by three without the need for webgl & browser.


Usage

RTTR is testing library agnostic, so we hope that it works with libraries such as jest, jasmine etc.

import ReactThreeTestRenderer from '@react-three/test-renderer'

const renderer = await ReactThreeTestRenderer.create(
  <mesh>
    <boxGeometry args={[2, 2]} />
    <meshStandardMaterial
      args={[
        {
          color: 0x0000ff,
        },
      ]}
    />
  </mesh>,
)

// assertions using the TestInstance & Scene Graph
console.log(renderer.toGraph())

API

changelog

@react-three/test-renderer

9.1.0

Minor Changes

  • 31781e5a1fdc464cb67617cc3d7bc5d8690cd4cd: feat(RTTR): handle primitives in test-renderer and fix queries in TestInstances

9.0.1

Patch Changes

  • 754861f16ac7ee93844d52057d2b8515b145fdb2: Republish as latest

9.0.0

Major Changes

  • 226d2ec: feat: React 19 support

8.2.4

Patch Changes

  • dec2cb28: fix(test-renderer): include types in output

8.2.3

Patch Changes

  • 2007c19b: fix: republish with types

8.2.2

Patch Changes

  • ff1a16f1: fix: narrow React peer dep range

8.2.1

Patch Changes

  • 020bb194: fix(RTTR): set initial size for NaN in viewport

8.2.0

Minor Changes

  • a5ffb08e: feat(RTTR): waitFor util

8.1.5

Patch Changes

  • 673927f7: fix(RTTR): implement HTMLCanvasElement.getContext

8.1.4

Patch Changes

  • 53ba22d3: fix(RTTR): fallback to canvas shim

8.1.3

Patch Changes

  • 2b0be267: fix: support WebGL2

8.1.2

Patch Changes

  • d9e6316d: fix: transpile class properties

8.1.1

Patch Changes

  • 9a776b71: fix(RTTR): backport traverse, update fixes

8.1.0

Minor Changes

  • 24c4dba4: shortcut for shadow type

8.0.17

Patch Changes

  • 786ccb46: fix: restore RTTR version

8.0.16

Patch Changes

  • 7b6df9df: fix: infinite loop updating cam viewport
  • Updated dependencies [7b6df9df]
    • @react-three/fiber@8.0.26

8.0.15

Patch Changes

  • b7cd0f42: update viewport on camera changes
  • Updated dependencies [b7cd0f42]
    • @react-three/fiber@8.0.25

8.0.14

Patch Changes

  • 29d03c64: revert multi attach
  • Updated dependencies [29d03c64]
    • @react-three/fiber@8.0.23

8.0.13

Patch Changes

  • 4c87bce: fix: attach, devtools, and perf fixes
  • Updated dependencies [4c87bce]
    • @react-three/fiber@8.0.20

8.0.12

Patch Changes

  • c4715d5f: allow invalidate to preempt more than 1 frame
  • Updated dependencies [c4715d5f]
    • @react-three/fiber@8.0.15

8.0.11

Patch Changes

  • 5559a119: Add support for recoverable errors
  • Updated dependencies [5559a119]
    • @react-three/fiber@8.0.14

8.0.10

Patch Changes

  • 9d77d8e2: fix: detach attribute removal
  • Updated dependencies [9d77d8e2]
    • @react-three/fiber@8.0.13

8.0.9

Patch Changes

  • 3d10413f: fix portal layers
  • Updated dependencies [3d10413f]
    • @react-three/fiber@8.0.12

8.0.8

Patch Changes

  • 5167b1e4: memoized.args can be undefined
  • Updated dependencies [5167b1e4]
    • @react-three/fiber@8.0.11

8.0.7

Patch Changes

  • eb321afd: fix: remount bug, allow portals to inject custom size
  • Updated dependencies [eb321afd]
    • @react-three/fiber@8.0.10

8.0.6

Patch Changes

  • 624df949: fix: canvas unmount race condition"
  • Updated dependencies [624df949]
    • @react-three/fiber@8.0.9

8.0.5

Patch Changes

  • d4bafb9: fix re-parenting, useframe not working properly in portals, attach crash
  • Updated dependencies [d4bafb9]
    • @react-three/fiber@8.0.6

8.0.4

Patch Changes

  • 227c328: fix pointer for root and portals
  • Updated dependencies [227c328]
    • @react-three/fiber@8.0.5

8.0.3

Patch Changes

  • 3252aed: setevents needs to spread and be mirrored in portals
  • Updated dependencies [3252aed]
    • @react-three/fiber@8.0.3

8.0.2

Patch Changes

  • 8035d1f: fix: legacy mode
  • Updated dependencies [8035d1f]
    • @react-three/fiber@8.0.2

8.0.1

Patch Changes

  • 26db195: add legacy flag to turn of three.colormanagement
  • Updated dependencies [26db195]
    • @react-three/fiber@8.0.1

8.0.0

Major Changes

  • 385ba9c: v8 major, react-18 compat
  • 04c07b8: v8 major, react-18 compat

Patch Changes

  • 347ea79: new beta for library testing
  • Updated dependencies [385ba9c]
  • Updated dependencies [04c07b8]
  • Updated dependencies [347ea79]
    • @react-three/fiber@8.0.0

8.0.0-beta.0

Major Changes

  • 385ba9c: v8 major, react-18 compat

Patch Changes

  • Updated dependencies [385ba9c]
    • @react-three/fiber@8.0.0-beta.0

7.0.25-beta.0

Patch Changes

  • cf6316c: new beta for library testing
  • Updated dependencies [cf6316c]
    • @react-three/fiber@8.0.0-beta.0

7.0.24

Patch Changes

  • 8698734: Release latest patches
  • Updated dependencies [8698734]
    • @react-three/fiber@7.0.25

7.0.23

Patch Changes

  • 7f46ddf: cleanup captured pointers when released (#1914)
  • Updated dependencies [7f46ddf]
    • @react-three/fiber@7.0.24

7.0.22

Patch Changes

  • 30d38b1: remove logs
  • Updated dependencies [30d38b1]
    • @react-three/fiber@7.0.23

7.0.21

Patch Changes

  • 259e1fa: add camera:manual
  • Updated dependencies [259e1fa]
    • @react-three/fiber@7.0.22

7.0.20

Patch Changes

  • 65e4147: up usemeasure, add last event to internals"
  • Updated dependencies [65e4147]
    • @react-three/fiber@7.0.21

7.0.19

Patch Changes

  • 54cb0fd: update react-use-measure, allow it to use the offsetSize
  • Updated dependencies [54cb0fd]
    • @react-three/fiber@7.0.20

7.0.18

Patch Changes

  • 7aa2eab: fix: remove zustand subscribe selector
  • Updated dependencies [7aa2eab]
    • @react-three/fiber@7.0.19

7.0.17

Patch Changes

  • 6780f58: fix unmount pointer capture
  • Updated dependencies [6780f58]
    • @react-three/fiber@7.0.18

7.0.16

Patch Changes

  • 894c550: fix: event count
  • Updated dependencies [894c550]
    • @react-three/fiber@7.0.17

7.0.15

Patch Changes

  • c7a4220: patch: applyprops returns the same instance
  • Updated dependencies [c7a4220]
    • @react-three/fiber@7.0.16

7.0.14

Patch Changes

  • c5645e8: fix primitive leftovers on switch
  • Updated dependencies [c5645e8]
    • @react-three/fiber@7.0.15

7.0.13

Patch Changes

  • 05af996: fix: revert the is function
  • Updated dependencies [05af996]
    • @react-three/fiber@7.0.14

7.0.12

Patch Changes

  • 0df6073: fix: missed events
  • Updated dependencies [0df6073]
    • @react-three/fiber@7.0.12

7.0.11

Patch Changes

  • 62b0a3a: fix: event order of missed pointers
  • Updated dependencies [62b0a3a]
    • @react-three/fiber@7.0.11

7.0.10

Patch Changes

  • e019dd4: fixes
  • Updated dependencies [e019dd4]
    • @react-three/fiber@7.0.10

7.0.8

Patch Changes

  • cd266e4: Fix diffProps dashed keys
  • Updated dependencies [cd266e4]
    • @react-three/fiber@7.0.9

7.0.7

Patch Changes

  • 0375896: Simplify useframe, support instanced event cancelation, silence disposal
  • Updated dependencies [0375896]
    • @react-three/fiber@7.0.7

7.0.6

Patch Changes

  • fb052ad: Fix babel-env browserslist transpiling into old code"
  • Updated dependencies [fb052ad]
    • @react-three/fiber@7.0.6

7.0.5

Patch Changes

  • c97794a: Add useLoader.clear(Loader, input)
  • Updated dependencies [c97794a]
    • @react-three/fiber@7.0.5

7.0.4

Patch Changes

  • 974ecfb: Allow elements to define attachFns for specific mount/unmount
  • Updated dependencies [974ecfb]
    • @react-three/fiber@7.0.4

7.0.1

Patch Changes

  • a97aca3: Add controls state field
  • Updated dependencies [a97aca3]
  • 4c703d6: fix rttr didn't work with r130
  • Updated dependencies [4c703d6]
  • @react-three/fiber@7.0.2

7.0.0

Major Changes

  • 96ae1ad: fix javascript interpreting renderpriority as positive

Patch Changes

  • Updated dependencies [96ae1ad]
    • @react-three/fiber@7.0.0

6.2.3

Patch Changes

  • 26bc7eb: typescript changes
  • Updated dependencies [26bc7eb]
    • @react-three/fiber@6.2.3

6.2.2

Patch Changes

  • 4f44a2c: use more helpful name with event handling in rttr
  • Updated dependencies [4f44a2c]
    • @react-three/fiber@6.2.2

6.1.5

Patch Changes

  • fix(rttr): if children is undefined return an array to map with
  • Updated dependencies [undefined]
    • @react-three/fiber@6.1.5

6.1.3

Patch Changes

  • 6faa090: Add shape to types, exclude event functions from event data
  • Updated dependencies [6faa090]
    • @react-three/fiber@6.1.4

6.1.2

Patch Changes

  • 71e72c0: Fix constructor args with attached children (#1348)
  • Updated dependencies [71e72c0]
    • @react-three/fiber@6.1.3

6.1.1