Add unit test to release third-person pointer lock on Escape key press

This commit is contained in:
2026-04-27 18:57:11 +02:00
parent 15a7219cef
commit 5280e1e5fa

View File

@@ -142,6 +142,32 @@ describe("ThirdPersonNavigationController", () => {
controller.deactivate(context);
});
it("releases third-person pointer lock on Escape", () => {
const { context, domElement } = createRuntimeControllerContext();
const controller = new ThirdPersonNavigationController();
let pointerLockElement: Element | null = domElement;
const exitPointerLock = vi.fn(() => {
pointerLockElement = null;
document.dispatchEvent(new Event("pointerlockchange"));
});
Object.defineProperty(document, "pointerLockElement", {
configurable: true,
get: () => pointerLockElement
});
Object.defineProperty(document, "exitPointerLock", {
configurable: true,
value: exitPointerLock
});
controller.activate(context);
window.dispatchEvent(new KeyboardEvent("keydown", { code: "Escape" }));
expect(exitPointerLock).toHaveBeenCalledTimes(1);
controller.deactivate(context);
});
it("uses the gamepad right stick for third-person camera orbit", () => {
const { context } = createRuntimeControllerContext();
const controller = new ThirdPersonNavigationController();