Files
XCEngine/tests/UI/Editor/integration/README.md

11 KiB
Raw Blame History

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/ and state/.
  • menu, workspace, and viewport in scenario names describe contract families, not extra directory levels.
  • shared/: shared host wrapper, scenario registry, shared theme
  • shell/workspace_shell_compose/: split/tab/panel shell compose only
  • shell/editor_shell_compose/: editor root shell compose only
  • shell/editor_shell_interaction/: editor root shell interaction only
  • shell/dock_host_basic/: DockHost interaction contract only
  • shell/panel_content_host_basic/: external panel body mount/switch/unmount only
  • shell/menu_bar_basic/: menu bar open/close/hover/dispatch only
  • shell/context_menu_basic/: context menu root/submenu/dismiss/dispatch only
  • shell/panel_frame_basic/: panel frame layout/state/hit-test only
  • shell/status_bar_basic/: status bar slot/segment/hit-test only
  • shell/tab_strip_basic/: tab strip layout/state/hit-test/close/navigation only
  • shell/viewport_slot_basic/: viewport slot chrome/surface/status only
  • shell/viewport_shell_basic/: viewport shell request/state compose only
  • shell/workspace_viewport_compose/: workspace body external presentation compose only
  • shell/workspace_interaction_basic/: workspace unified interaction only
  • state/panel_session_flow/: panel session state flow only
  • state/panel_host_lifecycle/: panel host attach/detach/show/hide/activate/focus contract only
  • state/layout_persistence/: layout save/load/reset only
  • state/shortcut_dispatch/: shortcut match/suppression/dispatch only
  • state/viewport_input_bridge_basic/: viewport hover/focus/capture, local pointer coordinates, wheel/key/character bridge only

Scenarios:

  • editor.shell.workspace_shell_compose Build target: editor_ui_workspace_shell_compose_validation Executable: XCUIEditorWorkspaceShellComposeValidation.exe Scope: DockHost compose, splitter drag, tab host, panel frame placeholders, workspace active-panel sync

  • editor.shell.editor_shell_compose Build target: editor_ui_editor_shell_compose_validation Executable: XCUIEditorShellComposeValidation.exe Scope: root shell compose only; MenuBar / WorkspaceCompose / StatusBar three-band layout and workspace body embedding

  • editor.shell.editor_shell_interaction Build target: editor_ui_editor_shell_interaction_validation Executable: XCUIEditorShellInteractionValidation.exe Scope: 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_basic Build target: editor_ui_dock_host_basic_validation Executable: XCUIEditorDockHostBasicValidation.exe Scope: 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_basic Build target: editor_ui_panel_content_host_basic_validation Executable: XCUIEditorPanelContentHostBasicValidation.exe Scope: external HostedContent body mount/switch/unmount only; DockHost 只画 frame chrome真实 body 由 content host 接管

  • editor.shell.menu_bar_basic Build target: editor_ui_menu_bar_basic_validation Executable: XCUIEditorMenuBarBasicValidation.exe Scope: menu bar open/close, hover, dismiss, menu command dispatch only

  • editor.shell.context_menu_basic Build target: editor_ui_context_menu_basic_validation Executable: XCUIEditorContextMenuBasicValidation.exe Scope: context menu root anchor, submenu hover, outside/Esc dismiss, command dispatch only

  • editor.shell.panel_frame_basic Build target: editor_ui_panel_frame_basic_validation Executable: XCUIEditorPanelFrameBasicValidation.exe Scope: panel frame header/body/footer layout, focus/active/hover chrome, pin/close hit target only

  • editor.shell.status_bar_basic Build target: editor_ui_status_bar_basic_validation Executable: XCUIEditorStatusBarBasicValidation.exe Scope: status bar slot layout, hover/active segment hit target, separator layout only

  • editor.shell.tab_strip_basic Build target: editor_ui_tab_strip_basic_validation Executable: XCUIEditorTabStripBasicValidation.exe Scope: tab header layout, selected/hover/focus, close hit target, close fallback, Left/Right/Home/End navigation only

  • editor.shell.viewport_slot_basic Build target: editor_ui_viewport_slot_basic_validation Executable: XCUIEditorViewportSlotBasicValidation.exe Scope: viewport top bar / surface / status bar layout, hover/focus/active/capture, texture vs fallback only

  • editor.shell.viewport_shell_basic Build target: editor_ui_viewport_shell_basic_validation Executable: XCUIEditorViewportShellBasicValidation.exe Scope: ResolveUIEditorViewportShellRequest(...) + UpdateUIEditorViewportShell(...) basic contract, TopBar / BottomBar request-size sync, input rect + hover/focus/capture state sync only

  • editor.shell.workspace_viewport_compose Build target: editor_ui_workspace_viewport_compose_validation Executable: XCUIEditorWorkspaceViewportComposeValidation.exe Scope: ResolveUIEditorWorkspaceComposeRequest(...) + UpdateUIEditorWorkspaceCompose(...) body presentation contract only; selected Scene tab body is hosted by ViewportShell, switching back to Document restores DockHost placeholder

  • editor.shell.workspace_interaction_basic Build target: editor_ui_workspace_interaction_basic_validation Executable: XCUIEditorWorkspaceInteractionBasicValidation.exe Scope: UpdateUIEditorWorkspaceInteraction(...) unified contract only; DockHost splitter/tab interaction plus ViewportShell body focus/capture routing in the same workspace layer

  • editor.state.panel_session_flow Build target: editor_ui_panel_session_flow_validation Executable: XCUIEditorPanelSessionFlowValidation.exe Scope: command dispatch + workspace controller + open/close/show/hide/activate

  • editor.state.panel_host_lifecycle Build target: editor_ui_panel_host_lifecycle_validation Executable: XCUIEditorPanelHostLifecycleValidation.exe Scope: panel host attach/detach/show/hide/activate/focus lifecycle only; active/focus decoupling and hidden-tab attached state

  • editor.state.layout_persistence Build target: editor_ui_layout_persistence_validation Executable: XCUIEditorLayoutPersistenceValidation.exe Scope: layout snapshot + serialize/deserialize + invalid payload reject

  • editor.state.shortcut_dispatch Build target: editor_ui_shortcut_dispatch_validation Executable: XCUIEditorShortcutDispatchValidation.exe Scope: shortcut match + scope + suppression + command dispatch

  • editor.state.viewport_input_bridge_basic Build target: editor_ui_viewport_input_bridge_basic_validation Executable: XCUIEditorViewportInputBridgeBasicValidation.exe Scope: 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=1 before launching a validation executable to force a first-frame screenshot into that scenario's captures/ directory.
  • Manual validation still uses F12; startup auto capture is only for deterministic self-check / automation.

Selected controls:

  • shell/workspace_shell_compose/ Drag splitters, switch Document A/B/C, close tabs or side panels, press Reset, press F12.

  • shell/editor_shell_compose/ Click 切到 Scene / 切到 Document, toggle TopBar / BottomBar / Texture, inspect MenuBar Rect / Workspace Rect / StatusBar Rect / Selected Presentation / Request Size, press Reset, press 截图 or F12.

  • shell/editor_shell_interaction/ Click File / Window, hover Workspace Tools, click outside the menu or press Esc, then click Document or drag a splitter, inspect Open Root / Popup Chain / Submenu Path / Selected Presentation / Active Panel / Host Capture / Result, press Reset, Capture, or F12.

  • shell/dock_host_basic/ Drag root-split, click Document A, close Document B, click Details, close Console, inspect Hover / Result / Active Panel / Visible Panels / Capture / split ratio, press Reset, Capture, or F12.

  • shell/panel_content_host_basic/ Click Activate Doc A / Activate Doc B / Activate Console / Close Inspector / Open Inspector, inspect Mounted Panels / Events 和蓝色 external bodyCaptureF12

  • shell/menu_bar_basic/ Click File / Window / Layout, move the mouse across menu items, click outside the menu or press Esc, press F12.

  • shell/context_menu_basic/ Right click inside Context Target, hover Workspace Tools, click actions, click outside the menu or press Esc, press F12.

  • shell/panel_frame_basic/ Move the mouse over the preview panel, click Body / Pin / Close, toggle Active / Focus / Closable / Footer, press F12.

  • shell/status_bar_basic/ Move the mouse across leading/trailing segments, click interactive segments, toggle focus/active, press F12.

  • shell/tab_strip_basic/ Click Document A / B / C, click X on closable tabs, click content to focus, press Left / Right / Home / End, press Reset, press F12.

  • shell/viewport_slot_basic/ Hover toolbar / surface / status bar, click surface to focus, hold and release left mouse to inspect capture, toggle TopBar / StatusBar / Texture / Aspect, press F12.

  • shell/viewport_shell_basic/ Hover / click / drag the viewport shell surface, toggle TopBar / BottomBar / Texture, inspect left-side Request Size / Input Rect / Hover Hit / Hover / Focus / Capture / Result, press Reset, press 截图 or F12.

  • shell/workspace_viewport_compose/ Click 切到 Scene / 切到 Document, toggle TopBar / BottomBar / Texture, hover or click the center viewport only when Scene is selected, inspect Selected Presentation / Request Size / Hover / Focus / Capture / Result, press Reset, press 截图 or F12.

  • shell/workspace_interaction_basic/ Click the center Viewport body to inspect unified focus/capture routing, click Document to verify fallback to DockHost placeholder, drag root-split to verify layout sync, inspect Selected Presentation / Active Panel / Host Capture / root-split ratio, press Reset, Capture, or F12.

  • state/panel_session_flow/ Click Hide Active / Show Doc A / Close Doc B / Open Doc B / Activate Details / Reset, press F12.

  • state/panel_host_lifecycle/ Click Hide Active / Close Doc B / Open Doc B / Activate Details / Focus Active / Clear Focus / Reset, inspect Events and the three host cards, press Capture or F12.

  • state/layout_persistence/ Click Hide Active -> Save Layout -> Close Doc B -> Load Layout, click Load Invalid, press F12.

  • state/shortcut_dispatch/ Press Ctrl+P / Ctrl+H / Ctrl+W / Ctrl+O / Ctrl+R, toggle Text Input, press F12.

  • state/viewport_input_bridge_basic/ Hover surface, click and drag outside, roll the wheel, press A / W / F / Space, type characters, click outside to clear focus, press F12.