fix native and web screenshot rendering
This commit is contained in:
91
frontend/tests/workflowSerialization.test.mjs
Normal file
91
frontend/tests/workflowSerialization.test.mjs
Normal file
@@ -0,0 +1,91 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import { serializeWorkflowState } from '../src/workflowSerialization.js';
|
||||
|
||||
test('serializeWorkflowState keeps only stable workflow fields needed for reload', () => {
|
||||
const nodes = [
|
||||
{
|
||||
id: '1',
|
||||
type: 'custom',
|
||||
position: { x: 100, y: 200 },
|
||||
dragHandle: '.node-header',
|
||||
selected: true,
|
||||
width: 320,
|
||||
data: {
|
||||
label: 'Demo Label',
|
||||
className: 'DemoNode',
|
||||
widgetValues: { threshold: 0.42, mode: 'fast' },
|
||||
definition: { input: { required: { threshold: ['FLOAT', { default: 0.5 }] } } },
|
||||
previewImage: 'data:image/png;base64,abc',
|
||||
tableRows: [{ a: 1 }],
|
||||
meshData: { vertices: [1, 2, 3] },
|
||||
overlay: { active: true },
|
||||
},
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
position: { x: 10, y: 20 },
|
||||
data: {
|
||||
className: 'NoLabelNode',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const edges = [
|
||||
{
|
||||
id: 'e1-2',
|
||||
source: '1',
|
||||
sourceHandle: 'output::0::IMAGE',
|
||||
target: '2',
|
||||
targetHandle: 'input::image::IMAGE',
|
||||
style: { stroke: '#fff', strokeWidth: 2 },
|
||||
selected: true,
|
||||
animated: true,
|
||||
},
|
||||
];
|
||||
|
||||
const serialized = serializeWorkflowState(nodes, edges);
|
||||
|
||||
assert.deepEqual(serialized, {
|
||||
version: 1,
|
||||
nodes: [
|
||||
{
|
||||
id: '1',
|
||||
type: 'custom',
|
||||
position: { x: 100, y: 200 },
|
||||
dragHandle: '.node-header',
|
||||
data: {
|
||||
label: 'Demo Label',
|
||||
className: 'DemoNode',
|
||||
widgetValues: { threshold: 0.42, mode: 'fast' },
|
||||
},
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
type: 'custom',
|
||||
position: { x: 10, y: 20 },
|
||||
dragHandle: '.drag-handle',
|
||||
data: {
|
||||
label: 'NoLabelNode',
|
||||
className: 'NoLabelNode',
|
||||
widgetValues: {},
|
||||
},
|
||||
},
|
||||
],
|
||||
edges: [
|
||||
{
|
||||
id: 'e1-2',
|
||||
source: '1',
|
||||
sourceHandle: 'output::0::IMAGE',
|
||||
target: '2',
|
||||
targetHandle: 'input::image::IMAGE',
|
||||
style: { stroke: '#fff', strokeWidth: 2 },
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
assert.equal('definition' in serialized.nodes[0].data, false);
|
||||
assert.equal('previewImage' in serialized.nodes[0].data, false);
|
||||
assert.equal('selected' in serialized.edges[0], false);
|
||||
});
|
||||
Reference in New Issue
Block a user