Add test for night background overlay rendering
This commit is contained in:
@@ -96,6 +96,7 @@ const { MockRuntimeHost, runtimeHostInstances } = vi.hoisted(() => {
|
|||||||
loadScene: ReturnType<typeof vi.fn>;
|
loadScene: ReturnType<typeof vi.fn>;
|
||||||
updateAssets: ReturnType<typeof vi.fn>;
|
updateAssets: ReturnType<typeof vi.fn>;
|
||||||
setNavigationMode: ReturnType<typeof vi.fn>;
|
setNavigationMode: ReturnType<typeof vi.fn>;
|
||||||
|
setRuntimeClockStateHandler: ReturnType<typeof vi.fn>;
|
||||||
setRuntimeMessageHandler: ReturnType<typeof vi.fn>;
|
setRuntimeMessageHandler: ReturnType<typeof vi.fn>;
|
||||||
setFirstPersonTelemetryHandler: ReturnType<typeof vi.fn>;
|
setFirstPersonTelemetryHandler: ReturnType<typeof vi.fn>;
|
||||||
setInteractionPromptHandler: ReturnType<typeof vi.fn>;
|
setInteractionPromptHandler: ReturnType<typeof vi.fn>;
|
||||||
@@ -109,6 +110,7 @@ const { MockRuntimeHost, runtimeHostInstances } = vi.hoisted(() => {
|
|||||||
loadScene = vi.fn();
|
loadScene = vi.fn();
|
||||||
updateAssets = vi.fn();
|
updateAssets = vi.fn();
|
||||||
setNavigationMode = vi.fn();
|
setNavigationMode = vi.fn();
|
||||||
|
setRuntimeClockStateHandler = vi.fn();
|
||||||
setRuntimeMessageHandler = vi.fn();
|
setRuntimeMessageHandler = vi.fn();
|
||||||
setFirstPersonTelemetryHandler = vi.fn();
|
setFirstPersonTelemetryHandler = vi.fn();
|
||||||
setInteractionPromptHandler = vi.fn();
|
setInteractionPromptHandler = vi.fn();
|
||||||
@@ -387,6 +389,44 @@ describe("RunnerCanvas", () => {
|
|||||||
).toHaveBeenCalledTimes(2);
|
).toHaveBeenCalledTimes(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("renders the night background overlay behind the scene when the night profile is active", async () => {
|
||||||
|
const document = createEmptySceneDocument();
|
||||||
|
document.time.nightBackground.assetId = "asset-night-sky";
|
||||||
|
const runtimeScene = buildRuntimeSceneFromDocument(document);
|
||||||
|
|
||||||
|
render(
|
||||||
|
<RunnerCanvas
|
||||||
|
runtimeScene={runtimeScene}
|
||||||
|
runtimeClock={{
|
||||||
|
timeOfDayHours: 0,
|
||||||
|
dayCount: 0,
|
||||||
|
dayLengthMinutes: runtimeScene.time.dayLengthMinutes
|
||||||
|
}}
|
||||||
|
sceneName="Night Runner"
|
||||||
|
sceneLoadingScreen={createDefaultSceneLoadingScreenSettings()}
|
||||||
|
projectAssets={{}}
|
||||||
|
loadedModelAssets={{}}
|
||||||
|
loadedImageAssets={{
|
||||||
|
"asset-night-sky": {
|
||||||
|
sourceUrl: "/night-sky.png"
|
||||||
|
} as never
|
||||||
|
}}
|
||||||
|
loadedAudioAssets={{}}
|
||||||
|
navigationMode="firstPerson"
|
||||||
|
onRuntimeMessageChange={vi.fn()}
|
||||||
|
onFirstPersonTelemetryChange={vi.fn()}
|
||||||
|
onInteractionPromptChange={vi.fn()}
|
||||||
|
onSceneExitActivated={vi.fn()}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(runtimeHostInstances).toHaveLength(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(screen.getByTestId("runner-night-background-overlay")).toBeVisible();
|
||||||
|
});
|
||||||
|
|
||||||
it("keeps the crosshair hidden in third-person mode while still showing interaction prompts", async () => {
|
it("keeps the crosshair hidden in third-person mode while still showing interaction prompts", async () => {
|
||||||
const runtimeScene = buildRuntimeSceneFromDocument(
|
const runtimeScene = buildRuntimeSceneFromDocument(
|
||||||
createEmptySceneDocument()
|
createEmptySceneDocument()
|
||||||
|
|||||||
Reference in New Issue
Block a user