Add full Blender desktop parity validation workflow
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-08 05:18:12 +08:00
parent 39b188c574
commit a69e41457a
8 changed files with 564 additions and 23 deletions

View File

@@ -13,7 +13,29 @@ const transpiled = ts.transpileModule(fs.readFileSync(sourcePath, "utf8"), {
});
assert.deepEqual(transpiled.diagnostics, []);
const moduleUrl = "data:text/javascript;base64," + Buffer.from(transpiled.outputText).toString("base64");
const { createDefaultWebWorkspaceState, reduceUICommand } = await import(moduleUrl);
const { BLENDER_WORKSPACE_IDS, createDefaultWebWorkspaceState, reduceUICommand } = await import(moduleUrl);
test("Blender 5.2 workspaces retain their source editor area sets", () => {
const state = createDefaultWebWorkspaceState();
const expected = {
Layout: ["3D Viewport", "Outliner", "Properties", "Timeline"],
Modeling: ["3D Viewport", "Outliner", "Properties"],
Sculpting: ["3D Viewport", "Outliner", "Properties"],
"UV Editing": ["3D Viewport", "Image Editor", "Outliner", "Properties"],
"Texture Paint": ["3D Viewport", "Image Editor", "Outliner", "Properties"],
Shading: ["3D Viewport", "File Browser", "Image Editor", "Outliner", "Properties", "Shader Editor"],
Animation: ["3D Viewport", "3D Viewport", "Dope Sheet", "Outliner", "Properties"],
Rendering: ["Properties", "Render Result", "Timeline"],
Compositing: ["Compositor", "Image Editor", "Properties", "Timeline"],
"Geometry Nodes": ["3D Viewport", "Geometry Nodes", "Outliner", "Properties", "Spreadsheet", "Timeline"],
Scripting: ["3D Viewport", "Info", "Outliner", "Outliner", "Properties", "Python Console", "Text Editor"],
};
assert.deepEqual(Object.keys(state.workspaces), BLENDER_WORKSPACE_IDS);
for (const id of BLENDER_WORKSPACE_IDS) {
assert.deepEqual(state.workspaces[id].areas.map((area) => area.editor).sort(), expected[id].toSorted(), id);
assert.ok(state.workspaces[id].areas.every((area) => area.rect.width > 0 && area.rect.height > 0), id);
}
});
test("M7-13 menu and modal overlays are mutually exclusive and Escape-closeable", () => {
let state = createDefaultWebWorkspaceState();