抽取共享 ResizeObserver 测试桩
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m59s
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m59s
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
让项目开发测试复用统一 observer 安装 helper 保留 observer 创建与断开计数断言
This commit is contained in:
@@ -1227,6 +1227,32 @@ async function openMainProject(projectPath: string) {
|
||||
).not.toBeNull();
|
||||
}
|
||||
|
||||
export function installResizeObserverStub() {
|
||||
let observerCount = 0;
|
||||
let observerDisconnected = false;
|
||||
class TestResizeObserver {
|
||||
constructor(readonly callback: ResizeObserverCallback) {
|
||||
observerCount += 1;
|
||||
}
|
||||
|
||||
observe() {}
|
||||
|
||||
unobserve() {}
|
||||
|
||||
disconnect() {
|
||||
observerDisconnected = true;
|
||||
}
|
||||
}
|
||||
Object.defineProperty(window, 'ResizeObserver', {
|
||||
configurable: true,
|
||||
value: TestResizeObserver,
|
||||
});
|
||||
return {
|
||||
observerCount: () => observerCount,
|
||||
observerDisconnected: () => observerDisconnected,
|
||||
};
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
resetLlmModelCatalogCacheForTest();
|
||||
vi.spyOn(clientApi, 'loadClientLlmModels').mockResolvedValue({
|
||||
|
||||
@@ -34,6 +34,7 @@ import {
|
||||
GAME_CREATION_AGENT_RUN_SCHEMA_VERSION,
|
||||
type GameCreationAgentRunTrace,
|
||||
getResourceSelectButton,
|
||||
installResizeObserverStub,
|
||||
it,
|
||||
mockRoleAgentReply,
|
||||
openResourceFilterPanel,
|
||||
@@ -4708,25 +4709,7 @@ export function registerProjectWorkbenchFoundationTests() {
|
||||
manuallyPlaced: false,
|
||||
},
|
||||
];
|
||||
let observerCount = 0;
|
||||
let observerDisconnected = false;
|
||||
class TestResizeObserver {
|
||||
constructor(readonly callback: ResizeObserverCallback) {
|
||||
observerCount += 1;
|
||||
}
|
||||
|
||||
observe() {}
|
||||
|
||||
unobserve() {}
|
||||
|
||||
disconnect() {
|
||||
observerDisconnected = true;
|
||||
}
|
||||
}
|
||||
Object.defineProperty(window, 'ResizeObserver', {
|
||||
configurable: true,
|
||||
value: TestResizeObserver,
|
||||
});
|
||||
const resizeObserver = installResizeObserverStub();
|
||||
const animationFrame = vi.spyOn(window, 'requestAnimationFrame');
|
||||
const originalGetBoundingClientRect =
|
||||
HTMLElement.prototype.getBoundingClientRect;
|
||||
@@ -4818,7 +4801,7 @@ export function registerProjectWorkbenchFoundationTests() {
|
||||
/^url\(#.+-asset-reference-arrow\)$/u,
|
||||
);
|
||||
});
|
||||
expect(observerCount).toBe(1);
|
||||
expect(resizeObserver.observerCount()).toBe(1);
|
||||
expect(
|
||||
overlay
|
||||
.querySelector('[data-testid="resource-dependency-overlay-scene"]')
|
||||
@@ -4865,7 +4848,7 @@ export function registerProjectWorkbenchFoundationTests() {
|
||||
),
|
||||
);
|
||||
rendered.unmount();
|
||||
expect(observerDisconnected).toBe(true);
|
||||
expect(resizeObserver.observerDisconnected()).toBe(true);
|
||||
expect(removeViewportListener).toHaveBeenCalledWith(
|
||||
'scroll',
|
||||
expect.any(Function),
|
||||
@@ -5917,12 +5900,7 @@ export function registerProjectWorkbenchFoundationTests() {
|
||||
});
|
||||
|
||||
it('restores resource canvas panning after returning from the UI editor', async () => {
|
||||
class TestResizeObserver {
|
||||
constructor(_callback: ResizeObserverCallback) {}
|
||||
observe() {}
|
||||
disconnect() {}
|
||||
}
|
||||
vi.stubGlobal('ResizeObserver', TestResizeObserver);
|
||||
installResizeObserverStub();
|
||||
const manifest = createGameCreationAppManifest(
|
||||
'workbench-ui-editor-return-pan',
|
||||
'UI 编辑器返回平移测试',
|
||||
|
||||
Reference in New Issue
Block a user