feat(e2e): add test mode infrastructure with BTERMINAL_TEST env isolation

Rust: watcher.rs/fs_watcher.rs skip watchers in test mode,
is_test_mode Tauri command. Frontend: wake-scheduler disable,
App.svelte test mode detection. AppConfig centralization in
bterminal-core (OnceLock pattern for path overrides).
This commit is contained in:
Hibryda 2026-03-12 02:52:14 +01:00 committed by DexterFromLab
parent 01c8ab8b3e
commit 4b86065163
18 changed files with 346 additions and 29 deletions

View file

@ -12,6 +12,8 @@
import { registerMemoryAdapter } from './lib/adapters/memory-adapter';
import { MemoraAdapter } from './lib/adapters/memora-bridge';
import { loadWorkspace, getActiveTab, setActiveTab, setActiveProject, getEnabledProjects } from './lib/stores/workspace.svelte';
import { disableWakeScheduler } from './lib/stores/wake-scheduler.svelte';
import { invoke } from '@tauri-apps/api/core';
// Workspace components
import GlobalTabBar from './lib/components/Workspace/GlobalTabBar.svelte';
@ -82,6 +84,11 @@
startAgentDispatcher();
startHealthTick();
// Disable wake scheduler in test mode to prevent timer interference
invoke<boolean>('is_test_mode').then(isTest => {
if (isTest) disableWakeScheduler();
});
if (!detached) {
loadWorkspace().then(() => { loaded = true; });
}

View file

@ -36,9 +36,17 @@ export interface WakeEvent {
let registrations = $state<Map<string, ManagerRegistration>>(new Map());
let pendingWakes = $state<Map<string, WakeEvent>>(new Map());
/** When true, registerManager() becomes a no-op (set in test mode) */
let schedulerDisabled = false;
// --- Public API ---
/** Disable the wake scheduler (call during app init in test mode) */
export function disableWakeScheduler(): void {
schedulerDisabled = true;
clearWakeScheduler();
}
/** Register a Manager agent for wake scheduling */
export function registerManager(
agentId: AgentId,
@ -48,6 +56,8 @@ export function registerManager(
intervalMin: number,
threshold: number,
): void {
if (schedulerDisabled) return;
// Unregister first to clear any existing timer
unregisterManager(agentId);