fix: E2E test fixes and host resilience improvements (#206)

1. video-resource-server: Add missing server-utils.ts and fix import path
   - Was importing from non-existent ../shared/server-utils.js
   - Now correctly imports from ./src/server-utils.js

2. basic-host: Be resilient to individual server connection failures
   - Use Promise.allSettled instead of Promise.all
   - Failed connections are logged as warnings but don't crash the UI
   - Only throws if ALL servers fail to connect

3. threejs-server: Add id to canvas for reliable screenshot masking
   - Added id="threejs-canvas" to the canvas element
   - Updated e2e test masks to use #threejs-canvas and .threejs-container
   - Fixes flaky Three.js screenshot comparisons in CI

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Olivier Chafik 2026-01-09 00:30:49 +00:00 • committed by GitHub
commit 7eb98ad121
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 2 additions and 1 deletions

View file

@ -188,6 +188,7 @@ export default function ThreeJSApp({
style={containerStyle}
>
<canvas
id="threejs-canvas"
ref={canvasRef}
style={{
width: "100%",

View file

@ -21,7 +21,7 @@ const DYNAMIC_MASKS: Record<string, string[]> = {
"#memory-bar-fill", // Memory bar fill level
"#info-uptime", // System uptime
],
threejs: ["canvas"], // 3D render canvas (dynamic animation)
threejs: ["#threejs-canvas", ".threejs-container"], // 3D render canvas (dynamic animation)
"wiki-explorer": ["#graph"], // Force-directed graph (dynamic layout)
};