16 KiB
Editor UI Integration Validation
This directory contains editor-only XCUI manual validation scenarios.
Rules:
- Shared Core primitives stay in
tests/UI/Core/integration/. - Only editor-only shell, host, widget, and domain-integrated validation belongs here.
- Scenarios are organized as
tests/UI/Editor/integration/<category>/<scenario>/. - Each scenario owns its own
captures/directory.
Layout:
- Primary categories are
shell/andstate/. menu,workspace, andviewportin scenario names describe contract families, not extra directory levels.shared/: shared host wrapper, scenario registry, shared themeshell/workspace_shell_compose/: split/tab/panel shell compose onlyshell/editor_shell_compose/: editor root shell compose onlyshell/editor_shell_interaction/: editor root shell interaction onlyshell/dock_host_basic/: DockHost interaction contract onlyshell/panel_content_host_basic/: external panel body mount/switch/unmount onlyshell/menu_bar_basic/: menu bar open/close/hover/dispatch onlyshell/context_menu_basic/: context menu root/submenu/dismiss/dispatch onlyshell/panel_frame_basic/: panel frame layout/state/hit-test onlyshell/scroll_view_basic/: ScrollView viewport, clip, thumb drag, wheel offset onlyshell/property_grid_basic/: PropertyGrid section toggle, field selection, value edit, keyboard navigation onlyshell/bool_field_basic/: BoolField click toggle, keyboard toggle, hover/focus/value feedback onlyshell/number_field_basic/: NumberField step buttons, direct text edit, Enter commit, Esc cancel onlyshell/enum_field_basic/: EnumField previous/next switch, keyboard switch, hover/focus/selection feedback onlyshell/status_bar_basic/: status bar slot/segment/hit-test onlyshell/tree_view_basic/: TreeView row layout, indent, disclosure, selection, focus, hit-test onlyshell/list_view_basic/: ListView row layout, selection, focus, keyboard navigation, hit-test onlyshell/tab_strip_basic/: tab strip layout/state/hit-test/close/navigation onlyshell/viewport_slot_basic/: viewport slot chrome/surface/status onlyshell/viewport_shell_basic/: viewport shell request/state compose onlyshell/workspace_viewport_compose/: workspace body external presentation compose onlyshell/workspace_interaction_basic/: workspace unified interaction onlystate/panel_session_flow/: panel session state flow onlystate/panel_host_lifecycle/: panel host attach/detach/show/hide/activate/focus contract onlystate/layout_persistence/: layout save/load/reset onlystate/shortcut_dispatch/: shortcut match/suppression/dispatch onlystate/viewport_input_bridge_basic/: viewport hover/focus/capture, local pointer coordinates, wheel/key/character bridge only
Scenarios:
-
editor.shell.workspace_shell_composeBuild target:editor_ui_workspace_shell_compose_validationExecutable:XCUIEditorWorkspaceShellComposeValidation.exeScope: DockHost compose, splitter drag, tab host, panel frame placeholders, workspace active-panel sync -
editor.shell.editor_shell_composeBuild target:editor_ui_editor_shell_compose_validationExecutable:XCUIEditorShellComposeValidation.exeScope: root shell compose only; MenuBar / WorkspaceCompose / StatusBar three-band layout and workspace body embedding -
editor.shell.editor_shell_interactionBuild target:editor_ui_editor_shell_interaction_validationExecutable:XCUIEditorShellInteractionValidation.exeScope: root shell unified interaction only; menu bar root switching, submenu hover chain, outside/Esc dismiss, command hook, menu-modal workspace shielding, and post-dismiss workspace interaction restore -
editor.shell.dock_host_basicBuild target:editor_ui_dock_host_basic_validationExecutable:XCUIEditorDockHostBasicValidation.exeScope:UpdateUIEditorDockHostInteraction(...)basic contract only; splitter drag, tab activate/close, standalone panel activate/close, pointer capture/release request, workspace active-panel sync -
editor.shell.panel_content_host_basicBuild target:editor_ui_panel_content_host_basic_validationExecutable:XCUIEditorPanelContentHostBasicValidation.exeScope: external HostedContent body mount/switch/unmount only; DockHost 只画 frame chrome,真实 body 由 content host 接管 -
editor.shell.menu_bar_basicBuild target:editor_ui_menu_bar_basic_validationExecutable:XCUIEditorMenuBarBasicValidation.exeScope: menu bar open/close, hover, dismiss, menu command dispatch only -
editor.shell.context_menu_basicBuild target:editor_ui_context_menu_basic_validationExecutable:XCUIEditorContextMenuBasicValidation.exeScope: context menu root anchor, submenu hover, outside/Esc dismiss, command dispatch only -
editor.shell.panel_frame_basicBuild target:editor_ui_panel_frame_basic_validationExecutable:XCUIEditorPanelFrameBasicValidation.exeScope: panel frame header/body/footer layout, focus/active/hover chrome, pin/close hit target only -
editor.shell.scroll_view_basicBuild target:editor_ui_scroll_view_basic_validationExecutable:XCUIEditorScrollViewBasicValidation.exeScope: ScrollView viewport clip, wheel scrolling, thumb drag, focus, and hit-test only -
editor.shell.property_grid_basicBuild target:editor_ui_property_grid_basic_validationExecutable:XCUIEditorPropertyGridBasicValidation.exeScope: PropertyGrid 基础控件验证;只检查 section toggle、field selection、value edit、Enter/Esc、keyboard navigation,不涉及业务 Inspector -
editor.shell.bool_field_basicBuild target:editor_ui_bool_field_basic_validationExecutable:XCUIEditorBoolFieldBasicValidation.exeScope: BoolField 基础控件契约;只验证点击切换、Space/Enter 切换、hover/focus/value/result 联动 -
editor.shell.number_field_basicBuild target:editor_ui_number_field_basic_validationExecutable:XCUIEditorNumberFieldBasicValidation.exeScope: NumberField 基础控件契约;只验证步进按钮、直接字符编辑、Enter 提交、Esc 取消、hover/focus/result 联动 -
editor.shell.enum_field_basicBuild target:editor_ui_enum_field_basic_validationExecutable:XCUIEditorEnumFieldBasicValidation.exeScope: EnumField 基础控件契约;只验证前后切换按钮、Left/Right/Home/End 键盘切换、hover/focus/result 联动 -
editor.shell.status_bar_basicBuild target:editor_ui_status_bar_basic_validationExecutable:XCUIEditorStatusBarBasicValidation.exeScope: status bar slot layout, hover/active segment hit target, separator layout only -
editor.shell.tree_view_basicBuild target:editor_ui_tree_view_basic_validationExecutable:XCUIEditorTreeViewBasicValidation.exeScope: TreeView 基础控件验证;只检查行缩进、disclosure 展开/折叠、selection、hover/focus 和 hit-test,不涉及业务面板 -
editor.shell.list_view_basicBuild target:editor_ui_list_view_basic_validationExecutable:XCUIEditorListViewBasicValidation.exeScope: ListView 基础控件验证;只检查 row 排列、selection、hover/focus、Up/Down/Home/End 键盘导航和 hit-test,不涉及业务面板 -
editor.shell.tab_strip_basicBuild target:editor_ui_tab_strip_basic_validationExecutable:XCUIEditorTabStripBasicValidation.exeScope: tab header layout, selected/hover/focus, close hit target, close fallback, Left/Right/Home/End navigation only -
editor.shell.viewport_slot_basicBuild target:editor_ui_viewport_slot_basic_validationExecutable:XCUIEditorViewportSlotBasicValidation.exeScope: viewport top bar / surface / status bar layout, hover/focus/active/capture, texture vs fallback only -
editor.shell.viewport_shell_basicBuild target:editor_ui_viewport_shell_basic_validationExecutable:XCUIEditorViewportShellBasicValidation.exeScope:ResolveUIEditorViewportShellRequest(...)+UpdateUIEditorViewportShell(...)basic contract, TopBar / BottomBar request-size sync, input rect + hover/focus/capture state sync only -
editor.shell.workspace_viewport_composeBuild target:editor_ui_workspace_viewport_compose_validationExecutable:XCUIEditorWorkspaceViewportComposeValidation.exeScope:ResolveUIEditorWorkspaceComposeRequest(...)+UpdateUIEditorWorkspaceCompose(...)body presentation contract only; selected Scene tab body is hosted byViewportShell, switching back to Document restores DockHost placeholder -
editor.shell.workspace_interaction_basicBuild target:editor_ui_workspace_interaction_basic_validationExecutable:XCUIEditorWorkspaceInteractionBasicValidation.exeScope:UpdateUIEditorWorkspaceInteraction(...)unified contract only; DockHost splitter/tab interaction plus ViewportShell body focus/capture routing in the same workspace layer -
editor.state.panel_session_flowBuild target:editor_ui_panel_session_flow_validationExecutable:XCUIEditorPanelSessionFlowValidation.exeScope: command dispatch + workspace controller + open/close/show/hide/activate -
editor.state.panel_host_lifecycleBuild target:editor_ui_panel_host_lifecycle_validationExecutable:XCUIEditorPanelHostLifecycleValidation.exeScope: panel host attach/detach/show/hide/activate/focus lifecycle only; active/focus decoupling and hidden-tab attached state -
editor.state.layout_persistenceBuild target:editor_ui_layout_persistence_validationExecutable:XCUIEditorLayoutPersistenceValidation.exeScope: layout snapshot + serialize/deserialize + invalid payload reject -
editor.state.shortcut_dispatchBuild target:editor_ui_shortcut_dispatch_validationExecutable:XCUIEditorShortcutDispatchValidation.exeScope: shortcut match + scope + suppression + command dispatch -
editor.state.viewport_input_bridge_basicBuild target:editor_ui_viewport_input_bridge_basic_validationExecutable:XCUIEditorViewportInputBridgeBasicValidation.exeScope: viewport hover/focus/capture, local pointer coordinates, wheel/key/character bridge only
Run:
cmake --build build --config Debug --target editor_ui_integration_tests
Auto capture:
- Set
XCUI_AUTO_CAPTURE_ON_STARTUP=1before launching a validation executable to force a first-frame screenshot into that scenario'scaptures/directory. - Manual validation still uses
F12; startup auto capture is only for deterministic self-check / automation.
Selected controls:
-
shell/workspace_shell_compose/Drag splitters, switchDocument A/B/C, close tabs or side panels, pressReset, pressF12. -
shell/editor_shell_compose/Click切到 Scene / 切到 Document, toggleTopBar / BottomBar / Texture, inspectMenuBar Rect / Workspace Rect / StatusBar Rect / Selected Presentation / Request Size, pressReset, press截图orF12. -
shell/editor_shell_interaction/ClickFile / Window, hoverWorkspace Tools, click outside the menu or pressEsc, then clickDocumentor drag a splitter, inspectOpen Root / Popup Chain / Submenu Path / Selected Presentation / Active Panel / Host Capture / Result, pressReset,Capture, orF12. -
shell/dock_host_basic/Dragroot-split, clickDocument A, closeDocument B, clickDetails, closeConsole, inspectHover / Result / Active Panel / Visible Panels / Capture / split ratio, pressReset,Capture, orF12. -
shell/panel_content_host_basic/ClickActivate Doc A / Activate Doc B / Activate Console / Close Inspector / Open Inspector, inspectMounted Panels / Events和蓝色 external body,按Capture或F12。 -
shell/menu_bar_basic/ClickFile / Window / Layout, move the mouse across menu items, click outside the menu or pressEsc, pressF12. -
shell/context_menu_basic/Right click insideContext Target, hoverWorkspace Tools, click actions, click outside the menu or pressEsc, pressF12. -
shell/panel_frame_basic/Move the mouse over the preview panel, clickBody / Pin / Close, toggleActive / Focus / Closable / Footer, pressF12. -
shell/scroll_view_basic/把鼠标移到右侧日志区内滚轮滚动,拖拽 scrollbar thumb,检查Hover / Focused / Thumb Dragging / Offset / Has Scrollbar / Result,按重置、截图(F12)或直接按F12。 -
shell/bool_field_basic/先看顶部中文说明,再点击BoolField的 row 或 toggle;控件获得 focus 后按Space / Enter,检查Hover / Focused / Value / Result是否同步更新,按重置、截图(F12)或直接按F12。 -
shell/number_field_basic/先看顶部中文说明,再点击- / +检查步进;点击数值框后直接输入字符并按Enter提交,或按Esc取消,检查Hover / Focused / Editing / Value / Result,按重置、截图(F12)或直接按F12。 -
shell/enum_field_basic/先看顶部中文说明,再点击< / >切换选项;控件获得 focus 后按Left / Right / Home / End,检查Hover / Focused / Selected / Result,按重置、截图(F12)或直接按F12。 -
shell/status_bar_basic/Move the mouse across leading/trailing segments, click interactive segments, toggle focus/active, pressF12. -
shell/tree_view_basic/先看顶部中文说明“这个测试在验证什么功能”,再点击 disclosure 和树节点行,检查Hover / Focused / Selected / Expanded / Visible / Result,按重置、截图(F12)或直接按F12。 -
shell/list_view_basic/先看顶部中文说明“这个测试在验证什么功能”,再点击列表行,并在列表获得 focus 后按Up / Down / Home / End,检查Hover / Focused / Selected / Current / Result,按重置、截图(F12)或直接按F12。 -
shell/tab_strip_basic/ClickDocument A / B / C, clickXon closable tabs, click content to focus, pressLeft / Right / Home / End, pressReset, pressF12. -
shell/viewport_slot_basic/Hover toolbar / surface / status bar, click surface to focus, hold and release left mouse to inspect capture, toggleTopBar / StatusBar / Texture / Aspect, pressF12. -
shell/viewport_shell_basic/Hover / click / drag the viewport shell surface, toggleTopBar / BottomBar / Texture, inspect left-sideRequest Size / Input Rect / Hover Hit / Hover / Focus / Capture / Result, pressReset, press截图orF12. -
shell/workspace_viewport_compose/Click切到 Scene / 切到 Document, toggleTopBar / BottomBar / Texture, hover or click the center viewport only whenSceneis selected, inspectSelected Presentation / Request Size / Hover / Focus / Capture / Result, pressReset, press截图orF12. -
shell/workspace_interaction_basic/Click the centerViewportbody to inspect unified focus/capture routing, clickDocumentto verify fallback to DockHost placeholder, dragroot-splitto verify layout sync, inspectSelected Presentation / Active Panel / Host Capture / root-split ratio, pressReset,Capture, orF12. -
state/panel_session_flow/ClickHide Active / Show Doc A / Close Doc B / Open Doc B / Activate Details / Reset, pressF12. -
state/panel_host_lifecycle/ClickHide Active / Close Doc B / Open Doc B / Activate Details / Focus Active / Clear Focus / Reset, inspectEventsand the three host cards, pressCaptureorF12. -
state/layout_persistence/ClickHide Active -> Save Layout -> Close Doc B -> Load Layout, clickLoad Invalid, pressF12. -
state/shortcut_dispatch/PressCtrl+P / Ctrl+H / Ctrl+W / Ctrl+O / Ctrl+R, toggleText Input, pressF12. -
state/viewport_input_bridge_basic/Hover surface, click and drag outside, roll the wheel, pressA / W / F / Space, type characters, click outside to clear focus, pressF12.