feat(web-platform): release V0.8.3 常规界面优化
web-platform-release / Build and publish release (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (pull_request) Has been cancelled
web-platform-ci / Playwright E2E (pull_request) Has been cancelled

This commit is contained in:
2026-09-04 15:34:24 +08:00
parent 63d67a645b
commit fa5485049a
60 changed files with 4494 additions and 2073 deletions
+43 -5
View File
@@ -9,8 +9,7 @@ const interactionProps = {
canConvert: true,
onBindInteraction: () => {},
onSelectPreview: () => {},
onTransformMode: () => {},
onSnapping: () => {},
onSessionStateChange: () => {},
};
const document: EditableMapDocument = {
schemaVersion: 1,
@@ -114,22 +113,61 @@ describe('MapEditorPanel', () => {
expect(screen.getByLabelText('对象名称')).toHaveValue('认证方盒');
});
it('锁定放置方式后禁用位姿编辑', () => {
it('视口贴地命令通过会话端口锁定位姿编辑', async () => {
let interaction: MapEditorInteractionCallbacks | null = null;
let selectedId: string | null = null;
render(
<MapEditorPanel
{...interactionProps}
document={document}
loading={false}
onPreview={() => {}}
onSelectPreview={(id) => {
selectedId = id;
}}
onBindInteraction={(callbacks) => {
interaction = callbacks;
}}
onApply={async () => true}
onExport={() => {}}
/>,
);
fireEvent.click(screen.getByRole('button', { name: '新增' }));
fireEvent.change(screen.getByLabelText('对象放置方式'), { target: { value: 'locked' } });
expect(selectedId).toBeTruthy();
act(() =>
(interaction as unknown as MapEditorInteractionCallbacks).onSetPlacementMode(
selectedId!,
'locked',
),
);
await waitFor(() => expect(screen.getByText('锁定位姿')).toBeVisible());
expect(screen.getByLabelText('对象位置X')).toBeDisabled();
expect(screen.getByLabelText('对象绕Z旋转')).toBeDisabled();
expect(screen.getByRole('button', { name: '对齐地面' })).toBeDisabled();
});
it('把表面材质预设与三轴摩擦写入同一对象草稿', () => {
const onDraftChange = vi.fn();
render(
<MapEditorPanel
{...interactionProps}
document={document}
loading={false}
onPreview={() => {}}
onDraftChange={onDraftChange}
onApply={async () => true}
onExport={() => {}}
/>,
);
fireEvent.click(screen.getByRole('button', { name: '新增' }));
fireEvent.change(screen.getByLabelText('对象表面材质'), { target: { value: 'rubber' } });
expect(screen.getByLabelText('对象滑动摩擦')).toHaveValue(1.5);
expect(onDraftChange).toHaveBeenLastCalledWith(
'maps/map/map.json',
expect.objectContaining({
objects: [expect.objectContaining({ friction: [1.5, 0.008, 0.0002] })],
}),
true,
);
});
it('编辑出生点并包含在应用文档中', async () => {