mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-02 05:29:42 +02:00
The mobile suite drives a real browser against a WebServer started from TypeScript source, so fastify-static serves join(__dirname, 'public') = src/web/public — not dist/web/public, where `npm run build` puts the vendor bundles. Every /vendor/xterm* request 404s, so `Terminal` is never defined, initTerminal() never runs, and any test touching app.terminal dies with "Cannot read properties of null". Measured in one worktree, toggling only the vendor files: before: 404s=5 Terminal=undefined app.terminal=null 8 failed | 26 passed after: 404s=0 Terminal=function app.terminal=live 6 failed | 28 passed The 6 remaining failures are genuine pre-existing bugs (stale layout and accessory-bar expectations, a CJK timeout) and are left alone here. This went unnoticed because config/vitest.ci.config.ts excludes test/mobile/**, so CI never ran the suite. `npm run test:mobile` now runs it, with a pretest hook that builds the bundles. The asset list was derived from the actual 404s rather than from build.mjs — which is how xterm-addon-unicode11 and xterm-zerolag-input got included; reading the build file alone would have missed both. Outputs go to the gitignored src/web/public/vendor/, so they stay build artifacts. The script is idempotent (skips outputs newer than their source) and does not touch the normal build. Full CI suite unchanged: 4368 passed.