feat(xcui): add editor layout persistence validation

This commit is contained in:
2026-04-06 16:59:15 +08:00
parent eef5de7ee9
commit 9015b461bb
17 changed files with 1849 additions and 121 deletions

View File

@@ -10,12 +10,15 @@ Current status:
splitters, tab host, panel chrome placeholders, and hot reload.
- The second scenario is `state/panel_session_flow/`, focused on editor command dispatch and panel session state only:
`command dispatch + workspace controller + open / close / show / hide / activate`.
- The third scenario is `state/layout_persistence/`, focused on editor layout save/load/reset only:
`layout snapshot + serialize / deserialize + invalid payload reject`.
Layout:
- `shared/`: editor validation scenario registry, Win32 host wrapper, shared theme
- `workspace_shell_compose/`: first manual editor shell compose scenario
- `state/panel_session_flow/`: custom host scenario for editor panel session state flow
- `state/layout_persistence/`: custom host scenario for editor layout persistence flow
Current scenario:
@@ -31,6 +34,13 @@ Additional scenario:
- Executable name: `XCUIEditorPanelSessionFlowValidation`
- Validation scope: editor command dispatch and panel session state only, no business panels
Additional scenario:
- Scenario id: `editor.state.layout_persistence`
- Build target: `editor_ui_layout_persistence_validation`
- Executable name: `XCUIEditorLayoutPersistenceValidation`
- Validation scope: layout save / load / reset / invalid payload reject only, no business panels
Run:
```bash
@@ -52,6 +62,13 @@ Panel session flow controls:
- Check `Last command` shows `Changed / NoOp / Rejected` consistently with the current state.
- Press `F12` to write screenshots into `state/panel_session_flow/captures/`.
Layout persistence controls:
- Click `Hide Active -> Save Layout -> Close Doc B -> Load Layout`.
- Check `Saved` summary captures the expected active/visible state, and `Load Layout` restores it.
- Click `Load Invalid` and confirm the result is `Rejected` while current state remains unchanged.
- Press `F12` to write screenshots into `state/layout_persistence/captures/`.
Build:
```bash