refactor(editor): Refactor usePushConnection and introduce new queueing system (#14529)

This commit is contained in:
Alex Grozav
2025-04-30 15:36:43 +03:00
committed by GitHub
parent 442cd094ee
commit 833d8e3c18
49 changed files with 1525 additions and 1262 deletions

View File

@@ -1,5 +1,11 @@
import { stringify } from 'flatted';
import type { IDataObject, ITaskData, ITaskDataConnections } from 'n8n-workflow';
import type {
IDataObject,
IRunData,
IRunExecutionData,
ITaskData,
ITaskDataConnections,
} from 'n8n-workflow';
import { nanoid } from 'nanoid';
import { clickExecuteWorkflowButton } from '../composables/workflow';
@@ -53,6 +59,28 @@ export function runMockWorkflowExecution({
const workflowId = nanoid();
const executionId = Math.floor(Math.random() * 1_000_000).toString();
const resolvedRunData = runData.reduce<IRunData>((acc, nodeExecution) => {
const nodeName = Object.keys(nodeExecution)[0];
acc[nodeName] = [nodeExecution[nodeName]];
return acc;
}, {});
const executionData: IRunExecutionData = {
startData: {},
resultData: {
runData: resolvedRunData,
pinData: {},
lastNodeExecuted,
},
executionData: {
contextData: {},
nodeExecutionStack: [],
metadata: {},
waitingExecution: {},
waitingExecutionSource: {},
},
};
cy.intercept('POST', '/rest/workflows/**/run?**', {
statusCode: 201,
body: {
@@ -70,7 +98,15 @@ export function runMockWorkflowExecution({
cy.wait('@runWorkflow');
const resolvedRunData: Record<string, ITaskData> = {};
cy.push('executionStarted', {
workflowId,
executionId,
mode: 'manual',
startedAt: new Date(),
workflowName: '',
flattedRunData: '',
});
runData.forEach((nodeExecution) => {
const nodeName = Object.keys(nodeExecution)[0];
const nodeRunData = nodeExecution[nodeName];
@@ -85,28 +121,12 @@ export function runMockWorkflowExecution({
nodeName,
data: nodeRunData,
});
resolvedRunData[nodeName] = nodeExecution[nodeName];
});
cy.push('executionFinished', {
executionId,
workflowId,
status: 'success',
rawData: stringify({
startData: {},
resultData: {
runData,
pinData: {},
lastNodeExecuted,
},
executionData: {
contextData: {},
nodeExecutionStack: [],
metadata: {},
waitingExecution: {},
waitingExecutionSource: {},
},
}),
rawData: stringify(executionData),
});
}