Files
ruvnet--RuView/ui/mobile/jest.setup.pre.js
ruv 7485ebed57 fix: implement 14 missing API endpoints, fix WebSocket connectivity, and replace 25 placeholder mobile tests
The web UI had persistent 404 errors on model, recording, and training
endpoints, and the sensing WebSocket never connected on Dashboard/Live
Demo tabs because sensingService.start() was only called lazily on
Sensing tab visit.

Server (main.rs):
- Add 14 fully-functional Axum handlers: model CRUD (7), recording
  lifecycle (4), training control (3)
- Scan data/models/ and data/recordings/ at startup
- Recording writes CSI frames to .jsonl via tokio background task
- Model load/unload lifecycle with state tracking

Web UI (app.js):
- Import and start sensingService early in initializeServices() so
  Dashboard and Live Demo tabs connect to /ws/sensing immediately

Mobile (ws.service.ts):
- Fix WebSocket URL builder to use same-origin port instead of
  hardcoded port 3001

Mobile (jest.config.js):
- Fix testPathIgnorePatterns that was ignoring the entire test directory

Mobile (25 test files):
- Replace all it.todo() placeholder tests with real implementations
  covering components, services, stores, hooks, screens, and utils

ADR-043 documents all changes.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-03 13:24:03 -05:00

39 lines
1.2 KiB
JavaScript

// Pre-define globals that expo/src/winter/runtime.native.ts would lazily
// install via require()-with-ESM-import, which jest 30 rejects.
// By defining them upfront as non-configurable, the `install()` function
// in installGlobal.ts will skip them with a console.error (which is harmless).
const globalsToProtect = [
'TextDecoder',
'TextDecoderStream',
'TextEncoderStream',
'URL',
'URLSearchParams',
'__ExpoImportMetaRegistry',
'structuredClone',
];
for (const name of globalsToProtect) {
if (globalThis[name] !== undefined) {
// Already defined (e.g. Node provides URL, TextDecoder, structuredClone).
// Make it non-configurable so expo's install() skips it.
try {
Object.defineProperty(globalThis, name, {
value: globalThis[name],
configurable: false,
enumerable: true,
writable: true,
});
} catch {
// Already non-configurable, fine.
}
} else {
// Not yet defined, set a stub value and make non-configurable.
Object.defineProperty(globalThis, name, {
value: name === '__ExpoImportMetaRegistry' ? { url: 'http://localhost:8081' } : undefined,
configurable: false,
enumerable: false,
writable: true,
});
}
}