mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-29 10:50:58 +00:00
test: use safe storage helpers in app mount hooks
This commit is contained in:
@@ -6,8 +6,8 @@ function isStorage(value: unknown): value is Storage {
|
||||
);
|
||||
}
|
||||
|
||||
export function getSafeLocalStorage(): Storage | null {
|
||||
const descriptor = Object.getOwnPropertyDescriptor(globalThis, "localStorage");
|
||||
function getSafeStorage(name: "localStorage" | "sessionStorage"): Storage | null {
|
||||
const descriptor = Object.getOwnPropertyDescriptor(globalThis, name);
|
||||
|
||||
if (typeof process !== "undefined" && process.env?.VITEST) {
|
||||
return descriptor && !descriptor.get && isStorage(descriptor.value) ? descriptor.value : null;
|
||||
@@ -15,7 +15,8 @@ export function getSafeLocalStorage(): Storage | null {
|
||||
|
||||
if (typeof window !== "undefined" && typeof document !== "undefined") {
|
||||
try {
|
||||
return isStorage(window.localStorage) ? window.localStorage : null;
|
||||
const storage = window[name];
|
||||
return isStorage(storage) ? storage : null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
@@ -23,3 +24,11 @@ export function getSafeLocalStorage(): Storage | null {
|
||||
|
||||
return descriptor && !descriptor.get && isStorage(descriptor.value) ? descriptor.value : null;
|
||||
}
|
||||
|
||||
export function getSafeLocalStorage(): Storage | null {
|
||||
return getSafeStorage("localStorage");
|
||||
}
|
||||
|
||||
export function getSafeSessionStorage(): Storage | null {
|
||||
return getSafeStorage("sessionStorage");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { afterEach, beforeEach, vi } from "vitest";
|
||||
import { i18n } from "../../i18n/index.ts";
|
||||
import { getSafeLocalStorage, getSafeSessionStorage } from "../../local-storage.ts";
|
||||
import "../app.ts";
|
||||
import type { OpenClawApp } from "../app.ts";
|
||||
|
||||
@@ -32,8 +33,8 @@ export function mountApp(pathname: string) {
|
||||
export function registerAppMountHooks() {
|
||||
beforeEach(async () => {
|
||||
window.__OPENCLAW_CONTROL_UI_BASE_PATH__ = undefined;
|
||||
localStorage.clear();
|
||||
sessionStorage.clear();
|
||||
getSafeLocalStorage()?.clear();
|
||||
getSafeSessionStorage()?.clear();
|
||||
document.body.innerHTML = "";
|
||||
await i18n.setLocale("en");
|
||||
vi.stubGlobal("WebSocket", MockWebSocket as unknown as typeof WebSocket);
|
||||
@@ -45,8 +46,8 @@ export function registerAppMountHooks() {
|
||||
|
||||
afterEach(async () => {
|
||||
window.__OPENCLAW_CONTROL_UI_BASE_PATH__ = undefined;
|
||||
localStorage.clear();
|
||||
sessionStorage.clear();
|
||||
getSafeLocalStorage()?.clear();
|
||||
getSafeSessionStorage()?.clear();
|
||||
document.body.innerHTML = "";
|
||||
await i18n.setLocale("en");
|
||||
vi.unstubAllGlobals();
|
||||
|
||||
Reference in New Issue
Block a user