Files
OmniRoute/tests/unit/electron-window-close-policy.test.ts
Praveen K Palaniswamy 65e81158ab fix(ollama): route models by advertised capability (#11088)
Landed with the design call resolved per the owner's pick — **option 1**: the synced store is now endpoint-agnostic (persistDiscoveredModels and managedModelImport no longer drop non-chat models at write time), and chat selectability moved to read time (auto-pool expansion in autoStrategy applies filterChatSelectableModels; the models-route projection already had its chatOnly filter). Your discovery test now passes end-to-end (3/3): /api/show capabilities persist per connection and image/embedding requests route through the advertising host.

Reconciliation notes: conflicted areas merged onto the current tip (adobe discovery import, requestedModel preflight signature, resolvedProvider fast-path coexists with the synced-route override — explicit resolution wins); carried base-red drains (#10055 memoization, #11071 test variants) dropped as already-landed; the managed-model-import exclusion test was propagated to the new contract (image/video models persist; the read filter still hides them from chat pickers — pinned by a new assertion). Full battery: 205/206 focused (the one red is a confirmed periodic-timer timing flake on the loaded devbox — 20/20 isolated), autoCombo vitest 30/30, combo suites 46/46, gates + typecheck clean.

Thank you @yourspraveen — the capability probe + routing design was right; it just needed the store contract opened up. Fixes #11087.
2026-08-23 11:45:01 -03:00

88 lines
3.3 KiB
TypeScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import { join } from "node:path";
import { createRequire } from "node:module";
const require = createRequire(import.meta.url);
const {
CLOSE_BEHAVIOR_KEEP_LOADED,
CLOSE_BEHAVIOR_UNLOAD,
normalizeCloseBehavior,
resolveRendererUrl,
} = require("../../electron/lib/windowClosePolicy");
describe("Electron window close policy", () => {
it("accepts only the two deliberate close behaviors", () => {
assert.equal(normalizeCloseBehavior("keep-loaded"), CLOSE_BEHAVIOR_KEEP_LOADED);
assert.equal(normalizeCloseBehavior("unload"), CLOSE_BEHAVIOR_UNLOAD);
assert.equal(normalizeCloseBehavior("destroy"), null);
assert.equal(normalizeCloseBehavior(undefined), null);
});
it("preserves same-origin dashboard navigation when recreating the renderer", () => {
assert.equal(
resolveRendererUrl(
"http://localhost:20128/dashboard/settings?tab=providers",
"http://localhost:20128"
),
"http://localhost:20128/dashboard/settings?tab=providers"
);
});
it("falls back to the active server for invalid or cross-origin URLs", () => {
assert.equal(
resolveRendererUrl("https://example.com/dashboard", "http://localhost:20128"),
"http://localhost:20128/"
);
assert.equal(
resolveRendererUrl("not a url", "http://localhost:20128"),
"http://localhost:20128"
);
});
});
describe("Electron main-process close policy wiring", () => {
const mainSrc = readFileSync(join(import.meta.dirname, "../../electron/main.js"), "utf8");
it("defaults to keeping the renderer loaded and exposes both policies in the tray", () => {
assert.match(mainSrc, /electronPreferences\.closeBehavior/);
assert.match(mainSrc, /Keep Loaded \(Faster Reopen\)/);
assert.match(mainSrc, /Unload Renderer \(Lower Memory\)/);
assert.match(mainSrc, /writeCloseBehavior\(REMOTE_SERVER_PREFS_PATH, closeBehavior\)/);
});
it("destroys only the renderer in unload mode and otherwise hides the window", () => {
const closeHandler = mainSrc.slice(
mainSrc.indexOf('window.on("close"'),
mainSrc.indexOf('window.on("closed"')
);
assert.ok(closeHandler.includes("closeBehavior === CLOSE_BEHAVIOR_UNLOAD"));
assert.ok(closeHandler.includes("window.destroy()"));
assert.ok(closeHandler.includes("window.hide()"));
assert.ok(!closeHandler.includes("stopNextServer"));
});
it("recreates the renderer from every explicit reopen path", () => {
const secondInstanceHandler = mainSrc.slice(
mainSrc.indexOf('app.on("second-instance"'),
mainSrc.indexOf("// ── Environment Detection")
);
assert.ok(secondInstanceHandler.includes("showMainWindow()"));
assert.ok(secondInstanceHandler.includes("if (isHeadless) return"));
assert.match(mainSrc, /label: "Open OmniRoute",\s*click: \(\) => showMainWindow\(\)/);
assert.match(mainSrc, /tray\.on\("double-click", \(\) => showMainWindow\(\)\)/);
assert.match(
mainSrc,
/app\.on\("activate", \(\) => \{\s*if \(isHeadless\) return;\s*showMainWindow\(\);/
);
});
it("keeps the non-macOS app alive when unloading its last renderer", () => {
assert.match(
mainSrc,
/process\.platform !== "darwin"[\s\S]*closeBehavior !== CLOSE_BEHAVIOR_UNLOAD[\s\S]*app\.quit\(\)/
);
});
});