Refactor camera state and view mode handling in e2e tests

This commit is contained in:
2026-04-04 20:22:21 +02:00
parent ec69f450df
commit 2a924b5b36

View File

@@ -50,8 +50,6 @@ test("whitebox component selection modes keep object picking intentional across
} }
}); });
await page.getByTestId("viewport-layout-quad").click();
await page.evaluate(({ target }) => { await page.evaluate(({ target }) => {
const store = (window as Window & { const store = (window as Window & {
__webeditor3dEditorStore?: { __webeditor3dEditorStore?: {
@@ -64,24 +62,13 @@ test("whitebox component selection modes keep object picking intentional across
orthographicZoom: number; orthographicZoom: number;
}; };
}; };
topRight: {
cameraState: {
target: { x: number; y: number; z: number };
perspectiveOrbit: { radius: number; theta: number; phi: number };
orthographicZoom: number;
};
};
}; };
}; };
setViewportPanelCameraState( setViewportPanelCameraState(panelId: "topLeft", cameraState: {
panelId: "topLeft" | "topRight", target: { x: number; y: number; z: number };
cameraState: { perspectiveOrbit: { radius: number; theta: number; phi: number };
target: { x: number; y: number; z: number }; orthographicZoom: number;
perspectiveOrbit: { radius: number; theta: number; phi: number }; }): void;
orthographicZoom: number;
}
): void;
setViewportPanelViewMode(panelId: "topRight", viewMode: "top"): void;
}; };
}).__webeditor3dEditorStore; }).__webeditor3dEditorStore;
@@ -90,7 +77,6 @@ test("whitebox component selection modes keep object picking intentional across
} }
const topLeftCameraState = store.getState().viewportPanels.topLeft.cameraState; const topLeftCameraState = store.getState().viewportPanels.topLeft.cameraState;
const topRightCameraState = store.getState().viewportPanels.topRight.cameraState;
store.setViewportPanelCameraState("topLeft", { store.setViewportPanelCameraState("topLeft", {
...topLeftCameraState, ...topLeftCameraState,
@@ -101,12 +87,6 @@ test("whitebox component selection modes keep object picking intentional across
phi: 1.08 phi: 1.08
} }
}); });
store.setViewportPanelViewMode("topRight", "top");
store.setViewportPanelCameraState("topRight", {
...topRightCameraState,
target,
orthographicZoom: 8
});
}, { target: brush.center }); }, { target: brush.center });
await expect(page.getByTestId("viewport-selection-mode-topLeft")).toHaveText("Object"); await expect(page.getByTestId("viewport-selection-mode-topLeft")).toHaveText("Object");
@@ -118,6 +98,44 @@ test("whitebox component selection modes keep object picking intentional across
ids: [brush.id] ids: [brush.id]
}); });
await page.getByTestId("viewport-layout-quad").click();
await page.evaluate(({ target }) => {
const store = (window as Window & {
__webeditor3dEditorStore?: {
getState(): {
viewportPanels: {
topRight: {
cameraState: {
target: { x: number; y: number; z: number };
perspectiveOrbit: { radius: number; theta: number; phi: number };
orthographicZoom: number;
};
};
};
};
setViewportPanelViewMode(panelId: "topRight", viewMode: "top"): void;
setViewportPanelCameraState(panelId: "topRight", cameraState: {
target: { x: number; y: number; z: number };
perspectiveOrbit: { radius: number; theta: number; phi: number };
orthographicZoom: number;
}): void;
};
}).__webeditor3dEditorStore;
if (store === undefined) {
throw new Error("Editor store debug hook is unavailable.");
}
const topRightCameraState = store.getState().viewportPanels.topRight.cameraState;
store.setViewportPanelViewMode("topRight", "top");
store.setViewportPanelCameraState("topRight", {
...topRightCameraState,
target,
orthographicZoom: 8
});
}, { target: brush.center });
await page.getByTestId("whitebox-selection-mode-face").click(); await page.getByTestId("whitebox-selection-mode-face").click();
await expect(page.getByTestId("viewport-selection-mode-topRight")).toHaveText("Face"); await expect(page.getByTestId("viewport-selection-mode-topRight")).toHaveText("Face");
await clickViewportAtRatio(page, "topRight", 0.5, 0.5); await clickViewportAtRatio(page, "topRight", 0.5, 0.5);