import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; const characterModelSource = readFileSync( new URL("./CharacterModel.tsx", import.meta.url), "utf8", ); const equipmentAttachmentSource = readFileSync( new URL("./equipmentAttachments.tsx", import.meta.url), "utf8", ); const gameSceneSource = readFileSync( new URL("../scene/GameScene.tsx", import.meta.url), "utf8", ); describe("avatar rendering integration invariants", () => { it("keeps starter weapons connected to loaded and fallback characters", () => { expect(characterModelSource).toContain(" { const loadedStarterAttachment = characterModelSource.match( //, )?.[0] ?? ""; expect(loadedStarterAttachment).toContain("entry={entry}"); expect(loadedStarterAttachment).not.toContain("attackPulseRef="); expect(characterModelSource).not.toContain("equipmentAttackPulseRef"); }); it("isolates each optional gear model behind its own loading and error boundary", () => { expect(equipmentAttachmentSource).toContain(""); expect(equipmentAttachmentSource).toContain(" { expect(gameSceneSource).toContain("beginMouseLookDrag("); expect(gameSceneSource).not.toContain("requestPointerLock("); }); });