185 lines
10 KiB
Markdown
185 lines
10 KiB
Markdown
# 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/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/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.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.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:
|
|
|
|
```bash
|
|
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/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/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`.
|