Overview
The pixi-solid/testing module provides utilities for testing pixi-solid components and hooks without a live canvas:
import { mountScene, createTestRoot, createTestContext, createManualTicker, getByLabel, queryByLabel, getAllByLabel, cleanup,} from "pixi-solid/testing";API quick reference
Section titled “API quick reference”// Component tests — renders a Pixi display objectmountScene(() => <Container>...</Container>)// => { container: Pixi.Container, dispose: () => void }
// Hook/store tests — no scene renderingcreateTestRoot(() => <ctx.Provider>{usePixiScreen()}</ctx.Provider>)// => { value: Screen, dispose: () => void }
// Mock contextscreateTestContext()// => { Provider, ticker: ManualTicker, renderer: TestRenderer, app: Pixi.Application }
// Manual frame advancementcreateManualTicker()// => { ticker: Pixi.Ticker, fastForwardFrames(), fastForwardTime() }
// Scene graph queriesgetByLabel(root, "label") // throws if not foundqueryByLabel(root, "label") // returns undefined if not foundgetAllByLabel(root, "label") // returns Pixi.DisplayObject[]
// Teardown (wire in afterEach)cleanup()When to use which
Section titled “When to use which”| Task | Function | Page |
|---|---|---|
| Render a component scene graph | mountScene | mount-scene |
| Test a hook or store (no scene needed) | createTestRoot | create-test-root |
| Get mock contexts | createTestContext | create-test-context |
| Advance frames manually | createManualTicker | create-manual-ticker |
| Find a node by label | getByLabel / queryByLabel / getAllByLabel | scene-queries |
| Run all disposers | cleanup | cleanup |
jsdom / renderer caveats
Section titled “jsdom / renderer caveats”- Pixel-level rendering is not tested — use a real canvas for integration tests
getContext()is not available — you'll seeNot implemented: HTMLCanvasElement's getContext()warnings in test output, which is expected and harmless- The mock
appis a minimal stub — only the parts used by pixi-solid hooks are implemented