From 7ff9d760d4126a413865389ca7393d3a6f191a88 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 11 Apr 2026 18:44:36 +0200 Subject: [PATCH] Refactor telemetry creation in tests/unit/runner-canvas.test.tsx --- tests/unit/runner-canvas.test.tsx | 66 ++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/tests/unit/runner-canvas.test.tsx b/tests/unit/runner-canvas.test.tsx index 45459f61..fcc3536f 100644 --- a/tests/unit/runner-canvas.test.tsx +++ b/tests/unit/runner-canvas.test.tsx @@ -11,6 +11,46 @@ import type { FirstPersonTelemetry } from "../../src/runtime-three/navigation-co import type { RuntimeSceneLoadState } from "../../src/runtime-three/runtime-host"; import { buildRuntimeSceneFromDocument } from "../../src/runtime-three/runtime-scene-build"; +function createSwimmingTelemetry( + runtimeScene: ReturnType, + cameraSubmerged: boolean +): FirstPersonTelemetry { + return { + feetPosition: { x: 0, y: 0, z: 0 }, + eyePosition: { x: 0, y: cameraSubmerged ? 0.4 : 1.7, z: 0 }, + grounded: false, + locomotionState: { + locomotionMode: "swimming", + airborneKind: null, + gait: "walk", + grounded: false, + crouched: false, + sprinting: false, + inputMagnitude: 1, + requestedPlanarSpeed: runtimeScene.playerMovement.moveSpeed, + planarSpeed: runtimeScene.playerMovement.moveSpeed, + verticalVelocity: 0, + contact: { + collisionCount: 0, + collidedAxes: { + x: false, + y: false, + z: false + }, + groundNormal: null, + groundDistance: null, + slopeDegrees: null + } + }, + movement: runtimeScene.playerMovement, + inWaterVolume: true, + cameraSubmerged, + inFogVolume: false, + pointerLocked: true, + spawn: runtimeScene.spawn + }; +} + const { MockRuntimeHost, runtimeHostInstances } = vi.hoisted(() => { const runtimeHostInstances: Array<{ mount: ReturnType; @@ -114,18 +154,7 @@ describe("RunnerCanvas", () => { }); act(() => { - publishTelemetry?.({ - feetPosition: { x: 0, y: 0, z: 0 }, - eyePosition: { x: 0, y: 1.7, z: 0 }, - grounded: false, - locomotionState: "swimming", - movement: runtimeScene.playerMovement, - inWaterVolume: true, - cameraSubmerged: false, - inFogVolume: false, - pointerLocked: true, - spawn: runtimeScene.spawn - }); + publishTelemetry?.(createSwimmingTelemetry(runtimeScene, false)); }); expect( @@ -134,18 +163,7 @@ describe("RunnerCanvas", () => { expect(document.querySelector(".runner-canvas__underwater")).toBeNull(); act(() => { - publishTelemetry?.({ - feetPosition: { x: 0, y: 0, z: 0 }, - eyePosition: { x: 0, y: 0.4, z: 0 }, - grounded: false, - locomotionState: "swimming", - movement: runtimeScene.playerMovement, - inWaterVolume: true, - cameraSubmerged: true, - inFogVolume: false, - pointerLocked: true, - spawn: runtimeScene.spawn - }); + publishTelemetry?.(createSwimmingTelemetry(runtimeScene, true)); }); expect(screen.getByLabelText("Built-in scene runner").className).toContain(