157 lines
4.0 KiB
TypeScript
157 lines
4.0 KiB
TypeScript
import "@testing-library/jest-dom/vitest";
|
|
|
|
// Guard: src/main/** tests run in the Node.js environment (no DOM). vitest still
|
|
// routes setupFiles here, so only install the DOM stubs when a DOM exists.
|
|
// ponytail: single guard; node env has no DOM to stub.
|
|
if (typeof window !== "undefined") {
|
|
class ResizeObserverStub {
|
|
observe() {}
|
|
unobserve() {}
|
|
disconnect() {}
|
|
}
|
|
|
|
Object.defineProperty(window, "ResizeObserver", {
|
|
configurable: true,
|
|
writable: true,
|
|
value: ResizeObserverStub,
|
|
});
|
|
|
|
Object.defineProperty(window, "matchMedia", {
|
|
configurable: true,
|
|
writable: true,
|
|
value: (query: string) => ({
|
|
matches: false,
|
|
media: query,
|
|
onchange: null,
|
|
addEventListener: () => undefined,
|
|
removeEventListener: () => undefined,
|
|
addListener: () => undefined,
|
|
removeListener: () => undefined,
|
|
dispatchEvent: () => false,
|
|
}),
|
|
});
|
|
|
|
const localStorageStub = (() => {
|
|
const values = new Map<string, string>();
|
|
return {
|
|
clear: () => values.clear(),
|
|
getItem: (key: string) => values.get(key) ?? null,
|
|
removeItem: (key: string) => values.delete(key),
|
|
setItem: (key: string, value: string) => values.set(key, value),
|
|
};
|
|
})();
|
|
|
|
Object.defineProperty(window, "localStorage", {
|
|
configurable: true,
|
|
writable: true,
|
|
value: localStorageStub,
|
|
});
|
|
|
|
HTMLCanvasElement.prototype.getContext = (() => ({})) as unknown as typeof HTMLCanvasElement.prototype.getContext;
|
|
|
|
Element.prototype.hasPointerCapture = (() => false) as typeof Element.prototype.hasPointerCapture;
|
|
Element.prototype.setPointerCapture = (() => undefined) as typeof Element.prototype.setPointerCapture;
|
|
Element.prototype.releasePointerCapture = (() => undefined) as typeof Element.prototype.releasePointerCapture;
|
|
Element.prototype.scrollIntoView = (() => undefined) as typeof Element.prototype.scrollIntoView;
|
|
|
|
window.ao = {
|
|
app: {
|
|
getVersion: async () => "0.0.0-test",
|
|
chooseDirectory: async () => null,
|
|
},
|
|
clipboard: {
|
|
writeText: async () => undefined,
|
|
readText: async () => "",
|
|
},
|
|
daemon: {
|
|
getStatus: async () => ({ state: "stopped" }),
|
|
start: async () => ({ state: "starting" }),
|
|
stop: async () => ({ state: "stopped" }),
|
|
onStatus: () => () => undefined,
|
|
},
|
|
telemetry: {
|
|
getBootstrap: async () => null,
|
|
},
|
|
browser: {
|
|
ensure: async (sessionId: string) => ({
|
|
viewId: `test:${sessionId}`,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
setBounds: () => undefined,
|
|
navigate: async ({ viewId }: { viewId: string }) => ({
|
|
viewId,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
clear: async (viewId: string) => ({
|
|
viewId,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
goBack: async (viewId: string) => ({
|
|
viewId,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
goForward: async (viewId: string) => ({
|
|
viewId,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
reload: async (viewId: string) => ({
|
|
viewId,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
stop: async (viewId: string) => ({
|
|
viewId,
|
|
url: "",
|
|
title: "",
|
|
canGoBack: false,
|
|
canGoForward: false,
|
|
isLoading: false,
|
|
}),
|
|
destroy: () => undefined,
|
|
onNavState: () => () => undefined,
|
|
},
|
|
notifications: {
|
|
show: async () => undefined,
|
|
onClick: () => () => undefined,
|
|
},
|
|
appState: {
|
|
getMigration: async () => ({ status: "pending" }),
|
|
setMigration: async () => undefined,
|
|
},
|
|
updateSettings: {
|
|
get: async () => ({ enabled: false, channel: "latest", nightlyAck: false }),
|
|
set: async () => undefined,
|
|
},
|
|
updates: {
|
|
getStatus: async () => ({ state: "idle" }),
|
|
check: async () => undefined,
|
|
download: async () => undefined,
|
|
install: async () => undefined,
|
|
onStatus: () => () => undefined,
|
|
},
|
|
};
|
|
} // end if (typeof window !== "undefined")
|