Add test for runtime host recreation logic
This commit is contained in:
@@ -275,4 +275,54 @@ describe("RunnerCanvas", () => {
|
|||||||
);
|
);
|
||||||
expect(document.querySelector(".runner-canvas__crosshair")).toBeNull();
|
expect(document.querySelector(".runner-canvas__crosshair")).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("does not recreate the runtime host when the scene-exit callback identity changes", async () => {
|
||||||
|
const runtimeScene = buildRuntimeSceneFromDocument(
|
||||||
|
createEmptySceneDocument()
|
||||||
|
);
|
||||||
|
const { rerender } = render(
|
||||||
|
<RunnerCanvas
|
||||||
|
runtimeScene={runtimeScene}
|
||||||
|
sceneName="Stable Runner"
|
||||||
|
sceneLoadingScreen={createDefaultSceneLoadingScreenSettings()}
|
||||||
|
projectAssets={{}}
|
||||||
|
loadedModelAssets={{}}
|
||||||
|
loadedImageAssets={{}}
|
||||||
|
loadedAudioAssets={{}}
|
||||||
|
navigationMode="firstPerson"
|
||||||
|
onRuntimeMessageChange={vi.fn()}
|
||||||
|
onFirstPersonTelemetryChange={vi.fn()}
|
||||||
|
onInteractionPromptChange={vi.fn()}
|
||||||
|
onSceneExitActivated={vi.fn()}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(runtimeHostInstances).toHaveLength(1);
|
||||||
|
expect(runtimeHostInstances[0]?.loadScene).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
rerender(
|
||||||
|
<RunnerCanvas
|
||||||
|
runtimeScene={runtimeScene}
|
||||||
|
sceneName="Stable Runner"
|
||||||
|
sceneLoadingScreen={createDefaultSceneLoadingScreenSettings()}
|
||||||
|
projectAssets={{}}
|
||||||
|
loadedModelAssets={{}}
|
||||||
|
loadedImageAssets={{}}
|
||||||
|
loadedAudioAssets={{}}
|
||||||
|
navigationMode="firstPerson"
|
||||||
|
onRuntimeMessageChange={vi.fn()}
|
||||||
|
onFirstPersonTelemetryChange={vi.fn()}
|
||||||
|
onInteractionPromptChange={vi.fn()}
|
||||||
|
onSceneExitActivated={vi.fn()}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(runtimeHostInstances).toHaveLength(1);
|
||||||
|
expect(runtimeHostInstances[0]?.loadScene).toHaveBeenCalledTimes(1);
|
||||||
|
expect(
|
||||||
|
runtimeHostInstances[0]?.setSceneExitHandler
|
||||||
|
).toHaveBeenCalledTimes(2);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user