> portfolio-phase-1@1.0.0 build:preview > npm run verify:approved-assets && npm run typecheck && npm run test:unit && npm run build:client && npm run build:ssr && npm run prerender -- --config config/site.preview.json && npm run verify:artifacts -- --config config/site.preview.json && npm run check:budgets:transfer > portfolio-phase-1@1.0.0 verify:approved-assets > node scripts/materialize-empty-asset-set.mjs > portfolio-phase-1@1.0.0 typecheck > vue-tsc --noEmit > portfolio-phase-1@1.0.0 test:unit > vitest run RUN v4.1.11 /home/luca/Documents/Portfolio/.worktrees/midnight-expressway ❯ tests/unit/world-models.test.ts (29 tests | 7 failed) 272ms × disposes a composer and its passes exactly once 32ms × keeps the grand tourer anatomy readable in desktop and portrait chase views 29ms × reflows a visible portrait sign into its navigator-safe pose without a teleport 4ms × keeps a short-landscape left sign inside the narrow desktop roadside gutter 3ms × places a portrait navigator arrival below its full-width destination panel 3ms × grows a medium portrait navigator sign without enlarging the phone pose 7ms × places route signs in their authored transition-safe corridors 10ms ❯ tests/unit/SceneCanvas.test.ts (16 tests | 2 failed) 134ms × does not request or render the scene for reduced motion 36ms × does not request or render the scene for saved Static mode 6ms ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 9 ⎯⎯⎯⎯⎯⎯⎯ FAIL tests/unit/SceneCanvas.test.ts > SceneCanvas > does not request or render the scene for reduced motion FAIL tests/unit/SceneCanvas.test.ts > SceneCanvas > does not request or render the scene for saved Static mode AssertionError: expected [] to have a length of 7 but got +0 - Expected + Received - 7 + 0 ❯ tests/unit/SceneCanvas.test.ts:95:9 93| expect( 94| wrapper.findAll(".journey-poster-composition > span"), 95| ).toHaveLength(7); | ^ 96| expect(wrapper.find(".journey-poster__sun").exists()).toBe(true); 97| expect(wrapper.find(".journey-poster__road").exists()).toBe(true… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > disposes a composer and its passes exactly once AssertionError: expected 0.39 to be greater than 0.54 ❯ tests/unit/world-models.test.ts:439:32 437| expect(outputPass.dispose).toHaveBeenCalledOnce(); 438| expect(composer.dispose).toHaveBeenCalledOnce(); 439| expect(bloomPass.strength).toBeGreaterThan(0.54); | ^ 440| }); 441| ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > keeps the grand tourer anatomy readable in desktop and portrait chase views AssertionError: expected 56 to be 66 // Object.is equality - Expected + Received - 66 + 56 ❯ tests/unit/world-models.test.ts:461:52 459| 460| const desktopCamera = createChaseCamera(16 / 9); 461| expect((desktopCamera as { fov: number }).fov).toBe(66); | ^ 462| const desktop = projectedBounds(car.group, desktopCamera); 463| expect(desktop.maxX - desktop.minX).toBeGreaterThan(0.28); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > reflows a visible portrait sign into its navigator-safe pose without a teleport AssertionError: expected 595.8091348948393 to be greater than or equal to 626 ❯ tests/unit/world-models.test.ts:818:37 816| if (presentation === null) throw new Error("Missing navigator-safe… 817| expect(sign.group.position.distanceTo(midpoint)).toBeGreaterThan(0… 818| expect(presentation.bounds.top).toBeGreaterThanOrEqual(626); | ^ 819| expect(presentation.bounds.bottom).toBeLessThanOrEqual(690); 820| resources.dispose(); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > keeps a short-landscape left sign inside the narrow desktop roadside gutter AssertionError: expected -10.199278524338355 to be greater than or equal to 8 ❯ tests/unit/world-models.test.ts:884:38 882| const presentation = sign.inspect(camera, 780, 493); 883| if (presentation === null) throw new Error("Missing short-landscap… 884| expect(presentation.bounds.left).toBeGreaterThanOrEqual(8); | ^ 885| expect(presentation.bounds.right).toBeLessThanOrEqual(265); 886| resources.dispose(); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > places a portrait navigator arrival below its full-width destination panel AssertionError: expected 595.8091348948393 to be greater than or equal to 626 ❯ tests/unit/world-models.test.ts:921:37 919| if (presentation === null) throw new Error("Missing portrait navig… 920| expect(presentation.bounds.left).toBeGreaterThanOrEqual(8); 921| expect(presentation.bounds.top).toBeGreaterThanOrEqual(626); | ^ 922| expect(presentation.bounds.right).toBeLessThanOrEqual(382); 923| expect(presentation.bounds.bottom).toBeLessThanOrEqual(690); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > grows a medium portrait navigator sign without enlarging the phone pose AssertionError: expected 122.59356940139988 to be less than or equal to 110 ❯ tests/unit/world-models.test.ts:958:32 956| 957| expect(phone.bounds.width).toBeGreaterThanOrEqual(85); 958| expect(phone.bounds.width).toBeLessThanOrEqual(110); | ^ 959| expect(medium.viewportProfile).toBe("tall"); 960| expect(medium.bounds.width).toBeGreaterThanOrEqual(145); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/9]⎯ FAIL tests/unit/world-models.test.ts > procedural world models > places route signs in their authored transition-safe corridors AssertionError: expected 656.9555824147709 to be less than or equal to 630 ❯ tests/unit/world-models.test.ts:1013:51 1011| expect(experiencePresentation?.corridor).toBe("right"); 1012| expect(experiencePresentation?.bounds.top).toBeGreaterThanOrEqual(… 1013| expect(experiencePresentation?.bounds.bottom).toBeLessThanOrEqual(… | ^ 1014| 1015| sign.update(null); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/9]⎯ Test Files 2 failed | 47 passed (49) Tests 9 failed | 653 passed (662) Start at 04:04:19 Duration 23.81s (transform 17.57s, setup 0ms, import 30.29s, tests 45.44s, environment 19.53s)