// jsdom 缺少浏览器布局/观察器能力:只补组件运行所需的最小桩,不替业务逻辑兜底。 if (!("ResizeObserver" in globalThis)) { class ResizeObserverStub { observe() {} unobserve() {} disconnect() {} } (globalThis as any).ResizeObserver = ResizeObserverStub; } if (!window.matchMedia) { window.matchMedia = ((query: string) => ({ matches: false, media: query, onchange: null, addListener() {}, removeListener() {}, addEventListener() {}, removeEventListener() {}, dispatchEvent() { return false; }, })) as any; } if (!navigator.clipboard) { Object.defineProperty(navigator, "clipboard", { configurable: true, value: { writeText: async () => undefined }, }); }